一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
在软工实践之前,我是没有参加团队项目的经验以及团队合作的经历,这次软工实践补足了我这方面的经验,学会如何合理分工还有如何处理前端与后端的对接,总而言之,这次软工实践让我学会了很多新知识,尝试了很多新的东西。当然,还是暴露出我自己很多的不足之处,比如做软工之前我就重来没有想过做一个项目不仅要写大量的代码,而且还要写大量的文字材料,而这方面恰恰是我薄弱的地方,不过经过了这么一学期的锻炼,还算有所长进吧。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
差不多3000行。
第一次作业-准备 4h
第二次作业 - 个人项目 15h
第三次作业 - 原型设计 23h
第四次作业 - 团队展示 2h
第五次作业 - 结对作业2 25h
第六次作业 - 团队选题报告 2h
第七次作业 - 需求分析报告 6h
第八次作业 - 现场UML设计 6h
项目Alpha冲刺(团队) 32h
团队现场编程实战(抽奖系统) 7h
第十一次作业 - Alpha 事后诸葛亮(团队) 3h
福大软工 · 第十次作业 - 项目测评(团队) 3h
项目Beta 冲刺 (团队)20h
福大软工 · 第十二次作业 - Beta答辩总结 2h
最终作业 - 软件工程实践总结(个人) 3h
总计 153h
3、哪一次作业让你印象最深刻?为什么?
最深刻的应该是团队现场编程(抽奖系统)那次,因为那次我承担了比较多的责任,现场又出了一些bug,导致时间很赶,但还是在下课前完成了我那部分的算法,就是后来由其他人整合在一起时没有整合好,这点令人感到遗憾。不过现在想想还是很有趣的。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
累计花了153个小时左右,可能还有部分零碎时间没有统计上。平均差不多一周8到9小时。
希望能比较有趣一点,希望能学到多一点有用的知识,当然我的Z时间也不是很多,只能说尽量挤时间吧。
当时没写出具体时间,不过现实花的时间远远比当时我想的上界还要多得多,只能说我还是太年轻了。
5、学习和使用的新软件:
Process on,Leangoo, PyCharm, eclipse, Axure RP,Android Studio
6、学习和使用的新工具
Visual Studio 性能分析工具,代码覆盖率工具,单元测试工具
Eclipse 性能分析工具,代码覆盖率工具,单元测试工具
7、学习和掌握的新语言、新平台;
在大一的时候有自学过一段时间的Java,经过这次的软工时间,算是能比较熟练的应用Java语言。
新平台:Android Studio
8、学习和掌握的新方法;
学会如何经行前后端分工,学会了如何制作思维导图,UML图等。
9、其他方面的提升。
团队写作能力提升,项目经验增加,写文字材料的能力提升。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
个人方面:
其实我对我自己个人作业要求还算是比较满意的,就是重心可能太放在功能的实现上了,然后对于博客要求的其他东西做的有点少,导致博客写得不好,例如那些单元测试啊,性能分析然后改进啊,这部分我处理得不好。比如说性能分析,在写功能时我就以及考虑好可能会出现性能低效的地方,并且避开了,然后在性能分析方面就不知道改写什么好,也可以说没有放太多心思在其他同样重要的方面上,经验教训就是只会写代码,或者说只专注于功能实现而不考虑其它是不好的,其他方面,比如说测试、文档等等都是非常重要的,也是不可或缺的。
团队项目:
团队项目比较难受的地方是我做了不擅长的方面-前端,其实我最想做的是后端,可当时后端已经被安排了,我也就服从了组织的命令,也算学习到了新的知识,就是该开始学习前端的那段时间有点痛苦,其实关于这方面,感觉还是要先和团队沟通好,自己去做自己喜欢的可能会更好一些。还有比较难受的部分应该就是前端与后端对接的那个时候了,经常会出现部分功能双方都觉得应该是对方做的,然后就起了争执,感觉前端与后端在做项目之前应该就先考虑到对接部分,这在后面会节约非常多的时间。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
如果下定决心要选软工实践的话,一定要坚持下去,最后收获会比你们想象的多。还有,尽早找到一个好组织,这很重要。
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?假设依旧是一个90+人数的大班
我觉得这样挺有趣的,但如果是处于自愿的话,如果双方都接受我觉得是可以的。如果是什么抽签换,我觉得不好,没有尊重到个人意愿,可能会产生逆反心里。
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
可能5到6个人比较合适,因为人多了混子也就多了起来,有些选到好的组的就躺的很舒服,什么都没做就比那些努力做但成效不好的人分高。
4)个人/结对/团队作业应该控制在怎样的规模?
感觉现在的规模就还算合适,但我觉得团队作业,两次冲刺时间可能要提前一些比较好,这样不会太赶。
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
最感谢的人应该是自己,每次作业,无论是团队还是个人,都没有拖欠过,都按时完成,而不是在DDL那时疯狂赶,我做到了应该做的,我觉得可以鼓励一下自己,幸苦了。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
我们的团队应该处于磨合阶段,团队的规范还没有很好的建立起来,比如之前的Alpha我们团队是没有使用Github的,直到Beta才用了Github,还有其他的规范,没有其他组做得那么好,这也是一个遗憾的地方。还有上面有提过的前端和后端的冲突,也反应了我们还不够有经验,不够规范。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
4)对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
请在随笔中用数据证明上述内容或侧重选择之一。
我选择第四点回答: 对于里面提到的问题感觉很难交出一道满意的答卷,比如在第一部分硬问题中,就有非常多的问题都不能回答好,心里拔凉拔凉的,或许大学四年内很难完美的做出答卷,或许是我自己太菜了,大学并不是我学习的终点,我始终走在学习的道路上,只能说稳步前进,争取做到表里那么全面。
六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:
参考论文文献:
[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
七、个性发挥,包括图文、照片和创意等
这里放两张结对和团队的图片吧。
不知道你们有没有看出这张照片内的玄机(最后的晚餐),有点傻。