一、回望开学初对于软件工程课程的想象,回望博客开篇时对于这门课和这学期的期望
- 对比开学初的想象期望:经过了这学期的软工实践,我对一个软件的开发过程有了一些比较清楚的了解,算是基本实现了开学初所想的了解软件开发过程的打算。当时我觉得结果怎样并不重要,事实也确实没想象中的那么美好,作为第一次编写的软件,我们的作品还有很多的不足与问题,并没有达到做一个实用、有情怀的软件的目标。不过在这个过程中也算是入门了安卓开发。
- 软工实践带来的提升:从《构建之法》中了解到软件开发中要考虑的很多方面和规划;在结对编程中领略了结对带来的好处;团队开发中对和他人合作、代码的编写规范、以及共同解决问题有了新的了解,并提升了一点代码水平,多弄懂了一些零散的知识。
- 学会使用的新工具:主要学会了使用Android Studio 和 Git 以及GitHub的使用,Git结合GitHub使用,功能很多,有很多的命令行,到现在我也还是只会用一点简单的功能,还有很多的东西要慢慢掌握,Android Studio确实是一个很强大的IDE,有很多的功能还没用到过,就是比较占内存,gradle很耗CPU。之前的结对编程中用到了原型设计工具Mockplus,上手还是很快很方便的。还有就是写博客的markdown工具。
- 学习的新语言、平台:Java和安卓,不过基础不是很牢固,还要花一些时间进一步学习。
- 完成的代码量:这次我负责的主要是功能模块的部分,写的代码并不多(我也有些偷懒),没有统计具体的代码量,大概几百到一千行左右吧,还有各种小修改。总的来说,能力上还是有很多不足,在很多时候都做不到自己想要的,在学习的过程中也只是不断地进行尝试、各种修改,还有待提升。
- 学习和掌握的新方法:主要是结合教程和别人的博客来进行学习,并结合自己的编码实践。
二、项目实践中的经验总结+实例/例证结合的分析
- 总结:现在我只能算是个初学者,并没有太多的经验,只能先谈谈在学习过程中遇到的问题和一点感想吧。在项目开发前先把基础的知识补好会省下之后的很多时间,另外最好多进行尝试,在尝试中可以加深理解并熟练掌握,只是看博客教程而不实践的话最后还是不会。虽然有些工具在刚开始用的时候会让人感到很麻烦、不习惯,比如git,在使用的时候总觉得各种繁琐的概念、命令很不方便,但熟悉之后会发现它对于项目的管理和团队的开发是很有帮助的。团队合作不是个人开发,要注意整体的进展,和队友及时讨论交流,这样才能更好地进行开发。
- 分析:我们软工主要阶段在alpha版的冲刺,中间也有很多的问题,首先是分工方面,我们主要分为两部分,两个人写功能部分,五个人写界面部分,每个人都有分配一些负责的部分。不过在协同方面做得不够好了,界面部分不同人写的风格都有些不同,导致一些地方为了要协调一致花了一整晚修改,边改边吐槽,另外代码命名规范也不好,一些命名乱七八糟的,也被队友吐槽,修改起来挺麻烦的。此外熬了几夜并没有提高多少效率,开会时效率也不高。总之,软工是一群人的事,在分工协同方面有很多的事要做好,否则只会多很多麻烦和浪费时间,最好订好各种规范并严格执行,不要熬夜赶工。
三、对下一届实践的建议,对于后来人的期许
- 建议:软件工程的重点还是在于实践,建议想对软件工程多点了解和参与团队开发的同学可以选择这门课试试。虽然栋哥的要求会比较多、也比较严格,不过只要认真参与,不抱着混一混的想法,还是会有很多收获的。
- 期许:我们这一届的要求是做一款有情怀的软件,不过真正做到的并不多,刚开始的时候每个人都畅想了很多,等到实践时才发现很多事情并没有想象中的那么轻松,做一款真正有用且有情怀的软件还是挺不容易的。其中有很多因素,个人的代码水平、团队的水平、组长的管理水平、团队的积极性、凝聚力、软件设想的合理性...因此,对于后来者,我只想说,在你们的能力还撑得起野心的时候尽力把想做的做好吧!个人认为软工实践的过程比结果重要,但结果还是很让人在意的,所以,还是应该认真对待。
四、团队分析
- 《构建之法》中讲到的团队的发展有“萌芽”、“磨合”、“规范”、“创造”四个阶段。我们的团队经历过了“萌芽“和“磨合“阶段,现在应该处于“规范“阶段,个人认为没有达到“创造”阶段。从刚开始的各种不懂到现在比较清晰的安排分工,我们多少达到了一定程度的规范,不过还是欠缺一定的凝聚力,在技术能力上也还是有需要提高的地方。总之,还是有很多进步空间的。
五、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?
- 大概地看了一下给的第一篇论文,主要讲了开源软件开发模式与传统软件开发之间的一些对比,论文有点长,并没有细看。鉴于个人代码水平并不高,没有达到一定的高度,另外也由于英语水平太低了,可能要过一阵子才能领会其中的一些思想吧。。。
六、怎样证明学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件 2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件 有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄 3)并且通过数据展现软件是可以维护和继续发展的。 而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目发展的资料
- (1) 我们的软件有公开发布,但是由于还存在一些bug,而且还有一些功能上的欠缺和设计得不够好的地方,所以暂时还不能做到有用户使用和维持一定的用户量,这其中也有我的责任,软件的注册部分存在会崩溃的bug,现在还不知道怎么解决。只能说暂时还做不到。
- (2) 在一段较短的时间内通过一系列工具、流程、团队合作开发出“足够好”的软件,我相信这对于我们来说还是能够达到的,虽然现在技术还不够好,不过经历了这次的软工实践,对于各自分工要做的事还是有了比较清楚的认识,再进行开发应该会更熟练,剩下的就是技术和团队合作上的提高了。另外我们组并没有大牛,代码分工也比较平均,基本上也有按时交付,大体上来说还是有规范的。
- (3) 代码在上都有,每次的commit都有对应的说明,一些问题也有对应的issue,就是文档可能没有写好。至于代码的可维护性,这我也不太清楚,不过在一些功能模块还是有对应的注释的,如果有人要继续改进我们的软件,根据注释理解代码内容应该不会有太大的问题,问题可能就是一些命名不够规范。我们的代码有用到Bmob的数据库sdk,各种操作在官方文档上都有详细说明。
七、相处一学期不易,课堂和课程上,我们将就此别过。可惜学生匆匆,时光匆匆,认识和了解的同学却很少。另外我年纪渐长,记忆日衰,会遗憾有时候我连个性或名字都没有记住。写一段话,介绍下你自己吧。
- 自我介绍就免了,个人不太喜欢这样,并没有什么特别想说的,就这样告一段落吧。