团队作业9——事后分析(Beta版本)
软件工程课的目的,主要是让大家通过做项目,学到软件工程的知识,而不是低水平重复, 有些团队在 alpha 阶段用比较低水平的方法做了几个功能, beta 阶段还是用比较低水平的办法,又做几个功能, 感觉这些同学失去了学习的机会。 宁可少做一些功能, 也要把 单元测试,架构,代码规范,等提高。 我们说
软件 = 程序+ 软件工程,
软件的质量 = 程序的质量 + 软件工程的质量
我们可以问自己,在beta 阶段, 程序的质量提高了么? 软件工程的质量提高了么? 在哪里体现出来了?具体有什么改进?
问到这个层次,就把问题根源暴露出来了。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
这次团队项目其实每个人的收获并没有一开始想的多,甚至低于一开始的个人项目,团队的作用发挥的并不是很大,因为选择开发软件的方式是WEB,而组员的学习方向却并不都是这个,所以收获不大,怎么说呢,这项目对专门往WEB方向发展的同学来说实在是太过于简单,没有什么难度,而对于往其他方向学习的同学来说,做这个项目没什么意义。更多的收获是来源于对团队合作的认识。如果历史再来一遍,我们会一开始就采用最快的开发区完成这个项目,后续有什么想法和创意可以继续加到项目中去。
设想和目标
我们的软件要解决什么问题?是否定义的很清楚?是否对典型用户和典型场景有清晰的描述?
这一款四则运算网站主要是让小学生能够爱上学习,也能节省老师的批阅时间。这款网站设计的初衷十分明确,自我感觉定义的还是很清楚的。在用户和场景上我们有一定的设想,但最后的成果可能没有达到预计的效果,有清晰的描述却没有完成。
和上一个阶段相比,团队软件工程的质量提高了吗?在什么地方有提高?具体提高了多少?如何衡量的?
那质量上当然是提高了。主要是在前端的页面上游了显著提高。具体的提高相当于丑小鸭变天鹅。提高的衡量标准当然是从视觉上来评判的。
我们达到了目标吗?
并没有达到,原计划的功能只做到了四个。交付时间上并没有准时。用户的数量也没达到原计划的预期。
用户量,用户对重要功能的接收程度和我们事先的预想一致吗?我们离目标更近了吗?
还是有一定的差距,虽然核心功能实现了,但是用户体验不理想,当然的我们离目标更近了一步。
计划
是否有充足的时间来做计划?
如果只是说计划,时间上当然是充足的。
团队在计划阶段是如何解决同事们对于计划的不同意见?
主要还是组长综合了大家的意见最终做出选择。
你原计划的工作是否最后都做完了?如果有没做完的,为什么?
没有做完。主要还是因为在大四,大家的时间并不是很多,没有充分的时间来实现。
有没有发现你做了一些事后看来没必要或没多大价值的事?
有,在开发过程中我们曾经有过一些功能,在重做了前端页面之后被砍掉了。
是否每一项任务都有清楚定义和衡量的交付件
并不是全部的任务都有,不同的成员对项目的投入程度不同,而且不是每一项任务都有人来验收。我们只能靠多改BUG来补救。
是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
没有,因为组内成员需要工作/找工作,有些任务实际上被拖了两三周才完成,而且有两次成员的操作不当导致前一次提交的部分代码被删除,所幸没有耽误最后的交付。
像代码被删除这样的风险就完全没有估计到,因为一直以来都是默认成员能够熟练操作git的。
在计划中有没有留下缓冲区,缓冲区有作用么?
之前做计划时并没有这样的意识。
将来的计划会做什么修改?
我们会平均分配组员的工作量,避免出现一人无所事事另一人焦头烂额的情况;另外会完善缓冲区的设置、加强风险管理。
资源
我们有足够的资源来完成各项任务么?
有,尽管很多成员都很忙,但是最后仍然加班加点完成了项目。
各项任务所需的时间和其他资源是如何估计的,精度如何?
是由组长在理想情况下根据每个任务的任务量和成员能力粗略估计出来的,也是按照这种估计来分配的任务,实际上精度很低,理想情况和实际情况差异还是较大的。
设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
设计工作在选定项目后团队就开始讨论思考,由团队成员共同讨论完成,时间还是比较充裕的。
设计工作有没有碰到模棱两可的情况,团队是如何解决的?
有遇到过几次类似的情况,团队从用户角度和团队能力这两方面考虑的情况,并解决。
变更管理
团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
有使用这些测试和工具,对我们团队进行项目开发有很显著的作用。
什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
四则运算的出题和难度选择部分,bug最多。主要是因为分数部分的运算问题。在最开始设计的时候,我们没有考虑分数运算这部分功能。
代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
严格执行了代码规范的,团队成员分别进行代码复审。
团队是否有一个测试计划?为什么没有?
有。
是否进行了正式的验收测试?
依据功能进行了正式的测试。
总结
用一些用例测试在JUNIT中进行单元测试。这些工作挺有用的。在团队的沟通交流还有质量方面都需要改进。
最需要改进的是团队组员的开发效率,,既要保证开发速度,也要保证开发质量。
1. 团队的每个角色是如何确定的,是不是人尽其才?
根据以往做过项目的开发角色还有个人的发展方向,,,因为发展方向和项目的问题,感觉没有做到人尽其才。
2. 团队成员之间有互相帮助么?
成员之间有互相帮助,毕竟是一个团队。
3. 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
先根据任务分配的情况,再看问题出现在哪一块,是在哪个成员哪出现了问题,最后让出问题那个同学去负责这块,并且和其他成员沟通怎么解决
-
名字 角色 团队贡献分 可验证的贡献 陈福鹏 PM TEST 20 博客、leangoo、中文字段插入数据库BUG的修复 林栋 Dev 15 雍斌凡 Dev 25 前端页面和后台数据的交接(可以看Git提交记录) 白至幸 Dev 21 结算并统计答题成绩 洪灏捷 Dev 19 后台数据库中获取排行榜