软件工程-提问回顾和个人总结
UNFINISHED
提问博文链接
问题解答
1.
年轻学生都志向远大,上了一些课,就很想解决高层次的问题,一些学生非常想做高层次的“科研”,觉得“工程”是基础,没意思。而且他们认为“我已经知道怎么做了”。
无论工程还是科研,建立兴趣的根基在于深入了解之后,找到自己的兴趣点所在,没有孰优孰劣的根本区别,无非是目标和侧重点不同。
2.
代码规范可以分成两个部分:
1. 代码风格规范,主要是文字上的规定,看似表面文章,实际上非常重要。
愈发感觉代码风格的重要性,个人的代码洁癖程度也在不断上升。
3.
在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档,等等。
对结对编程的看法发生了巨大变化,同 “学期总结-结对编程”心得。
4.
- 用户体验的创新
软件的最终目的是给用户使用,从这个意义上看,用户才是上帝,不注重用户产品体验的软件不会长远。
5.
敏捷开发
个人体会:1在团队编程中,项目推进的程度和开例会的频率成正比,可能是因为代码热情高的小组,项目进度更快,对开会的积极性也更高。
"做中学"实践
需求
- 时间是比较有限的,针对提出的诸多需求,区分好优先级,把主要精力放在优先级比较高的需求。
设计
- 使用开源的类库往往比自己造轮子更有效率。
实现
- 重复的代码可以抽象出公有的类库。
- 保持统一的代码风格。
测试
- 除了正常功能的测试,注重边界条件。
- 代码性能的测试虽然在小规模用户的软件不重要,但是实际很matter。
发布
- 校内发布的话,多注重宣传-QQ群,微信群,朋友圈等。
维护
- 针对软件的终端用户的反馈,修复bug。
- 有条件的情况下,可以进行内测。
学期心得
结对编程
- 软件开发中有很多编程之外的事情,比如(1)团队成员之间的沟通交流问题,又比如(2)对于同一个项目,代码库的维护以及code review,两个人负责一个项目,实际情况就是团队编程人数最少的情况。
- 结对编程的特点 [面对面以及同一台PC] 的意义在于解决问题(1)和(2),本质在于编程效率的提高。
团队编程
- 组员之间的沟通交流非常重要,不然团队编程的效率往往不如结对编程,甚至单干。
- 编程只是软件开发中的一环,前期的需求设计以及后期的发布维护也是需要花很多时间注意的。从这个角度来看,也证实了能写出健壮[ 运行效率 & 各种情况处理] 代码的能力是根基。