目录
一、课程总结
不知不觉这个学期进入了尾声,软工实践也要结束了。(其实这句话我更想感叹整个大学,实在太快了,大三上就结束了)软工实践这门课应该是这学期实践花的这多的一门课了吧,其他课程基本没有怎么熬夜的。但毫无疑问,收获做多的也是它。个人的学习和团队的协作贯穿整个过程。像栋哥说的那样,以后最弥足珍贵的或许是那一张张冲刺时的站立式照片,特别对我这种比较怀旧的人来说。
1)回顾过往,对比今夕
翻了一下这门课程刚开始时描述的对软件工程实践项目课程的自我目标:
- 提高自己的代码能力;
- 学会团队合作能力,在团队中学会相互协作和分工;
- 了解和熟悉一个app开发的大致流程和需要做的工作;
- 希望能做出一个实用有效的app,对人们的需求有所帮助。
经历过这一个学期,当初设立的目标基本多多少少有实现,收获真的挺多的。在团队中大家相互协作、监督和学习真的是一件挺幸福的事。
2)个人提升
1、学习和使用的新软件
1) MockingBot
这个软件是在结队作业设计原型时用到的,当时和队友一开始选择的是AxureRp,但没有找到汉化版的感觉用起来挺费劲就换用MockingBot了,个人觉得后者还是很容易上手的。在后来团队的原型设计中我们用的也是MockingBot,为我们后来的编码提供了很清晰的方向。
2)Rational Rose
在实践课的课堂上由学长演示使用这款软件设计用例图和类图,当时在课堂并没有及时完成作业,后来回宿舍自己下载了一个画用例图,并且在之后也在UML的课程中有使用过。感觉使用起来挺方便、快捷的,在以后的学习和实践中肯定还用得着。
1、学习和使用的新工具
1) MarkDown
这是老师推荐的博客随笔排版工具,使用这款工具排版后使得博客更美观,更具条理性和层次性。刚开始使用时很不熟悉,一些指令比较难记。后来,结对队友推荐和一个在线Cmd Markdown 编辑阅读器,使用起来方便了很多。
2) Github
说实话,一开始我不是很理解为什么要用Github去管理源代码,又U盘、QQ相互传不就好了。后来到了团队开发才明白图样图森破。如果不用Github去管理源代码而是去手动合成的话那简直就是灾难,到最后源代码的合成会走很多弯路,浪费时间。Github的学习和使用算是这门课程比较重要的一个收获,在今后的学习和实践中肯定用得上,自己还有必要更加深入地去学习它的使用。
3) Junit
在开发过程中,我们都用Junit对自己所写的部分代码进行单元测试,这样能为后来软件的测试工作减轻很多负担。
3、学习和使用的语言、新平台
1) Java语言
在大一大二时学校的课程中只有C和C++,自己当时也没有主动去学习这门语言。所以当时需要开发时几乎是以零基础去边学边做,所以在敲代码过程中遇到各种低级或高级的问题。虽然课程结束了,但深刻体会Java的重要性,在以后肯定要花时间好好学学。
2) Android Studio
这是用于开发Android应用的平台,功能很强大,支持git的操作。但实在是想吐槽,在软工实践前我已经安装了这个软件(虽然基本没用过),但后来小组要同意版本,我只有卸载了重新安装跟小组一致的版本。然后,然后就炸到不行,安装各种错误,那几天几乎安装到我要崩溃。还有,运行时真是占内存,真是占内存。
3) XML语言
在Bata版本冲刺时,被安排和队友结队对UI进行改进,便去找了一些教程学习辅助队友完成UI界面的改进。
4、统计一下,你在这门软件工程实践中,完成了多少行的代码
因为之前并没有什么开发经验也没有Java语言基础,所以在开发过程中代码感觉有点少。主要是XML,SQLite的学习和使用,加上和队友写了客户端的一部分,大概2000行左右。
5、学习和掌握的新方法
我觉得学到的方法挺多的,比如在Android Studio上的调试和找Bug、和队友如何更高效的结队编程等。这些在以后的学习和实践中都是非常有用的。
6、其他的提升
其他方面我记得最大的应该是如何与团队进行协作的能力,其次是自学一些技能的能力。在这门课之前几乎没有过需要团队协作一起进展的实践课,所以这个过程学会了怎样去协作让团队变得更好。 再者这门课精髓便是Learning By doing,所以在这个过程要求去自学很多新东西,这对自己的自学能力还是有很大提高的。
二、人月神话——项目实践中的经验总结+实例/例证结合的分析
经验总结
1) 今日事今日毕。当天的事情一定要在当天就做好,别想着冲刺时间还长着以后再来敢也不急。我想起以前高中老师说的一句话,你现在欠的东西以后肯定是要还的,逃是逃不掉的。是的,现在想想,如果一开始能做到今日事今日毕,后面冲刺的最后几天就能少熬夜,压力也没那么大了。
2) 不会的大胆地去学。我相信选这门课程之前还是有些同学跟我一样,在项目方面是个不折不扣的小白。所以大家开始时之前的都不多,不会的多去学多去问,别畏手畏脚。
实例分析
1) 十天的冲刺,我前几天几乎每天的进展都是XXX内容还在学习中,还没有开始编码,学习的进度也非常缓慢,然后等到结对队友已经开始实践编码内容才开始慌了,开始熬夜恶补赶上队友的进度。
2) 刚开始时队长给我安排什么任务,脑袋里第一个念想就是,这东西我完全不会啊,做不出来怎么办,就有点想推卸任务换个简单点,队长这时就鼓励去努力去学,并不难。
三、对下一届的建议
- 在大一、大二时学好C、C++、数据结构等基础但非常重要的课程,等你以后要用的时候你就会感叹自己为什么没学好、没学精;
- 在大一、大二的大把空闲时间里,学习好几个有用的技能,例如Java、PHP等,你有时间不学以后迟早是要学的,真的;
- 在大一、大二里认真学习所有的实践课程。我个人还是感觉大学里学到的大多数东西还是在实践课程里,理论课上是基本,没有实践的话我相信你期末考的分再高,过不了多久也会忘了的。所以,别再混实践课了,好好学;
- 在大一、大二里勇敢尝试各种相关比赛,如服务外包等。这些比赛不但能丰富你的见识,也能督促你学习一些东西。
- 选栋哥的软工实践课!!!
选栋哥的软工实践课!!!
选栋哥的软工实践课!!!
上述不仅是给各位学弟、学妹的一些建议,也是我自己比较后悔在大一、大二里没有做的。还是有点幸运,在栋哥课堂的洗脑下做了最后一个。
四、团队成长
我的团队是606NotConnected(听这名字就知道是宇晨风了),来自6班的6个小伙伴组成。
萌芽阶段
当初组队时,也就是在班群里喊喊就组到一起了,都是同班同学就不存在彼此之间的熟悉问题了。所以这样开起会来大家想说什么就来,不会有什么拘束了。开始确立主题时大家一人说一个,然后采用投票淘汰制来决定。
磨合阶段
说实话,我们团队磨合阶段并不太顺利。因为有很多人没项目经验,学习的进度也比较缓慢,所以比较重的任务就压到了OJ和建华那边了。在原型设计、代码规范、体系结构设计等方面沟通的也不够好。这锅真是我这种之前没什么基础学习又慢的。
规范阶段
在我们Alpha的冲刺下,完成了版本1.0后,组长认真的布置了关于Bata版的相关任务,有了之前的磨合团队走上了正确的轨道。我和队友之间的结对的效率也比之前要好的多,不懂的可以相互询问相互学习。
创造阶段
貌似我们还没有到这个阶段,有时冲刺阶段的进展和计划还有组长在群里催。
五、阅读笔记—自己代码的质量
利用翻译看了《Open Source Software Development Should Strive for EVEN GREATER CODEMAINTAINABILITY》这篇文献。关于代码规范方面挺有感触,代码开源说实话之前都没了解过,看了文章了解了一点就不瞎扯了。自己在大一学习C语言时开始编码,但一直没接触过项目,大部分编码都是在各大Online Judge网站上练习,所以最大的毛病就是变量的命名,各种i、j、k等,而且括号什么的没一点规范从不注释。在软工实践中理解了代码的规范有多么重要,学习了用驼峰法去命名,多加注释毕竟代码不是给你自己一个人看的。在日后的编码中,会特别注意这些东西。
六、怎么证明你学过软件工程?
1)研发出符合用户需求的软件
最近真是被考试压的有点喘不过气,没时间进行推广。等考试完后团队会商量完善app的不足处。至于推广,感觉现在做到难度有点大。
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
这个在我们团队博客的随笔中都有体现 http://www.cnblogs.com/606notconnected/p/6044648.html
3)并且通过数据展现软件是可以维护和继续发展的。
这些在实践中都有记录在github中 https://github.com/606notconnected
七、自我介绍
我叫贺翎(别读成贺翔!别读成贺翔!别读成贺翔!),来自计算机六班。喜欢听音乐和篮球,狂爱Kobe Bryant,但篮球技术确实不咋的。班上认识的同学大部分都是自己班级上的,别班的比较少。至于栋哥,我不知道对我本人他认不认识,但朋友圈的多次互赞,我相信他对我还是有印象的。
八、致谢
- 感谢栋哥这一个学期的心血,这门课程的工作量真的很大!!!
- 感谢助教每次作业的点评和指教,还有每次作业成绩的统计,看着工作量就很大,辛苦了!!!
- 感谢606NotConnected团队的队友。一起度过了大学最有意义的一门实践课程,相互监督、相互学习,团队冲刺中每天的照片会是我们最好的回忆!!!
- 感谢结队编程队友牛姐,在第二次结队编程中,我对Java没什么基础,所以做到工作挺少的,而且在国庆时出了点问题,当时我在外面玩都是她一人处理的,辛苦了!!!