软件工程三 课程个人总结
(1)谈一下你对复杂软件问题工程实践的认识和理解;
(2)说说自己课程学习的体会和感受,也可以提出建议。
软件工程三这门课让我认识到了做一个真正的项目应该是什么样子的,完成一个复杂的软件系统的过程应该是什么样子的。
从前的自己完成这样一个课程project更多的是拿到题目就开始想架构,想好了架构就开始埋头码,出了问题就debug。但这样的做法显然是不适用于复杂的大型软件工程的。
更细的体悟:
- 团队管理的重要性:一方面,一个氛围良好、合作愉快的团队对于开发效率的重要性不言而喻。另一方面,团队的进度管控也决定着整个项目的进度。软件工程三这门课实际上的考察重点不是算法也不是逻辑,而是对于整个项目的把控和团队合作。
对于敏捷开发而言,每周的迭代会议以及集中开发也能够很好的提升开发效率。
-
需求分析的重要性:一个好的需求定位可以带来清晰的目标,十足的干劲,以及之后的用户肯定。最开始写愿景文档和用户故事的时候,并没有意识到需求分析的重要性。但事实证明,用户故事和需求分析覆盖了我们最终交付产品80%的需求,而其他需求也是从用户故事中衍生出来的。
-
持续集成的重要性:ci可以让团队在持续开发的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。虽然这样有些同学可能需要改变已有的开发习惯和过程,但对于整个项目的健壮性来说,ci的作用不言而喻。
-
团队代码托管的重要性:可能有一些同学之前没怎么用过git,大部分同学之前的团队项目也都是基于微信开发的。而在这次项目中,我发现团队项目git的重要性。不仅可以更好地管理团队代码,提升协作效率,还能更大地规避项目风险。(就是希望gitlab不要时不时地崩了
-
测试的重要性:我之前一直觉得自动化测试是个很鸡肋的东西,设计好测试用例自己去手动测试不行吗?结果在自己编写的测试发现了一些项目隐藏的问题之后,再也没有这种想法了。另外,在一些逻辑复杂的功能实现上,手动测试其实耗费的心力或许比自动测试Mock实现要大多了。
课程建议:其实除了部分同学以外,大部分同学都没有这种大型软件开发的经验。因此其实可以联系一些手头有项目的互联网公司工程师作为导师,负责大概1~2个团队,在团队开发的过程中持续跟进和指导,这样可能可以更加适应业界的开发节奏,学到更多的东西。