团队项目(六)- 事后诸葛亮分析(江山代有才人秃)

一、总结提纲

(一)Postmortem

1、设想和目标

  1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
    我们的软件主要是给玩家用户提供一个休闲途径,我们的定义很明确,做一款躲避障碍的小游戏,在前面的博客中对典型用户和场景进行过明确的描述。
  2. 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)?
    很遗憾,限于精力和时间,我们仅完成了大部分目标,原计划功能已实现的有游戏基础界面,正常游戏功能(小球旋转、障碍生成和碰撞检测),积分计算和菜单栏选项功能。由于一些小问题,我们比原计划交付时间晚了几天,因为没有进行相关推广,故没有达到原计划用户数量。
  3. 用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?
    由于缺乏推广,用户量与预想不一致,另外通过其他团队对我们的评测复审,可以看出我们的项目游戏界面和玩法模式过于单一。因此我们离目标还有很远的一段路要走。

2、计划

  1. 是否有充足的时间来做计划?
    是的,有充足的时间进行计划。
  2. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
    先各自提出自己的想法,再由组长依据情况进行判断选择,或进行投票决定。
  3. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
    基本工作都完成了,后面因为其他考试,限于时间精力,没有对一些完善游戏的功能进行整合
  4. 有没有发现你做了一些事后看来没必要或没多大价值的事?
    暂时没有。
  5. 是否每一项任务都有清楚定义和衡量的交付件?
    是的,交付件由组长和测试进行最终衡量
  6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
    项目后期出了一些问题很难处理——游戏结束界面的生成,是因为前期设计的时候没有考虑好,导致后面完成该功能时会与项目整体框架发生冲突。主要原因还是缺乏项目经验吧。
  7. 在计划中有没有留下缓冲区,缓冲区有作用么?
    有,起到一定作用。
  8. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
    在设计项目的时候考虑更多点,将组件要求描述更加清楚方便开发人员进行开发。

3、资源

  1. 我们有足够的资源来完成各项任务么?
  • 人力资源:我们团队有6个人,除了PM外,有3名开发和2名测试
  • 开发资源:组长整理了部分开发所需的基础知识和技术文档
  • 设备资源:人手一台电脑,足够完成开发测试任务
  • 时间资源:有些紧张,其他课程也有实验课设作业和考试,软工的项目时间跨度和工作量有点大。
  1. 各项任务所需的时间和其他资源是如何估计的,精度如何?
    组长发布任务后,由组员先自我评估,组长再结合整个项目进行评估,主观评估因此精度不是很准。
  2. 测试的时间、人力和软件/硬件资源是否足够?对于那些不需要编程的资源(美工设计/文案)是否低估难度?
    足够,美工设计上低估了难度,从其他人的复审可以看出,我们的界面过于单一。
  3. 你有没有感觉你做的事情可以让别人来做(更有效率)?
    一般来说开发人员编程后应顺手进行单元测试,这样会比让测试人员去测试更有效率,因为此时开发对代码的整个逻辑更为熟悉。

4、变更管理

  1. 每个相关的员工都及时知道了变更的消息?
    基本知道,成员更新代码后会上传至Coding.net,并在微信群通知一下大家。测试人员测试有问题时也会进行告知。
  2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
    基础功能“必须实现”,次要功能或实现难度过大则可进行“推迟”。
  3. 项目的出口条件(Exit Criteria - 什么叫“做好了”) 有清晰的定义么?
    有,定义如下:
    • 软件不崩溃闪退
    • 测试发现的bug得到修复
    • 典型用户场景得到测试并无bug
    • 测试矩阵中的典型情况得到测试并无bug
  4. 对于可能的变更是否能指定应急计划?
    我们进行了良好的分支管理,对于提交的功能,经过组长和测试review发现没问题后再对项目分支进行合并。即使发生意外,也可以通过回退至上一个正确版本再进行问题解决。
  5. 员工是否能有效地处理意料之外的工作请求?
    可以,比如博客文章撰写工作量大的时候会进行轮流分配。

5、设计/实现

  1. 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
    设计工作在项目开始的第一二周进行,主要由组长来完成,辅以成员讨论。时间充裕,人员合适。
  2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
    进行开发时,开发人员与组长的预想实现方式可能不一样,一般这时候会进行讨论,选出最佳解决方案。
  3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
    虽然仅是简单的一款小游戏,但我们运用过单元测试对功能模块进行测试以及利用UML进行需求分析和模块划分。
  4. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
    返回主界面和游戏结束界面,由于跟早期的设计理念有一定冲突。
    发布后发现图片资源无法正常加载,这导致了游戏界面过于单一。
  5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
    由组长和测试进行Code Review,由于开发初期已制定代码规范,故对代码规范有做要求。

6、测试/发布

  1. 团队是否有一个测试计划?为什么没有?
    有,详见上一篇博客。
  2. 是否进行了正式的验收测试?
    进行过验收测试,但应该不够正式严格。
  3. 团队是否有测试工具来帮助测试?
    仅单元测试工具,如Junit
  4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
    软件的效能主要是指游戏过程中的流畅性和功能的正常运行,从实际结果看,开发工作和测试工作都完成得不错。
  5. 在发布的过程中发现了哪些意外问题?
    发布后发现界面的图片资源无法正常加载。

7、总结

  1. 你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
    达到了CMMI二级——管理级的程度。我们团队遵守了既定的计划和流程,有资源准备,权责到人。但是还没有一套完整的管理措施,没有制度化。
  2. 你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
    我认为到团队处于磨合和规范阶段之间,很多事情上能取得一致,但整个团队的规范仍需要完善。
  3. 你觉得目前最需要改进的一个方面是什么?
    功能模块的划分需要更清晰明确,方便开发人员进行开发,也减少Bug的发生。角色和职责定义要落到实处,避免出现成员间任务负担失衡。

(二)讨论照片

团队项目(六)- 事后诸葛亮分析(江山代有才人秃)

二、团队成员在Alpha阶段的角色及贡献

姓名 角色 团队贡献分 可验证贡献
张鸿 PM 23 撰写博客,功能代码编写
夏浚杰 DEV 19 撰写博客,功能代码编写
萧英杰 TEST 20 撰写博客,代码测试
谢嘉帆 DEV 22 撰写博客,功能代码编写
杨辉鹏 DEV 21 撰写博客,界面开发
陈嘉曼 TEST 15 撰写博客,代码测试