一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
特意去看了一下第一次作业。在开篇博客里谈论的对软工实践的想象是各种打代码,调bug,学习各种操作,软件功能实现算法等内容。但是经历过这一切后发现,最后给我留下最深印象的是每次都要写的文字材料。应该是因为之前从来都没有想过写代码还要这么多的文字说明吧。
这些方面达到了期待和目标:
- 对一整套的软件开发流程有了相对的了解,知道了软件开发不止是打代码,前期的需求分析,原型设计都相当重要。这一切的准备工作都是为后期的具体开发做准备,就像盖房子,需要有设计图纸,要考虑好一切因素,还有突发情况的应急解决方案,这样才会保证开发能顺利进行下去。
- 在代码方面,前期的个人作业可能是我影响最深刻的,接触了一些不熟悉的数据结构,工具和方法,学到了很多东西比如异常处理(之前竟然从来没有写过你敢相信?),并将这个习惯带入了Linux实践和后续项目开发中。alpha冲刺和beta冲刺阶段,由于我是负责数据库设计和相关的接口的,代码量也不是很大,而且难度也不高,但是也学会了一些新操作。
存在的不足:
- 代码真的是一个痛点。第一次个人作业自己测试感觉还阔以但是交上去跑就凉了。总结问题出现在审题和一些超出我已知范围的测试点。第二次个人作业真的很努力地想做好,但是真的难,做了好久最后还是不太行,但是我尽力了,也实现了其中的一部分功能。
- 数据库初始实战的时候因为sqlite的语法问题踩了很多的坑,还有游标取值的方法。
- 因为数据库接口很多功能相似,冗余度很大,并且没有及时处理,导致最后整理接口文档时花了很多时间。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
统计一下,你在这门软件工程实践中,完成了多少行的代码;
大概写了1500行代码,包括自己写的小测试。
-
软工实践的各次作业分别花了多少时间?(做一个列表)
第N次作业 | 所用时间(分钟) |
---|---|
软件工程实践第一次作业 | 420 |
软工实践第二次作业 - 个人项目 | 910 |
软工实践第三次作业 - 结对项目1 | 740 |
软工实践第四次作业 - 团队展示 | 60 |
软工实践作业五-结对作业二 | 1170 |
第六次作业 - 团队选题报告 | 90 |
第七次作业 - 需求分析报告 | 300 |
福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队) | 600 |
Alpha 冲刺 (1/10) | 240 |
Alpha 冲刺 (2/10) | 100 |
Alpha 冲刺 (3/10) | 60 |
福大软工1816 · 团队现场编程实战(抽奖系统) | 360 |
Alpha 冲刺 (4/10) | 90 |
Alpha 冲刺 (5/10) | 90 |
Alpha 冲刺 (6/10) | 90 |
Alpha 冲刺 (7/10) | 90 |
Alpha 冲刺 (8/10) | 120 |
Alpha 冲刺 (9/10) | 120 |
Alpha 冲刺 (10/10) | 60 |
福大软工 · 第十一次作业 - Alpha 事后诸葛亮(团队) | 150 |
福大软工 · 第十次作业 - 项目测评(团队) | 120 |
Beta 冲刺(1/7) | 30 |
Beta 冲刺(2/7) | 30 |
Beta 冲刺(3/7) | 120 |
Beta 冲刺(4/7) | 120 |
Beta 冲刺(5/7) | 180 |
Beta 冲刺(6/7) | 120 |
Beta 冲刺(7/7) | 120 |
福大软工 · 第十二次作业 - Beta答辩总结 | 90 |
最终作业 - 软件工程实践总结(个人) | 180 |
合计 | 6850 |
-
哪一次作业让你印象最深刻?为什么?
第五次作业-结对二。这次作业我真的做哭了,很多功能不知道怎么实现,网上的相关资料也不多,只能自己造轮子了。国庆假期很多时间都花在这个上面,结果测试结果凉了,还没有什么分,血亏。含泪微笑.jpg
-
累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
花了近115个小时在软工实践上,平均每周七个小时左右。当时写的打算花一周5小时,和我的预期也差的不多,还是很开心的哈哈哈。
希望不要太难,不会占用太多时间。平均每周几小时要看个人程度吧,以我自身来讲,希望是在一周5小时左右完成,这样就太棒了!
-
学习和使用的新软件;
- 较深入使用的: Git,Typora, Process on, PyCharm professional, SQLite, SQLite Expert Personal 5 - 32bit
- 了解使用的:Axure RP,Mockplus,Xmind
-
学习和使用的新工具;
MS VS Studio 的测试工具,分析工具(Code Quality Analysis工具 ,Studio Profiling Tools )
-
学习和掌握的新语言、新平台;
Python, SQLite的SQL语言, Leangoo协作平台
-
学习和掌握的新方法;
异常测试及处理,性能测试,测试覆盖等,Python与sqlite的连接方法,Python调试方法
-
其他方面的提升。
Python的进一步实践,代码能力,团队合作
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
-
对于个人
不忍心吐槽我自己。虽然我的代码能力非常一般,但大部分情况下还是能交出代码的。但是个人作业我真的做的很难受。刚开学的几周就这么刚,不禁开始担心以后的日子怎么过……特别是编码要求每一条都花了我很长时间去弄还不见得搞对……但是后来发现最难过的真的就是刚开始的几周,咬咬牙就过去了。结对部分要 感谢晓宏对我的包容,我写的这么垃圾的代码他也没说什么,选择默默接受,感激他。团队部分我觉得我还是比较靠谱的,数据库部分没有出现什么错误,大部分功能接口按时交付工作,谢谢加伟的合作,那段时间他贼忙,但是还是尽量抽出时间和我讨论一些问题。搜集对自己有用的材料和获取途径真的很重要,是能否实现的功能的关键。
-
对于团队
整个开发过程我是负责数据库设计构建和接口设计的,因为使用的是轻量级的sqlite所以困难不大,网上的资料也基本满足功能需要,所以就是组装就好了。sqlite使用的SQL语句需要注意一下有一部分是和SQL server不同的。所以前期的准备学习很必要,同时每完成一个接口需要测试好再进行交付。
在数据库部分和核心功能、前端对接的时候沟通很重要,有的时候文字是不能表述清楚的,所以每两天的会议就十分必要,面谈能够清楚的知道各方的需求。
团队这里真的蛮多东西想吐槽的,最后十个人的团队开发的只有五六个人,其他的人基本上都在忙自己的事情或者在写文档……个人觉得造成这种局面的原因在于pyqt。我们组的界面开发真的非常困难,Pyqt比较适合用来写一些小公具,对于较复杂的软件开发真的是要折磨死人啊,刚开始开发界面的时候真的花了很久去学习,而且真的很难。前端组的五个人最后只剩两个人还坚持着。导致最后核心功能基本实现,但是其他附属功能基本搁置。
虽然PM在工作安排上做的不是很好但是PM还是非常负责的,基本上我们的成品很大的功劳都是他的,真的撑起了一整个团队,基本上核心功能实现都是他的功劳,还要考虑很多其他的东西,真的是很强了,换做其他人不见得比他做得好。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
- 不要想太多,也不要不自信,就算自己很菜也要先去尝试,做着做着就发现这些东西都迎刃而解了
- 代码真的是打多了就觉得还好难度不会很大,量积累出来了就越发的熟悉它
- 百度真的是个好帮手,但是要学会筛选出适合自己的东西,不要复制粘贴别人的代码,即使有些代码段可以直接使用也要自己打一遍,理解思想
- 学会大胆的表述自己的想法,不要碍于面子不敢说出口,最后浪费了自己的时间,还没有得到应有的收获。比如开会的时候没有你的事情有就大胆地提出能不能先离开。如果自己的任务PM分配的分值低了也要大胆的说出来。
- 增强责任意识,竟然开始了就不要拖拉,在规定时间内交付你该交的东西
- 团队内务要做到公开,每个人的进度都对团队开展很重要(木桶理论了解一下?)
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?假设依旧是一个90+人数的大班
我们这次有中途换队员吗(除了UML)??我觉得看老师的目的了,如果是处于“趣味性”那是真的没必要。反正我是没搞懂中途换队员的意义所在。我不是很推荐换队员,如果换的是核心队员,那对开发真的是重创(特别像我们队,在开发的人本来就不多)。
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
6~7个人不能再多了,多了工作分配不过来就是划水或者写文档,最可恶的是我们组还有基础分,然后每次算分真的差距不明显,就略失公平。真的每个人都有明确分工的我只服第六组。
4)个人/结对/团队作业应该控制在怎样的规模?
我觉得现在的作业规模就已经很合理了,没有更多的建议了。
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
最想感谢我自己!只想感谢我自己!从来没有想过依靠别人去完成任务,即使是后面的团队开发部分,按时按量完成自己的任务。大一下面向对象已经经历过一整个系列博客的折磨了,当我知道软工实践也是这个模式的时候我的内心是极度崩溃的。但是又是必修不能不修,舍友这些都不敢选,每次都是我一个人在宿舍打代码没人陪伴。并且自己的水平也不怎么样,每次都抱着力所能及实现功能做到最好。感谢deadline逼迫我每次都没放弃,但说到最后是要感谢自己,感谢即使不会也没有放弃的自己。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
团队发展有以下几个阶段:
- 萌芽阶段
- 磨合阶段
- 规范阶段
- 创造阶段
我认为我们团队处于规范阶段。团队刚建立的时候每个人还不是很熟悉,但经过需求分析,UML设计等磨合后逐渐建立的信任。分工初期一切都很美好,但是等到实战的时候就渐渐暴露问题,部分成员无法按时交付工作,最后大部分工作都是几个核心成员完成,甚至到交付日期时只能简化预期功能来减少工作量。因为正在开发的人数比较少,开发任务又比较紧急,所以重心都在功能实现上,我们甚至在规范阶段的一些方面做得也不是很好(我自己的看法,没有较严格的开发标准和要求)。但是好在开发过程非常的和谐,没有出现冲突,遇到了问题也是积极地商量解决。熟练使用Leangoo进行任务分配和记录,使用同一的GitHub仓库提交代码并有详细的说明。但是离创造阶段还有一定的距离。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
4)对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
请在随笔中用数据证明上述内容或侧重选择之一。
- 对于第一点:因为我们产品的运行环境有一定的要求,所以想要公开发布的难度比较大。但是在舍友等小范围范围内的使用意见来说是会在需要的时候选择使用的。
- 对于第二点:我们尝试使用leangoo记录每个人的任务和当前执行情况,每个人都有自己负责的部分,当有新的需求时保质保量完成自己的部分,提前计划好进度,尽量按时完成,每人完成自己的部分。所以基本上避免了临时赶工,熬夜的情况,除了后期整合时出现的临时情况比较棘手外还是有控制的。
- 对于第三点:我们会将最终整理好的代码传到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
七、个性发挥,包括图文、照片和创意等
之前一直觉得软工实践结束了我一定会极度开心,但是后来发现心情平静如水。虽然最后花了很多时间,眼睛盯着屏幕都快看瞎了,作业要求奇奇怪怪,但是回顾一下收获真的蛮多,做了我之前很害怕做的事情,结识了我之前不认识的、不熟悉的人,这些都是我的收获,是宝贵的记忆。
最后贴上我们组团队介绍的照骗纪念一下好了 (我知道画风很沙雕)_