提问回顾与个人总结
一、提问博客链接
https://www.cnblogs.com/zhanghao16061096/p/10477695.html
二、对问题的解答
(1)如何衡量一个bug是需要解决的问题,还是可以允许的存在?应该怎么确定这个标准?对于不同的项目,怎样才能称为足够好?
答:我认为对于任何一个软件来说,都应该尽力解决可能遇到的bug。在我这学期的开发过程中,确实遇到了很多bug,不过都尽力解决了。我认为一丝不苟的开发态度不管在什么时候都是很重要的。
(2)怎样的单元测试能够最大地确保程序的正确性?单元测试可能覆盖所有会出现的情况吗?
答:我认为应该符合资格预期,即流程符合预期、执行效果符合预期、异常保护符合预期、质量属性符合预期。不能盲目追求覆盖率。
(3)如何避免在软件开发过程中的思维误区?怎样少走弯路?
答:我认为在开始一个开发过程前、在实现一个特定功能前,应该留出足够的思考、分析时间。埋头开干大几率会撞墙,这是本学期开发中的真实经历。
(4)结对编程对于水平不同的搭档该如何合理地分配工作?我属于基本功不是很好的类型,目前也在积极地学习,但是还是和其他同学有差距。我希望能从结对编程中多写代码,多学习技巧和知识,而希望搭档可以更多地指导指导我。虽然说地位平等,但我更多的抱着学习的态度。
答:对我自己来说,不会的话就要多多学习,尽量多做一些,多积累经验。
(5)创新需要到达什么样的高度?怎样才能对于可创新的领域保持敏感?是不是没有固定的方法?
答:我认为阅读是一件很重要的事情。不管是纸质书籍或者电子文献,多看,多学,才是提升自己的好办法。同时以自己感兴趣的领域为目标,以免迷失方向。
三、仍然存在的疑惑以及新产生的问题
我认为结对编程和后面的团队开发有较大的断层,二者仿佛没有什么衔接,相互之间也不会产生影响。
四、学到的知识点
(1)需求
有了需求才有了整个软件工程的项目,才会有开发过程。可以说需求是整个项目的根基。读懂需求,了解透彻需求才能向下进行。万一误解了需求,没有按照需求开发,就好像人家要烟囱你给修口井一样,费力不讨好。所以需求是重中之重。
(2)设计
在读懂了需求之后,可以开始设计,即整个项目干什么?怎么干?哪一个步骤什么时候干?等等提出诸如此类的各个问题,再挨个解决的过程。设计就像完成设计图与工期规划的过程,唯有完成这些步骤,才能开始垒砖头,开始整栋摩天大楼的建设。
(3)实现
实现过程,即按照已完成的设计图一块一块的垒砖头,每个人各司其职,什么时候该干什么,一步一步地按照工期来干。但是实现这一步也不是完全不变的过程。将需求转化为设计的过程难免遇到各种各样的错误,实现过程也是一个纠错改错的过程,对前面的设计形成反馈。
(4)测试
从前我觉得测试过程是可有可无的,可经过了这一学期的开发实践,我才发现曾经大错特错。因为软件存在的问题有时不测试真的是看不出来的,不去测试就一副岁月静好的模样,有可能一测试直接就暴露出各种毛病。唯有通过测试,纠正这些问题才能保证质量。
(5)发布
开发软件的一个重要动力就是有人使用。发布是一个将软件呈现给用户的过程,这个过程让开发人员体会到自己的软件有了用武之地,增强了成就感。发布可以通过多个渠道的宣传广而告之,让更多的人了解到我们的软件。
(6)维护
关于维护,也是一个很有必要的过程。软件到发布为止,看似已经结束了全过程,实际上还远远没有结束。因为在用户使用过程中可能还会发现各种各样其他的问题。对软件的维护可以让软件存活时间更长、保存用户数量,同时为后续软件的升级、改进、续写提供了便利。
五、理解与心得
团队编程第一次让我体验到了齐心协力、共同奋斗完成一部作品的感觉。其中有心酸、有痛苦、有快乐、有收获。团队编程不是轻松的,每个人需要各司其职,完成自己该干的工作,方能达到预期的效果。这次合作开发也让我积累的不少的经验,为日后的学习与工作打下了一定的基础。