alpha阶段问题总结
设想和目标
-
我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
:我们的软件想要让用户能够以“一次性购买一道菜包含的菜品”这样的形式去买菜。定义和用户场景等在需求pdf、ppt中有体现 -
我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)
:前端后端功能基本完成,但界面不够美观,一些bug还未修复。 -
和上一个阶段相比,团队软件工程的质量提高了么? 在什么地方有提高,具体提高了多少,如何衡量的?
:团队在执行任务时的效率有所提高,在队员们完成自己的模块任务时可以看出。 -
用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
:用户使用调查在beta阶段进行。我们在后端的工作任务安排方面较于前端不太合理,如果能重来的话我们应该会从前端分配出一人参与后端开发。
计划
-
是否有充足的时间来做计划?
:应该是有较充足的时间来做计划。 -
团队在计划阶段是如何解决同事们对于计划的不同意见的?
:我们的计划也是线下开会决定出来的,大家都有提出意见,我想我们现在实现的计划是有足够的合理性的。 -
你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
:网页端的工作没完全做完。因为我们对后端工作的安排不够合理,间接影响了网页端的进度。 -
有没有发现你做了一些事后看来没必要或没多大价值的事?
:无。 -
是否每一项任务都有清楚定义和衡量的交付件?
:我们按照系统分析时制定的功能模块一步步完成项目。 -
是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
:整体是按照计划进行的。但还是我们没有足够的后端开发经验,对于人手安排不够合理,对于项目进度造成了一定的风险。 -
在计划中有没有留下缓冲区,缓冲区有作用么?
:我们在计划中有留下一天的时间来解决未完成的任务。缓冲区能在我们遇到风险时有一定的解救时间。 -
将来的计划会做什么修改?(例如:缓冲区的定义,加班)我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
:如果重来一次我们在安排计划时会留更多的缓冲时间。
资源
-
我们有足够的资源来完成各项任务么?
:除了时间以外的资源都足够,团队成员都还需要时间解决课程任务考试等等。 -
各项任务所需的时间和其他资源是如何估计的,精度如何?
:我们由懂得相关技术的成员讨论各项任务所需要的时间。 -
测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度
:测试时间足够,人力方面没有完美地安排好。美工的话感觉对难度挺大的,我们在beta阶段会尽量做出较美观的项目。 -
你有没有感到你做的事情可以让别人来做(更有效率)?
:没有。大家各司其职,对自己的任务都有了相当的了解。
变更管理
-
每个相关的员工都及时知道了变更的消息?
:是的,大家都有留意相关变更,我们在群里也会通知。 -
我们采用了什么办法决定“推迟”和“必须实现”的功能?
:我们决定的是将高度契合项目主旨的功能作为必须实现的功能,这些也都由会议讨论决定。 -
项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
:alpha阶段的做好了是基础功能的实现。beta阶段的出口是对新增功能的实现和项目完善。 -
对于可能的变更是否能制定应急计划?
: 可以,我们预留的缓冲时间应该能适应变更。 -
员工是否能够有效地处理意料之外的工作请求?
:可以,组员们的能力都是有保证的。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
:留有缓冲时间能够让团队在面对变更时体现出更好的反应能力。
设计/实现
-
设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
:设计工作在alpha冲刺前由各个小组的领军人物带领大家完成。对于技术的了解会让项目的设计不会出现开发时无法实现的情况。 -
设计工作有没有碰到模棱两可的情况,团队是如何解决的?
:一般都是与类似工作的组员交流解决。 -
团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
:设计阶段用到uml,测试阶段用到单元测试。项目开始的 UML 文档与现在的存在少部分区别,
这些区别由设计和实现过程中发现、解决问题造成,需要更新少部分UML内容。 -
什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
:统计价格的功能出现了一些Bug,这是由寻找数据来源时造成的,我们对于数据这方面的信息还不够敏感。 -
代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
:使用Vscode的ESLint插件进行代码复审,没有警告了再提交代码到git仓库。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
在实现过程中会有各种情况影响项目的进度,如果计划制定的更加详细或许能够规避一些风险。
测试/发布
-
团队是否有一个测试计划?为什么没有?
:团队在alpha冲刺阶段的末尾还存在着进度问题,并没有置顶测试计划。 -
是否进行了正式的验收测试?
:我们仅在团队内进行了测试。 -
团队是否有测试工具来帮助测试?
:后端使用junit,前端使用LeakCanary、junit,接口测试使用postman。 -
团队是如何测量并跟踪软件的效能(Performance)的?压力测试(Stress Test)呢? 从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
:效能测试方面,我们由部署的服务器流量保障用户请求较快速地得到结果,也有使用测试工具来测试大量的请求能够得到正确的结果,我们会继续使用这些测试工具保证项目的稳定性。 -
在发布的过程中发现了哪些意外问题?
:没有发现。
我们学到了什么? 如果重来一遍, 我们会做什么改进?
:我们在开发时大多是局部的log日志类测试,而忽略了整体的提高项目可靠性的规范测试,但是测试的实现还是要有项目完成度的这个前提才行。
团队的角色,管理,合作
-
团队的每个角色是如何确定的,是不是人尽其才?
:每个人按照自己的能力技术分组,尽量都发挥自己的长处。 -
团队成员之间有互相帮助么?
:团队都会帮助有问题的成员,主要还是由懂得解决相关技术难题的成员帮助。 -
当出现项目管理、合作方面的问题时,团队成员如何解决问题?
:团队内部分组讨论,制定出较合理的解决方案。
总结:
1.你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
:应该处于CMMI第二级。
2.你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
:团队目前处于规范阶段。
3.你觉得团队在这个里程碑相比前一个里程碑有什么改进?
:队员之间的合作更加顺畅了。
4.你觉得目前最需要改进的一个方面是什么?
:我觉得需要改进的是一套完整的计划措施。