一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 首先就是体验了一遍软件开发流程,毕竟以前都没有参与过项目开发。其次就是学习了新东西,需求报告,原型设计,UML设计等等,在安卓开发方面有了初步的学习,比原来不菜了一点,接下来的学习与努力也有了一定方向,我也发现自己在UI前端方面有一定的兴趣。至于不足就是我觉得自己在JAVA反面还有很大的学习空间,所以这是一个可以努力的方向,如果自己JAVA熟练一点的话,这次软工实践一定可以为团队做更多的贡献,所以也是比较遗憾的一点。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
- 前期的第一次个人实战作业和结对作业代码估计400+。
- 后来的冲刺阶段我主要负责UI界面设计,所以接触的多为XML代码,这方面的代码就多了,当然了有很多是可视化控件设计。作为交换的队员两个团队的界面设计都写了不少(虽然界面很丑,自己也还是很菜)。因为初学,第一个团队当时写的比较粗糙,但alpha阶段基本能用。第二个团队Beta冲刺的时候完善了一下界面,可是最后团队Beta雪崩。但最后和队友又努力了不少时间重新挽救了项目。
- 界面设计的Java部分写一些界面跳转,同时还有一些类似事件监听或者listview这类界面需要的东西基本都是从网上找类似的demo然后自己再模仿改造用到团队的项目中。这部分应该1000+吧,虽然多为模仿的,惭愧-_-.
2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 花费时间 |
---|---|
软件工程实践第一次作业--准备 | 2h |
第二次作业——个人项目实战 | 16h |
团队展示(团队) | 4h |
项目选题报告(团队) | 15h |
原型设计(结对第一次) | 9h |
结对第二次作业 | 20h |
项目需求分析(团队) | 25h |
项目Alpha冲刺(团队) | 65h |
团队作业——随堂小测(同学录) | 4h |
个人作业——软件产品案例分析 | 5h |
事后诸葛亮(团队) | 2h |
项目Beta冲刺(团队) | 50h |
个人作业——软件工程实践总结作业 | 3h |
3、哪一次作业让你印象最深刻?为什么?
- 第一次个人实战作业:这次作业其实自己写的按照自己的正常的思路来写,但我并不是大神,所以觉得写的代码虽然可以用,但我感觉应该挺一般的,毕竟自己的思路也不是特别的新奇,最后却意外的跑的还不错,评分也挺高,有点惊喜。
- Alpha冲刺:第一次参与项目开发,从0开始,AndroidStudio慢慢的熟悉,从不会用到能写一些界面。alpha主要是一个学习的阶段,自己去学习一些新的东西,运用到项目中,挺不容易的,花的时间也挺多。
- Beta冲刺:我作为交换队员换到另一个团队,分配的任务也主要是界面部分,相比原来的团队,这里的界面比不那么完善,所以也是慢慢熟悉慢慢试着做,但是很遗憾Beta阶段团队做的并不好,功能植入交互方面出了问题,安卓部分的问题比较大,所以和队友决定重造界面。元旦期间又搞了好长时间,特别是假期第一天从中午一直搞到第二天凌晨。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
- 150200小时左右,平均每周1012个小时左右。
5、学习和使用的新软件和新工具;
- AndroidStudio
- 墨刀
- StarUML
- VS
- MyEclipse
6、学习和掌握的新语言、新平台;
- XML
- Java入门
- 时不时逛起了CSDN与Github
7、学习和掌握的新方法;
- debug能力
- 查找并学习他人的优秀demo
- UML设计,学会了画泳道图、用例图等等。
8、其他方面的提升。
- 体验了一把软件开发流程,对开发有了一定的了解。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 首先这门课挺累的,会花掉你很多时间,以前每逢周末我会玩点游戏,打打球,晚上再看些英超西甲美滋滋。可是这学期周末事情就多了起来,常常要打开AndroidStudio看看还有什么没有做,赶紧做一下。收获肯定是有的,以前都没接触过软件开发,这次好歹体验了整个过程,知道了软件开发的大体流程,自己亲临其中更有感触。
- 开发从0开始学,我是做界面的,第一次接触XML,第一次接触安卓,在Alpha阶段基本是天天与百度共舞,逛CSDN上GitHub找资料,找demo。初学者就是菜,很多东西得搞半天,熬夜也是经常的事,还好我熬夜对我来说并不是什么难事。在Alpha阶段由于我们前期项目需求方面准备做的比较充分,虽然前期由于分工不怎么明确导致进展不快但分工明确后进展还是比较顺利的。两个队友都比较强同时也是舍友,所以沟通起来比较方便,所以自己能得到不少的帮助,遇到的问题大都是新知识的学习,还记得有一次底栏BottomNavigationView的应用搞了半天没弄好,第二天一起床脑子里马上就想到这个没弄好,那种感觉心如刀绞,但这就是生活,再怎么心如刀绞也得起床。最终Alpha阶段团队实现了大多功能,Alpha阶段得益于两个给力的队友,团队的成绩也不错,没想到最后我获得了Alpha阶段后的小黄衫,小学的时候就知道了环法自行车赛有赛段的黄色领骑衫,没想到我在这门课也能获得类似象征性的东西,当然了还是队友给力,能带我领取小黄衫。
- Beta阶段我作为交换队员离开了团队,其实原来的团队运转的挺好的,分工也比较明确,我也挺想继续把原来的项目完善下去,但是将在内,师命不得不受。到了另一个团队遇到了不少的困难,首先界面完善度比较一般,很多子界面都不完善。其次就是原型设计方面相对于原来的团队比较不完善,所以做界面时没个完整的原型比较难受,常常要问一下队友这个地方要有什么功能,这个地方需要怎么设计,有时没沟通好会造成界面和功能有所不合。最崩溃的是最后功能植入出现了问题,只实现了注册登录以及推图方面。因此Beta阶段宣布雪崩。我还清醒的记得Beta答辩那天一直搞到凌晨四五点没弄好,第二天八点多去答辩,当然是很失败。内心极其郁闷与不甘,草草吃完午饭后准备午睡,因为第二天早上还有人工智能的期末考试,所以准备睡个一个半小时到2点起床然后去复习,按照前一晚没怎么睡觉的情况来看没定闹钟的话我可以估计睡到傍晚,但郁闷的是午睡时我特么做噩梦了,梦境中满是Beta雪崩以及答辩失败的炼狱般场景,定的2点闹钟然后在1:56分(没错,我清清楚楚记得时间)被惊醒!!!刺不刺激,惊不惊喜!醒的那一刻我还以为自己睡过头了,醒来后毫无困意。真的是无比酸爽。
- 然后就是继续完成未完成的Beta了,由于我是中途加入的,所以里面有一些是前队员写的,然后我和其他队友也添加了不少东西进去,并没有很好的分包,最后导致项目太乱也有不少bug存在,最后我和队友冷静下来,思考了一下既然项目这么乱又有不少bug那干脆弄个新项目,重新捣鼓设计一下界面还有功能的交互。所以决定重新建一个安卓项目。于是在元旦期间我和一个队友重新开始了工作,把项目重新搞了一下。幸运的是这次进展比较顺利,和队友沟通也方便,一切都有条不紊的进行下来。
- 所以我觉得软工实践首先要组建一个好的团队,队员有执行力,能够分工明确的去工作。前期的工作很重要,原型设计项目需求要做好,不要看只是写一些文档,对后期开发的规范性还是有影响的,不然有时候没有一个完整的原型开发起来很盲目。冲刺阶段主要就是投入了,积极的投入积极的学,团队分工很重要。最后我自己在Java部分还有很大的学习空间,所以这是一个努力的方向。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
对下一届的建议:
- 软工实践可以选一下,虽然会花掉你不少时间也很累,但花时间了你肯定就会有所收获的。
- 努力学习新知识,上CSDN,上GitHub,不要水,不然别人都在做事你水这2分学分心里也硌得慌。
- 多沟通多学习,有大佬抱紧大佬的大腿好好学,注意是学不是水。
换队员的问题:
- 这个事情我觉得来的太突然,不知道是原先我没听到还是怎样,反正是在Alpha阶段结束后突然得知这个消息,那时觉得很不可思议,我在想这样目的是什么,模拟职场?但我是第一次参与项目开发,我只想把它做完整,所以刚开始不怎么理解与接受。我觉得老师在这方面的考虑是不是稍显欠妥。
- 作为交换队员的我换团队后工作量加了不少,上面也有提到了,Beta阶段确实很艰难,因为你需要重新了解项目,再加上换到的团队项目进度一般,所以需要做不少事情,加上那时候刚好有考试,所以有点烦躁。
- 如果要换我觉得得提前讲,不要太突然,不然很多团队都规划好了很容易被这个换人打乱。而且我觉得有些团队如果人多的话没人愿意走让谁走也是一个问题,不过我们团队只有三个还是舍友沟通起来比较方便,我负责的部分接手比较方便所以我就作为交换队员了。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
45度炸团队:三个人,我比较菜,那就形容为双核带一菜把。每个人都做事分工明确。
听说团队:五个人,家鹏是大神,那就形容为单核驱动吧,所以比较艰难一点。
从一开始的萌芽,再到磨合,再到规范,我觉得团队都一步步走过来了,但是创造感觉是一个比较高尚的境界,我觉得只有当自己的项目接近完美又有足够吸引力时才够得上创造的门槛,我们还在路上。这些阶段我觉得责任很重要,相互的沟通和提醒。邹欣老师的《构建之法》里也有提到责任,邹欣老师可能是个球迷,书里面经常能看到他用球场的例子来论证。责任里有这样一段:
想象在一个足球比赛里,宽阔的赛场,快速的变化,不能依赖与教练在场边嘶吼着提醒每个队员的责任,队友之间就要随时提醒。
是的,队员场上的呼应很重要,是前压还是回收,每个球队都要拥有场上的“喊指”,是提醒更是鼓舞。所以有沟通有责任心能够相互提醒的团队才是有希望成功的。
五、怎样证明你学会了软件工程?
研发出符合用户需求的软件
- 历经一番艰辛做出了听说日记APP,虽然逼格不高,但实现了基本功能,能够投入使用。
通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
- 冲刺阶段团队基本每天都会在commit代码到github上,对于每天的进度都有冲刺博客记录,及时解决遇到的问题。
并且通过数据展现软件是可以维护和继续发展的。
- 源代码上传到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
七、个性发挥,包括图文、照片和创意等
- Team And Cohesion