事后诸葛亮分析

Alpha冲刺,很多同学经历了“Learning by doing”的学一门新的编程语言、学Git、学做一个完整的项目。但是,各组对于软件工程的“Learning by doing”的内涵了解的还不深刻,遇到的问题也不少。停一停,开个总结会,来次事后诸葛亮,为了下一步走的更好。请各小组在Deadline之前,召开事后诸葛亮会议,发布一篇事后分析报告。

一、设想和目标

1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?

1.我们的软件主要解决用户零散的时间学习单词,复习单词的问题。
2.是,我们根据前期的用户需求调查明确了我们项目的方向以及项目需要解决的痛点。
3.是,在老师建议和团队讨论下,我们进一步将典型用户确定为高校大学生,典型场景:用户在零碎的时间,比如坐公交、排队等待时,拿着书或者使用背单词APP很难集中注意力,比较枯燥,而且背单词的效率并不高。

2.和上一个阶段相比,团队软件工程的质量提高了么? 在什么地方有提高?具体提高了多少,如何衡量的?

1.我们目前处于alpha阶段,上一个阶段应该是结对编程。与上一个阶段相比,团队软件工程的质量提高了。
2.在代码规范、测试、效能分析、代码可读性(注释与命名)等方面都有显著的提高。
3.上一阶段主要是在原有的代码基础上进行修改,所以代码规范是依据项目前身而定。本阶段的代码规范是在软件开发之前确定的,原创。由于微信开发平台提供了测试工具和效能分析工具,极大地方便了我们对项目的测试和效能分析。由于代码规范都是我们自己制定的,项目开发过程中严格遵守代码规范,并在适当的地方添加注释,增加了代码的可读性。

3.我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)

在Alpha阶段已完成的目标:
①难度选择
②单词学习
③单词匹配消除
④游戏倒计时
⑤经验等级转化
⑥游戏背景音乐
1.原计划的功能做到了6个
2.比原计划交付时间提前交付
3.因为目前是alpha阶段,还未发布正式版本,目前用户数量有43个人,还未达到目标用户数100人,继续努力。

4.用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?

1.目前用户量为43人,与我们事先的预想还有一定距离。用户对重要功能基本接受,同时也对我们的小程序提出了一些建议,这与我们事先的预想是一致的。
2.我们离目标更近了。

二、计划

1.是否有充足的时间来做计划?

是,因为老师已经事先给出教学计划,我们可以合理安排时间,提前制定好项目计划。

2.团队在计划阶段是如何解决同事们对于计划的不同意见的?

通过开会,以及队员之间互相交流沟通,有不同的意见首先先听取对方的想法,再根据团队实际情况和总体方向来决定是否采纳意见,如果不同意对方意见,提出原因。成员通过讨论决定出一个最佳的团队计划。

3.你原计划的工作是否最后都做完了? 如果有没做完的,为什么?

1.原计划的工作基本完成了。
2.由于没有连接上数据库,导致未能完成排行榜的功能,以及单词可扩展性差。因为我们是第一次使用微信开发平台,对于技术不够了解,而且网上关于连接数据库的文档比较少,导致没有找到合适的解决方法。

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

有,游戏单词学习界面原先根据难度选择写了三个学习界面,后来发现其实一个学习界面就够,关键在于后端提取单词的代码放在哪。

5.是否每一项任务都有清楚定义和衡量的交付件?

基本有,但是存在部分缺漏,比如未清楚定义数据库搭建的任务细节,导致验收任务的标准比较低。

6.是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?

整体按照计划进行,但是没有连接上数据库。没有估计到连接数据库存在风险,因为根据以往经验感觉数据库连接并不难,但是我们低估了微信小程序连接数据库的难度,高估了自己的能力。

7.在计划中有没有留下缓冲区,缓冲区有作用么?

有,这是为了防止突发情况发生,能够按时调整计划,达到按时交付的要求,比如我们在冲刺期间进行了体测,适当减少了当天的任务数量。

8.将来的计划会做什么修改?(例如:缓冲区的定义,加班)

根据本阶段的实际情况,我们基本不会做太大的修改,还是会跟本阶段一样预留出缓冲区,是否加班要根据下一阶段任务的难度和具体完成情况来决定。

三、资源

1.我们有足够的资源来完成各项任务么?

有,团队成员人数够了,技术也基本能满足项目需求,也有了微信开发平台的支持,时间相对充足。

2.各项任务所需的时间和其他资源是如何估计的,精度如何?

各项任务所需的时间是根据任务的难度,以及成员自身的能力做出估计,任务基本都能按时完成,误差不超过3小时。

3.测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?

1.由于我们任务按时完成,测试时间基本足够 。团队成员有5人,足够完成项目开发。软件资源足够,利用现有的开发工具和测试工具已经能够支持我们完成项目开发。硬件资源在测试阶段需要考虑到手机品牌及型号的兼容性问题,能利用上硬件资源较少。
2.在游戏功能的开发过程中,低估了数据库连接的难度以及写博客所花费的时间。

4.你有没有感到你做的事情可以让别人来做(更有效率)?

项目开发过程中,成员均未感到事情可以让别人来做更有效率。因为我们的任务分配是在前期谨慎讨论后决定的,充分考虑了任务的难度,成员的自身能力以及任务的deadline等因素。

5.变更管理 每个相关的员工都及时知道了变更的消息?

是的,我们成员确定后就已经创建了团队的讨论组,所有的消息变更都会及时在讨论组里公布,已收到回复的形式确保每个成员都能及时获知项目的变更和进展。

6.我们采用了什么办法决定“推迟”和“必须实现”的功能?

我们根据距离冲刺结束所剩时间、任务具体难度以及成员之间的讨论来决定“推迟”和“必须实现”的功能。

7.项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?

完成了我们开始制定的任务和功能,就可以发布Alpha版本。下图是我们本阶段具体所要完成的功能和界面。

8.对于可能的变更是否能制定应急计划?

有,我们在数据库不能连接上的情况下,机智的选择了第二套方案,就是将单词放在前端。

9.员工是否能够有效地处理意料之外的工作请求?

能,PM在任务分配的时候,会根据成员的能力以及任务的具体情况分配给合适的成员,因此成员对意料之外的工作请求也能够妥善处理好,若任务难度相对较大,负责的成员也会向其他成员寻求帮助。

四、设计/实现

1.设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?

设计工作是在软件开发之前,需求分析之后。主要由PM来完成。是合适的时间,合适的人。

2.设计工作有没有碰到模棱两可的情况,团队是如何解决的?

设计工作有碰到模棱两可的情况,比如等级经验的转换,和游戏界面的设计。团队主要是通过开会,或者有问题的时候随时提出来,大家一起讨论,决定一个统一的结果来设计工作。

3.团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?

没有运用单元测试、测试驱动的开发。开始我们使用了墨刀工具来设计项目的原型,这个是非常有效的,它非常直观地展现了我们的项目想要呈现的初步效果,并让团队的成员能够根据这个原型来编写代码以实现效果。此外微信小程序开发工具自带模拟器,它能根据我们编写的代码直观的展现效果,这样使得我们在开发过程中也能根据模拟器的展示来调整代码以达到最佳的效果。

4.什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?

1.游戏功能bug最多,因为游戏功能是我们的核心功能,代码也相对复杂。
2.在发布之后发现的重要bug是游戏过程中匹配错误,没有惩罚机制,导致用户通过随意点击直到匹配成功,这违背我们复习单词的初衷。对于这个Bug,我们在设计开发的时候有考虑到这个情况,但是因为增加游戏趣味性的功能主要在beta阶段实现,所以Alpha阶段未修复这个bug。

5.代码复审(Code Review)是如何进行的,是否严格执行了代码规范?

代码复审主要看代码是否符合规格说明,代码设计是否考虑周全(主要看功能是否都能实现等),代码可读性如何(看代码是否有注释,可以通过函数名称知道函数的功能等),代码是否容易维护,代码是否符合代码规范,效能分析如何。我们团队严格执行了代码规范。

五、测试/发布

1.团队是否有一个测试计划?

是,在项目开始之前就有测试计划的安排,主要测试代码的bug和效能分析。

2.是否进行了正式的验收测试?

是,通过矩形测试和找bug来验收。

3.团队是否有测试工具来帮助测试?

是。主要的测试工具有微信开发工具自带的测试工具和开发版小程序自带的性能监控面板和调试工具。

4.团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?

1.团队使用微信开发工具自带的测试工具来测量并跟踪软件的效能。
2.从软件实际运行的结果来看,这些测试工作的结果可以知道项目的cpu和内存的使用。
3.从内存的使用数据显示该内存占比较大,但是预期范围之内,如果有能力,将在Beta阶段进行优化。

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

我们在发布第一版本的时候,发现原本在开发工具中能够播放背景音乐的功能,在手机上使用时,该功能无法实现。后来我们发现是音乐要从网络获取,而不是在下载在本地。

六、总结

1.你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?

目前属于CMMI二级,管理级。团队在项目开始前进行了任务分配,成员自行学习微信小程序的相关技术,并且能够遵守制定的计划。

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

团队目前处于创造阶段,因为团队组队也有四五周了,已经过磨合阶段,发布了可交付的版本。

3.你觉得团队在这个里程碑相比前一个里程碑有什么改进?

我们团队目前处于第一个里程碑,没有可以改进的。

4.你觉得目前最需要改进的一个方面是什么?

我们在Alpha阶段任务定义不够清楚,分配不够细致,在下个阶段会在这个方面做出改进。

5.对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例。

对照敏捷开发的原则,我们小组基本有做到,其中做地最好的是第一原则尽早并持续地交付有价值的软件以满足顾客需求(我们在Alpha阶段结束前就发布了可使用的版本);第三原则经常发布可用的软件,发布间隔可以从几周到几个月,能短则短(在发布了最初的版本之后,不断进行完善与测试,并及时更新发布版本);第六原则无论团队内外,面对面的交流始终是最有效的沟通方式(七天冲刺期间团队每天组织开会,面对面交流提出意见和看法);第十二原则时时总结如何提高团队效率,并付诸行动(每天都有成员总结,Alpha阶段结束后进行了对整个阶段的总结)。

6.照片

7.根据展示博客中给出的团队成员在Alpha阶段的角色和具体贡献排序:

姓名 角色 团队贡献排序 可验证的贡献
杨雪莹 PM 1 游戏界面
随机单词
服务器搭建
界面连接
写博客
每日的进度追踪
董美凤 后端 2 消除单词
按钮变色
服务器搭建
林艺如 后端 3 pass界面
over界面
获取等级函数
数据库搭建
林楚虹 前端 4 学习界面
音乐开关
数据库搭建
王华俊 前端 5 授权界面
游戏规则界面
原文地址:https://www.cnblogs.com/LDLYMteam/p/9030936.html