提问回顾

提问回顾


提问回顾

个人作业week 1
  1. 书中提到瀑布式的开发方式,在实现软件开发过程中,各个阶段都可能会有遗留问题,并可能使得下一阶段难以进行,因此需要回头解决问题。在实际的开发过程中,分配给每个阶段的时间都是有限的,可能为了做出某个效果而给后续的开发留下问题,这样迭代下去会产生很多麻烦,会有很多反复,怎样较好的避免这种情况呢?
  2.     不知道该怎么解决,感觉还是要把上个阶段的问题解决的更加彻底一点才好,但是向下进行的过程中又难免遇到新的问题。
  3. 第一章中提到软件的不常用功能并类比了飞机的安全功能,这些功能常常用来在软件出现异常时维持程序的正常状态,因此他们的存在是必要的。但是我们在写程序是通常要在调试时,等到异常出现了才意识到应该在哪里做这样的功能,那么在软件设计之初有没有什么方法考虑到这些功能呢?
  4.     软件设计的时候应该考虑全面正常的功能,偏离正常分支的情况就需要做异常处理
  5. 第十三章讲到了测试的重要性,测试是软件的最后一道防线。在我的理解中,开发人员自身也应当做一些测试以保证程序基本的正确性,测试人员和开发人员相比所做的测试应该更加全面和细致。针对一个功能进行的单元测试应该在什么时候做?应该在完成代码前就把单元测试设计好还是应该完成代码后针对代码做单元测试?测试的标准应该是设计中的功能还是程序实际具有的功能?
  6.     单元测试应该在功能完成之前就已经完成了设计,即事先定义好接口和规范的输入输出,而不应该根据写完的代码写单元测试。应该测试的预期的功能和数据处理,如果预期功能发生变化,单元测试也应该发生变化,代码是相应该与设计一致。
  7. 书中提到结对编程和极限编程的思想是“将卓有成效的开发方法用到极致”,它似乎是一种非常值得推崇的方法,但是按照国内的情况来看似乎不那么受欢迎,按照我们到目前为止的认知,编程都是一件相当个人的事情。结对编程这种方式在实际的项目中是否可行呢?与个人编程相比,这样的编程方式又有什么样的弊端呢?
  8.     实际项目中使用结对编程的情况不是很普遍,因为它会占用两个人去做一个人的事情从而一定程度上降低工作效率。但是使用结对编程通常是为了尽早发现错误,并且方便双方进行交流和沟通,避免双方工作的冲突。
  9. 第九章中讲“PM做项目中出开发和测试以外的所有事情”,“PM的专业是理解和表达”,具备开发任务中所需的技术技能对PM来说是否是必要的呢?在项目的推进过程中,开发或测试人员难免会因为时间冲突、技术困难等原因无法按时完成任务,这时PM应该调整任务安排还是应该参与到开发或测试工作中,帮助完成任务?
  10.     应该综合考虑各方面因素,如果在开发初期,出现时间冲突或技术困难,可以对任务进行适当的调整,或利用缓冲区完成。若时间紧迫,或PM完全可以胜任该任务,PM应该参与到开发和测试的工作中。
  11. 第十一章讲到了设计与实现,从Spec到实现是将设计落实到功能上的过程。所谓的设计究竟应该包括哪些内容呢?进行设计时有时候划分了函数,确定了他们之间的调用关系,但是由于考虑不够细致后期仍然会发生较大的变动。在一些算法上也会遇到一些困难,与预估时间相比有较大的偏差。设计阶段应该细化到什么程度,是否应该细致的考虑所有细节?
  12.     设计无论做的多细致,实现起来还是会有偏差,因此设计主要针对整体的结构、功能,不必涉及太多细节,另外在实现过程中也需要不断地修改和更新文档,使开发文档与实际的开发工作同步
  13. 第九章中说在团队中项目经理、开发人员和测试人员是一种平等的关系。但是人们往往会不自觉地认为能给自己安排任务的人都应该与自己存在上下级关系,至少要有比自己更为突出的能力,那么在这种平等的关系之下,如果项目经理并没有过人的技术,在进行项目的规划和安排时怎样才能合理的分配工作并且有说服力呢?
  14.     充分的准备工作和协商是十分必要的。大家是处于一种平等的关系中共同完成一项任务,用着共同的目标,PM的主要依靠的并不是技术,而是对项目合理的规划和进度的掌控,PM应该用足够的时间对项目进行规划,结合每个人的情况进行任务的划分,
  15. 第八章中讲到在软件开发的过程中会不可避免的遇到“更改需求”这样的事情,无论是自己理解的偏差还是客户要求的改变,可能都需要在已完成的框架和功能上进行修改,往往会浪费之前付出的很多时间和精力,那么除了提高获取需求的能力和分析需求的准确性,从软件设计开发的角度出发,有没有什么减少损失的方法呢?
  16.     首先开发人员要做好不断更新需求的准备,另外,要设计好软件的结构,尽量做到高内聚低耦合的模块化,尽可能使修改集中在较小的范围内,避免牵一发而动全身。另外要在一开始就尽量选好软件的架构,而不是后期在进行重构。
  17. 在软件开发过程中,每个人负责的不同功能模块可能会有交互,而没有清晰的界限,开发人员需要很好的沟通才能使项目的开发顺利进行,交互的部分应该怎样分配时较好避免冲突呢?
  18.     应该在开发之前进行充分的设计,定义好交互部分的接口,保证两个部分能够对接。另外,需要写好文档,双方多进行沟通,但要避免交叉修改对方代码

知识点

  • 需求阶段
  •     学会是使用NABCD模型进行需求分析。并且进行需求分析时要做充足的调研,一定要从实际的用户那里获取信息,而不是自己凭空想象
  • 设计阶段
  •     需要确定项目大致的框架,进行功能、技术的设计,大致确定实现的流程
  • 实现阶段
  •     实现最小化可行产品,敏捷开发
  • 测试阶段
  •     设计阶段就应该对测试用一定的设计,实现的过程中就应该一边完成测试
  • 发布阶段
  •     应该事先准备好账号和需要的材料,保证软件的稳定性,并且寻找合适的渠道进行推广
  • 维护阶段
  •     应该多个渠道获取用户的反馈意见,根据反馈进行持续性的改进。
posted @ 2018-01-14 16:05  Eris_Charon  阅读(180)  评论(1编辑  收藏  举报