一、请回望开学时的第一次作业,你对于软件工程课程的想象
1.对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
通过这门课程的学习,我认为达到了以下目标:
- 复习了python;可能是很久没写的代码的缘故,前期开始写的时候速度慢,效率低,有一些基本的格式记不太清,所以经常是边查边写,经过alpha阶段前期冲刺,有了大概的整体框架,加之对代码的熟悉度,在alpha中后期以及beta阶段的代码速度与效率明显提升,这是一个蛮大的收获。
- 增加了项目经验;我们团队的项目内容算是相对比较多的,在从无到基本成型的过程,经历了设计一个较为复杂数据库、自定义每个操作的协议、初次尝试flash框架、前端与后端的交互过程、解决一些关于mysql以前没有遇到过的问题等过程。做一好一个项目,是对技术和耐心的考验。
- 感受到了团队协作的魅力;我们团队的两个PM(Beta阶段有更换)都能较为合理地安排好给每个组员的任务,看到到了大家一起完成这个项目所付出的努力和付出,很开心能够与团队的成员们一同完成这个项目。
不足的地方:
- 刚开始设计阶段把功能定得太多了,所以最终没能把所有的功能以及一些更复杂的需求(比如冗余备份等)实现。还是专注做好某些重点功能比较好。
- 软件测试大部分都交给一位组员去做了,自己在这方面做得很少,只是一些基本的连通性测试。
2.总结这门课程的实践总结和给你带来的提升,包括以下内容:
- 1)统计一下,你在这门课程中,完成了多少行的代码;
答:1200行左右 - 2)软工的各次作业分别花了多少时间?(做一个列表)
作业 | 写博客时间 | 写博客的准备时间 |
---|---|---|
软工网络15个人阅读作业1 | 3小时 | 0小时 |
软工网络15个人阅读作业2——提问题 | 1.5小时 | 4小时 |
软工网络15结对编程练习 | 3小时 | 5小时 |
软工网络15团队作业1——团队组队&展示 | 0.5小时 | 10小时 |
软工网络15个人作业3——案例分析 | 2小时 | 2小时 |
团队作业3——需求分析与设计 | 1小时 | 3小时 |
团队作业2——团队计划 | 1小时 | 10小时 |
软工网络15Alpha阶段敏捷冲刺 | 1小时 | 一周 |
团队作业6——展示博客 | 1小时 | 3小时 |
团队作业5——测试与发布 | 1小时 | 3小时 |
团队作业7——alpha阶段之事后诸葛亮分析 | 1小时 | 2.5小时 |
个人作业4——alpha阶段个人总结 | 3小时 | 1小时 |
团队作业8——敏捷冲刺(Beta阶段) | 3小时 | 一周 |
beta版验收互评 | 1小时 | 1小时 |
个人作业5——软工个人总结 | 3小时 | 0小时 |
3)哪一次作业让你印象最深刻?为什么?
答:个人阅读作业2--提问题。因为那次作业需要读完整本书,这让不爱看书的我感到很疲惫,然后花了很长时间绞尽脑汁才想出来五个问题。- 4)累计花了多少个小时在软工上?平均每周花多少个小时?
答:个人作业加团队项目,粗略地计算了一下累计花了近80个小时。平均每周6小时左右(共14周)。 - 5)学习和使用的新软件。
答:Navicat - 6)学习和使用的新工具。
答:码云看板,issues - 7)学习和掌握的新语言、新平台。
答:python的flask框架 - 8)学习和掌握的新方法。
答:mysql一些相关操作 9)其他方面的提升。
答:抗压能力,沟通交流能力等
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 团队项目选题不要太复杂,提取自己最想做的功能专注地完成会更好。因为我们当初想做的东西有点多,而最终也只是完成了核心功能,而且不是非常完整。
- 软件开发过程中应保持一个良好的心态,遇到问题及时跟PM或者其他组员沟通。冲刺阶段由于其他事情的干扰,导致有些时候会比较疲惫,甚至不想继续完成开发,跟PM沟通交流后调整好了心态与节奏。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。对于换人机制,有什么样的建议?
针对下一届,我想建议选题的时候不需要选择太过复杂的项目,软件工程这本科主要是想让我们体验软件开发这样一个过程,可以着重选择某些最想做的功能认真地去实现,当然如果你的能力很强请忽视这个建议。
换人的目的是为了让我们提前体验以后很大概率会发生的情况,我觉得可以继续沿用,暂时没有什么更好的建议。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 我觉得我们是一个不错的团队。从结果来看,当初给每个人的安排是较为合理的,大家都能在各自的位置完成规划好的任务。在磨合过程中沟通交流渐渐地加强,队员之间的默契度也慢慢地提升,最终把当初期望的大部分内容都实现了,自己也收获了许多,十分开心能够待在这样一个团队完成整个开发过程。
- 我们团队经历了萌芽,磨合,规范以及创造阶段。项目初期,只有一个大概的纲要,大家还没有非常明确自己的目标,也不是很清楚自己的分工,所以进展较慢。经过了一段时间的磨合之后,对自己负责的以及其他人负责的就比较熟悉了,因为大家都着手于自己任务,所以前期的交流不是很多,之后出现了一些问题,这也使得我们之间的交流得到了进一步地提升,一般都能及时解决问题。当整个团队结构基本成型以后,大家都能完成每天规定的任务,形成一个较为规范的模式。最终我们也成功地把软件(大部分核心都实现了)做出来,并且发布,有了一定的用户量。达到了创造阶段。
五、怎样证明你学会了软件工程?
- 5.1.研发出符合用户需求的软件:必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
除了我们的测试用户外,有13个实际用户体验过我们的软件
- 5.2.通过一系列工具,流程,团队合作,能够在预计的时间内发布“足够好”的软件:有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
项目发布:Gugua Release-码云发行版
ISSUE管理系统: 码云ISSUE
我们团队的小黄衫同学很负责地让我们提交每个阶段每天冲刺的总结。
- 5.3.并且通过数据展现软件是可以维护和继续发展的:而不是找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
客户端项目链接:https://gitee.com/niverse799/GuguaClient
服务端项目链接:https://gitee.com/534160110/guguaServer
环境部署:构建演示