设想和目标

  1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
    :我们的软件想要让用户能够以“一次性购买一道菜包含的菜品”这样的形式去买菜。定义和用户场景等在需求pdf、ppt中有体现

  2. 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)
    :前端后端功能基本完成,但界面不够美观,一些bug还未修复。

  3. 和上一个阶段相比,团队软件工程的质量提高了么? 在什么地方有提高,具体提高了多少,如何衡量的?
    :团队在执行任务时的效率有所提高,在队员们完成自己的模块任务时可以看出。

  4. 用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
    :用户使用调查在beta阶段进行。我们在后端的工作任务安排方面较于前端不太合理,如果能重来的话我们应该会从前端分配出一人参与后端开发。

计划

  1. 是否有充足的时间来做计划?
    :应该是有较充足的时间来做计划。

  2. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
    :我们的计划也是线下开会决定出来的,大家都有提出意见,我想我们现在实现的计划是有足够的合理性的。

  3. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
    :网页端的工作没完全做完。因为我们对后端工作的安排不够合理,间接影响了网页端的进度。

  4. 有没有发现你做了一些事后看来没必要或没多大价值的事?
    :无。

  5. 是否每一项任务都有清楚定义和衡量的交付件?
    :我们按照系统分析时制定的功能模块一步步完成项目。

  6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
    :整体是按照计划进行的。但还是我们没有足够的后端开发经验,对于人手安排不够合理,对于项目进度造成了一定的风险。

  7. 在计划中有没有留下缓冲区,缓冲区有作用么?
    :我们在计划中有留下一天的时间来解决未完成的任务。缓冲区能在我们遇到风险时有一定的解救时间。

  8. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
    :如果重来一次我们在安排计划时会留更多的缓冲时间。

资源

  1. 我们有足够的资源来完成各项任务么?
    :除了时间以外的资源都足够,团队成员都还需要时间解决课程任务考试等等。

  2. 各项任务所需的时间和其他资源是如何估计的,精度如何?
    :我们由懂得相关技术的成员讨论各项任务所需要的时间。

  3. 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度
    :测试时间足够,人力方面没有完美地安排好。美工的话感觉对难度挺大的,我们在beta阶段会尽量做出较美观的项目。

  4. 你有没有感到你做的事情可以让别人来做(更有效率)?
    :没有。大家各司其职,对自己的任务都有了相当的了解。

变更管理

  1. 每个相关的员工都及时知道了变更的消息?
    :是的,大家都有留意相关变更,我们在群里也会通知。

  2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
    :我们决定的是将高度契合项目主旨的功能作为必须实现的功能,这些也都由会议讨论决定。

  3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
    :alpha阶段的做好了是基础功能的实现。beta阶段的出口是对新增功能的实现和项目完善。

  4. 对于可能的变更是否能制定应急计划?
    : 可以,我们预留的缓冲时间应该能适应变更。

  5. 员工是否能够有效地处理意料之外的工作请求?
    :可以,组员们的能力都是有保证的。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
:留有缓冲时间能够让团队在面对变更时体现出更好的反应能力。

设计/实现

  1. 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
    :设计工作在alpha冲刺前由各个小组的领军人物带领大家完成。对于技术的了解会让项目的设计不会出现开发时无法实现的情况。

  2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
    :一般都是与类似工作的组员交流解决。

  3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
    :设计阶段用到uml,测试阶段用到单元测试。项目开始的 UML 文档与现在的存在少部分区别,
    这些区别由设计和实现过程中发现、解决问题造成,需要更新少部分UML内容。

  4. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
    :统计价格的功能出现了一些Bug,这是由寻找数据来源时造成的,我们对于数据这方面的信息还不够敏感。

  5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
    :使用Vscode的ESLint插件进行代码复审,没有警告了再提交代码到git仓库。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
在实现过程中会有各种情况影响项目的进度,如果计划制定的更加详细或许能够规避一些风险。

测试/发布

  1. 团队是否有一个测试计划?为什么没有?
    :团队在alpha冲刺阶段的末尾还存在着进度问题,并没有置顶测试计划。

  2. 是否进行了正式的验收测试?
    :我们仅在团队内进行了测试。

  3. 团队是否有测试工具来帮助测试?
    :后端使用junit,前端使用LeakCanary、junit,接口测试使用postman。

  4. 团队是如何测量并跟踪软件的效能(Performance)的?压力测试(Stress Test)呢? 从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
    :效能测试方面,我们由部署的服务器流量保障用户请求较快速地得到结果,也有使用测试工具来测试大量的请求能够得到正确的结果,我们会继续使用这些测试工具保证项目的稳定性。

  5. 在发布的过程中发现了哪些意外问题?
    :没有发现。

我们学到了什么? 如果重来一遍, 我们会做什么改进?
:我们在开发时大多是局部的log日志类测试,而忽略了整体的提高项目可靠性的规范测试,但是测试的实现还是要有项目完成度的这个前提才行。

团队的角色,管理,合作

  1. 团队的每个角色是如何确定的,是不是人尽其才?
    :每个人按照自己的能力技术分组,尽量都发挥自己的长处。

  2. 团队成员之间有互相帮助么?
    :团队都会帮助有问题的成员,主要还是由懂得解决相关技术难题的成员帮助。

  3. 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
    :团队内部分组讨论,制定出较合理的解决方案。

总结:

1.你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
:应该处于CMMI第二级。

2.你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
:团队目前处于规范阶段。

3.你觉得团队在这个里程碑相比前一个里程碑有什么改进?
:队员之间的合作更加顺畅了。

4.你觉得目前最需要改进的一个方面是什么?
:我觉得需要改进的是一套完整的计划措施。