设想和目标
- 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
我们的软件解决了“看病难”问题和医患之间的巨大数量差距带来的一系列问题。网站可以根据用户输入的药品名、症状、疾病来找到相应的药物并输出。我们对网站的定义是很清楚的,对典型用户和典型场景也有清晰的描述。
- 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? )
达到了。第一次迭代的功能都做了,按照原计划的时间交付了。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
我们第一次迭代的功能都实现了,但是由于我们未完全了解迭代的含义,将我们项目中的比较重要的部分放到了第二次迭代(不过我们那部分我们现在也是在做),所以我们会做的改进就会把这部分功能放到第一次迭代。
计划
- 是否有充足的时间来做计划?
有。
- 团队在计划阶段是如何解决同事们对于计划的不同意见的?
协商解决或者投票解决。
- 你原计划的工作是否最后都做完了?
大部分做完。
- 是否每一项任务都有清楚定义和衡量的交付件?
是的。
- 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的?
是的。虽然按照这计划进行,但常言:“计划赶不上变化”,所以我们的项目也是出了一点的意外。前期我们没有评估到我们后期出现的风险的,前期的人员分布存在一点不合理。
- 在计划中有没有留下缓冲区,缓冲区有作用么?
有的。有,我认为缓冲区的作用是很大的,缓冲区可以用来我们处理程序意外出现的bug,对项目进程中出现的意外及时做出相应的措施。
我们学到了什么?如果历史重来一遍, 我们会做什么改进?
我们会做出好的风险评估,做出更适合的人员分配。
资源
- 我们有足够的资源来完成各项任务么?
有。有指导老师、助教解答我们问题或项目理解上或学习算法上。有相关的学习书籍。
变更管理
- 每个相关的员工都及时知道了变更的消息?
是的,我们之间的消息接收或者交流都十分的及时。
- 我们采用了什么办法决定“推迟”和“必须实现”的功能?
优先级,对功能点划分优先级。
- 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
有,我们都清楚预期效果。
我们学到了什么?如果历史重来一遍, 我们会做什么改进?
设计/实现
- 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
主要是pm,团队进行讨论确定工作任务。
- 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
团队分析每种可能的情况一一排除,涉及需求最终则找指导老师确认。
- 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
运用了,这些设计和实现有助于我们更加直观、清晰的了解的我们的项目,为项目的实现更清晰明了。有,做到的过程中觉得这样改之后更加完善,需要。
- 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
组员分部分来对代码复审,是的,除了复审代码的功能还依据代码规范来复审代码
我们学到了什么?如果历史重来一遍, 我们会做什么改进?
测试/发布
- 团队是否有一个测试计划?为什么没有?
有。
- 是否进行了正式的验收测试?
是的。
我们学到了什么?如果历史重来一遍, 我们会做什么改进?
团队的角色,管理,合作
1. 团队的每个角色是如何确定的,是不是人尽其才?
角色是依据项目的需要以及联系实际商议确定的,是的。
2. 团队成员之间有互相帮助么?
有的,我们团队相处融洽,互帮互助。
3. 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
我们暂时没有出现这样的问题,如果出现了我们应该会权衡利弊,联系当下的情况做出最适合的选择
我们学到了什么?如果历史重来一遍,我们会做什么改进?
总结:
我们项目基本上是按照我们的计划来实现的,第一次迭代的功能也实现了,但是我们将我们项目中的重功能放在了第二次迭代,所以我们第二阶段会相对困难一些,这是由于我们对风险的评估的不恰当,人员的分配不是很合理以及对迭代的含义没有完全理解导致的,而是依照这惯性思维先解决简单的。