一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 在软工实践之前,我一直是单干状态。软工实践使我的团队协作能力得到提升,使我回去反思这一个过程中我的不足和改进之法。
- 体验了一次完整的软件开发过程,有了一个小小项目经验。在此之前,数据库实践亦或是自己闲时玩玩的小小项目,做出来的游戏等,所谓的用户需求不过是自己瞎逼逼出来的。这一次实践让我第一次有真正的从用户角度出发,这是一个新的体验。
- 没有掌握较好地控制住进度和预估的能力。
- 软工实践提升了自己对软件开发的方法,编码能力也顺带得到了提升。原型开发的方式让我眼前一亮,不在是想做啥样就做啥样,或者大概想在做啥样结果却差之甚远。不足的是这一次我们团队的原型设计并没有那么理想。需求分析也有很多模糊的地方。在我搭服务器期间很是难受,数据库改了又改,服务器提供的接口、功能也改了很多次。在到元旦期间(之前的项目惨不忍睹,决定重做)安卓期间发现每个功能模块真的模糊。功能设计更多的停留在各自的脑海里。写服务器时我经常瞎想这个功能需要什么数据过去,写安卓时惨了,我不得不去看我服务器提供的接口来的数据是些什么,还好做界面的队友有耐心,反复改了几次界面上显示的信息。
- 没有掌握太多框架的使用。服务器因为一开始担心原先的阿法冲刺时间短(还没调整前),考虑一些可能情况,我决定使用c#+sql的方式搭建。现在发现这并没有加快后期我的服务器进度。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
- 1.统计一下,你在这门软件工程实践中,完成了多少行的代码;
- 在第一次软工博客中,我曾提及过写了多少代码的问题,而范助教也在下方评论要给出“估计的理由”。统计数独、结对第二次、现场编程同学录、团队项目。用cloc.exe(在张明学长的博客里发现的工具)得出的最后被实际使用的代码行数,不计学习过程中。
- 在第一次软工博客中,我曾提及过写了多少代码的问题,而范助教也在下方评论要给出“估计的理由”。统计数独、结对第二次、现场编程同学录、团队项目。用cloc.exe(在张明学长的博客里发现的工具)得出的最后被实际使用的代码行数,不计学习过程中。
- 2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 花费时间(h) |
---|---|
软件工程实践第一次作业--准备 | 3 |
第二次作业——个人项目实战 | 12 |
团队展示(团队) | 6 |
项目选题报告(团队) | 8 |
原型设计(结对第一次) | 14 |
结对第二次作业 | 20 |
项目需求分析(团队) | 16 |
项目Alpha冲刺(团队) | 110 |
团队作业——随堂小测(同学录) | 9 |
个人作业——软件产品案例分析 | 4 |
事后诸葛亮(团队) | 2 |
项目Beta冲刺(团队) | 32 |
个人作业——软件工程实践总结作业 | 5 |
项目app部分重做(团队自己定下的) | 60 |
合计 | 301 |
- 3、哪一次作业让你印象最深刻?为什么?
- 贝塔冲刺。其实数独和阿法也挺深刻的。贝塔冲刺我们选择了出来一起完成,效率比起上一次的阿法各自在宿舍干活来得高,虽然是有14天的时间,不过由于我们都需要考试,最后实际只有5个晚上的时间是一起进行冲刺。阿法遗留下的一堆问题让贝塔进行得很吃力,最后一天晚上找BUG找到了凌晨4点多,然后放弃治疗。所幸的是系统验收的时间较晚,让我们有了足够的时间重做整个APP。贝塔的教训让之后我们去完全投入完成app部分,在元旦放假时间早上起来,然后写代码一直到睡觉,敲到手酸。
- 4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
- 累计花了多少时间这一点不好估计。平均一周的话20+应该妥妥的。
- 5、学习和使用的新软件和新工具;
- Android studio 3.0(用2.3.3的就不要作死升级了)
- 墨刀、Axure、StarUML
- github(一开始用的是gitGUI,后面用了一下gitBash,发现自己之前用GUI宛如一个zz)
- 6、学习和掌握的新语言、新平台;
- java(以前只有看看没有用过,这次直接就写了安卓)、C#(以前只有用过没有深入,再也不想用C#写服务器了= =)、看了MVC
- 7、学习和掌握的新方法、其他方面的提升。;
- 需求分析、设计、模块化,第一次发现将各不相干的模块生成dll和jar然后拿来用,对维护挺方便的
- 单元测试、代码规范
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 属于我和我们团队的人月神话应该是每一次项目前期如同散沙,最后时刻团团抱紧。有限的时间自己可以做出最大化的工作。
- 第一次会议上便担心后期可能做不完(如果系统验收的时间间隔没有变长的话实际好像就是如此)。团队成员都有各自的事情要做,空闲时间不多,所以真的要自觉。每一次团队作业如果没有按时完成进度会导致下一次离预期进度相差更远。
- 团队成员都是有创造力的,“这个好难我不会不想做”不存在的,反正做不出来最后还是得做出来- -
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
- 对学弟学妹的建议:如果实践学分已满但还是想报软工实践并且报了它(像我),在不是想要水软工实践的情况下,把其他的实践课都退了。不然会发现想把软工做好时,其他的课程会惨不忍睹。如果只是水一水,不是必须报这门实践的话不要报。要是万一报了那就。。。。。。最好还是别来。团队作业感觉自己都不会做这并不要紧,只要多去花点时间这并没有什么难度。
- 报了软工后要尽早的开始自己的计划,在分工之前想好自己想做的部分然后提前进行准备,能不熬夜就别前期自己作死再来熬夜了。
- 对于交换队友的问题,我一开始是反对的,现在非常支持。团队内部除了合作还需要有组员间的竞争,这才有利于项目的进行和个人学习。在交换上大家一般都是在互相熟悉的人间进行,很难做到老师们预期的结果。所以或许可试试由老师和助教来定交换方式(迷之微笑,我们的软工结束了这事不会发生在我们身上)。另外,新成员加入后可以暴露出原先团队存在的一些问题,比如需求不完整、规范不良、效率低等。
- 此外可以让人发现规范这玩意非常1w个重要。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 萌芽:需求分析阶段便已达到
- 磨合:阿法阶段我们相信各自可以把自己的任务做好,冲突存在一点(不说软工还是py),不过每次开会原计划半小时结果多花了一大堆时间在扯东扯西
- 规范:贝塔结束达成共识,规范达到
- 创造:我想我们并没有达到这一水平,不过后来的元旦冲刺也接近了那么一些。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
- 用户是身边的人,强行拉的。我个人认为这是一个挺清新的APP,做得好的话可以多一些用户,这锅我得背,我没预料到那个比我虚拟机还好一点的配置竟然连接sql server需要很久,这一点我还是不清楚,除了硬件配置不一样其他环境配置是一样的,而还用了虚拟机来试着模仿他的硬件配置,结果还是比它快。这一结果直接导致了涉及到数据库操作时客户端需要等待一小段时间。
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
- 使用了Git来进行协同开发,对节点进度可以控制住一点点
3)并且通过数据展现软件是可以维护和继续发展的。
- 关于项目的代码结构而言,重做后结构良好,另外注释丰富,遵循代码规范,使用javadoc生成了代码文档。
很想知道没选和退选的同学这小日子过得好不好,汪老师的软工实践挺水的,还有其他班没有的助教学姐你们怎么舍得退选呢