一、请回望第一次作业,你对于高级软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
这次实践尝试了很多新的工具和框架等等,但是因为毕竟是第一次使用,而且时间也有限,所以在实践过程中,有挺多地方没应用好,但同时也通过课程实践过程中的各种坑,才发现如何才能更好地使用,相信在之后再次使用的时候,能够更好地使用。但同时也是因为前期的需要学习的内容过多,而且同组的人基础也比较差,前期的安排没跟上,导致后期不断赶工,也影响整个过程中的管理和安排以及项目的进度,这是这次实践的一大遗憾吧,应该说是我实践中的重心没把握好。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
- 统计一下,你在这门高级软件工程实践中,完成了多少行的代码;
整个项目的代码量差不多新增4.3W,删除2W,净量大概2.3W。由于前期框架搭建基本由我一个人完成,然后过程中由于其他成员对这块的开发不熟,大部分代码都是由我编写,大概应该占了60%,差不多1.4W的代码量吧。 - 高级软工实践的各次作业分别花了多少时间?(做一个列表)
||||
|:--|:--|:--|:--|
| 作业 | 时间 | 作业 | 时间 |
| 高级软件工程第一次作业 | 2h | 高级软件工程团队第一次作业| 1h |
| 高级软件工程第二次作业 | 8.5h | 项目选题报告(团队)| 4h |
| 高级软件工程结对第一次作业 | 9h | 团队项目-需求分析| 4h |
| 高级软件工程结对第二次作业 | 24h | Alpha冲刺| 120h |
| 设计模式第一次作业 | 5h| 事后诸葛亮 | 2h |
| 设计模式第二次作业 | 5h| Beta冲刺 | 30h |
| 设计模式第三次作业 | 4h| 高级软件工程实践总结 | 2h |
- 哪一次作业让你印象最深刻?为什么?
Alpha冲刺,因为这阶段是最艰难的时候,由于学习占用了大量时间,导致花了大量时间加班赶工,但是最后交付出的成果还是不够好,这是前期没安排好的一个惨痛的教训。 - 累计花了多少个小时在高级软工实践上?平均每周花多少个小时?
两次冲刺累计150个小时,不过在Alpha冲刺和Beta冲刺中间还有两周,也是花了大量时间,加起来差不多有250个小时,一共5周,平均每周50个小时。 - 学习和使用的新软件;
Axure RP Pro - 学习和使用的新工具;
gradle,webpack - 学习和掌握的新语言、新平台;
nodejs, vue,element-ui - 学习和掌握的新方法;
后台纯java配置、NABCD 法需求分析、团队协作方式等。 - 其他方面的提升。
对项目管理有了初步认识了解以及简单实践。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
团队实践中,要有一个统一的团队规则,特别是每个人有自己的编码习惯,这时候代码规范等就需要统一,这样才能更好地进行成员间的交流。而且之间要是独立的可以并发地进行开发,前期要切分好模块,耦合性降低,以便能同时开发,不要出现在开发一个模块的时候一直在等另一个人的,延误开发进度。或者实在不行的情况下自己模拟数据进行开发。同时需要互不影响,特定模块由该模块的负责人进行修改,而不是我发现你这里错了,我就帮你改了,这样一是可能会导致代码冲突,二是可能会导致bug被反复修改,最后改得面目全非,而且做了很多无效修改。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?
做好花费大量时间的准备,还有组队和选题要提前准备和安排,因为读研的有一些是跨专业过来的,对编程不了解,另外不同人可能之前做过的领域不一样,比如做安卓或者做web,用的工具和语言等等也可能不一样,提前商量好然后统一之后进行学习,可以在后面的团队作业中专注于项目的开发和管理,而不是慌忙地进行学习。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
刚开始就是萌芽阶段,磨合阶段还好,因为组内成员中我只有我之前是主要做web开发的,所以没有大的冲突,只有在数据库设计的时候有过一些冲突,不过也是比较友好地解决了,然后就是比较顺利地进入规范阶段,不过由于学习的东西比较多,他们在编写的时候还是常常会找我解决,不能完完全全独立工作,还没到创造阶段。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
这个没有做到,因为毕竟是期末了,当初找测试人员的时候就处处碰壁,期末也没有什么课程或者比赛之类的协作,基本找的人不是在忙论文、忙复习就是在忙实习,beta之后没有足够的活跃用户量。
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件。
这个在整个软件工程的作业中有体现,除了Alpha阶段由于学习新技术和工具的原因完成度不够,其他阶段都能按要求达到。
3)并且通过数据展现软件是可以维护和继续发展的。
通过github管理,可以维护。
六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:
参考论文文献:
[1] Stamelos I, Angelis L, Oikonomou A, et al. Code quality analysis in open source software development[J]. Information Systems Journal, 2002, 12(1): 43-60.
[2] Boehm B W, Brown J R, Lipow M. Quantitative evaluation of software quality[C]//Proceedings of the 2nd international conference on Software engineering. IEEE Computer Society Press, 1976: 592-605
[3] Samoladas I, Stamelos I, Angelis L, et al. Open source software development should strive for even greater code maintainability[J]. Communications of the ACM, 2004, 47(10): 83-87