WereWolf项目 Postmortem
(博客园的MarkDown编辑器好像有些问题,编号都显示1。。)
设想和目标
-
我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
我们的软件主要是用来解决玩狼人杀这款桌游时无牌、无法官、游戏流程不熟悉等情况的。我觉得我们对典型用户和典型场景描述的较为清楚,我们项目之前做了问卷调查,提出了一些功能,Alpha版本挑了用户较需要的几个功能重点实现,之后在Beta阶段我们将继续完善其余功能。
-
是否有充足的时间来做计划?
与后面开发阶段对比来说,时间相对充足。一周的时间大概够我们整理思路,进行NABCD分析,对软件开发做整体上的规划。
-
团队在计划阶段是如何解决同事们对于计划的不同意见的?
讨论解决。仔细分析问题的每个优缺点,大家共同商讨得出我们认为的最佳方案。如我们的项目最开始我是只想做一个Android客户端的,但石浩然同学坚持要做双平台——因为这样我们才能真正上线,才能真正拥有用户。最后权衡利弊,我们接受了他的想法。
用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?
暂时还没有实际用户。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
对用户需求做更细致的分析,对软件的实用程度做一定估量。
计划
-
你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
没有。实际的工作量比想象中要大很多,原计划是发布软件的,现在并没有到能发布的程度。
-
有没有发现你做了一些事后看来没必要或没多大价值的事?
中间看了一些html及html内嵌javascript的知识,回想起来其实没什么必要。
-
是否每一项任务都有清楚定义和衡量的交付件?
这方面我们做的不是很好,主要是前期学习期间的任务并没有明确的交付件。
-
是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
大体是按计划进行。意外就是前面提到的任务量过大,由于开始计划时大家经验都不足,没有准确估计到实际所需时间。
-
在计划中有没有留下缓冲区,缓冲区有作用么?
没留下。。时间比较紧。。
-
将来的计划会做什么修改?(例如:缓冲区的定义,加班)
如果可能的话还是希望缓冲区多一些的。。(这里我理解的缓冲区是休息的时间)。。毕竟还有编译课设。。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
尽管可能做的不是很好,但是我们依旧体验到了为一个软件工程做计划的流程。如果重来一遍,我们将更细致地规划每一个阶段。
资源
-
我们有足够的资源来完成各项任务么?
我们的资源需求还比较多,目前情况是每个人用自己电脑开发,团队里的一位同学购买了IOS开发者账号,另一位同学租了阿里云服务器,老师还提供了校内服务器。另外,由于我们项目是手机APP,我们大概有三台安卓、两台苹果手机来做测试。
-
各项任务所需的时间和其他资源是如何估计的,精度如何?
主要根据代码量来估计,精度不太高,因为有些任务代码不多但是完成起来难度较大。
-
测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
不太够。因为开一局游戏需要至少8个人左右,不过我们打算用一些模拟器来代替,大概能完成测试要求。
对于不需要编程的资源确实是低估了难度,美工设计确实是需要更多时间的。
-
你有没有感到你做的事情可以让别人来做(更有效率)?
由于主要只做了开发方面工作,所以暂时还没有。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
提前考虑所需要资源和人手。
变更管理
-
每个相关的员工都及时知道了变更的消息?
是的。
Github
上可以清楚看到。 -
我们采用了什么办法决定“推迟”和“必须实现”的功能?
用户需求和实现难度相结合。
-
项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
使用时完整流畅,无明显bug。
-
对于可能的变更是否能制定应急计划?
Git
的版本回退。 -
员工是否能够有效地处理意料之外的工作请求?
大家都在尽量处理。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
项目一开始就应在Github
上管理,而不是中途才整合在一起。
设计/实现
-
设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
总体的设计是在一开始由团队所有人讨论完成的。之后每个人具体负责的部分主要是自己来完成设计。中间交互的地方也会互相商讨完成。
-
设计工作有没有碰到模棱两可的情况,团队是如何解决的?
随着项目进展不断商讨得出。
-
团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
没有使用工具,暂时是手工实现的类似于单元测试的接口测试方法。
-
什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
网络连接时的bug最多,主要是由于对
react native
对http
和websocket
调用的不了解,以及接口规定有一些缺陷。 -
代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
代码复审是在完成每个部分就由开发者立即测试调整的,比较严格地执行了代码规范。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
如果团队人手充足的话,希望能有一个架构师,来专门负责项目的整体架构以及各个模块之间的连接情况。
测试/发布
-
团队是否有一个测试计划?为什么没有?
有。团队人手不足的情况下,每个模块在完成之后由开发者立即测试。整体完成之后,由测试人员进行网络连接测试以及整体流程测试。
-
是否进行了正式的验收测试?
是的。不过由于Alpha版本工程量过大,后几个模块尚未完全进行测试。
-
团队是否有测试工具来帮助测试?
暂时没有。后期准备采用脚本测试。
-
团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
测试工作肯定是有用的。通过测试工作我们发现了同样的组件,在IOS上可以流畅运行,在Android上却出现卡顿现象,另外标题栏在IOS上不适配,这些我们都计划在Beta版本完善。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
重视测试工作。“软件工程的大部分时间都在调BUG”这句话不无道理。
总结
你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
你觉得团队在这个里程碑相比前一个里程碑有什么改进?
你觉得目前最需要改进的一个方面是什么?
你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
达到了CMMI二级——管理级的程度。我们团队遵守了既定的计划和流程,有资源准备,权责到人。但是还没有一套完整的管理措施,没有制度化。
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
我认为到了规范阶段。我们团队成员们就很多事情取得了一致。角色和职责定义得非常清楚。团队还进行过有趣的团队建(shua)设(ye)活动。
你觉得团队在这个里程碑相比前一个里程碑有什么改进?
正如规范阶段的特点,我们团队的改进如下:
- 作为一个整体,团队要做什么、不做什么,都更加明确。团队定下了更现实的目标和决心。
- 通过聆听、讨论,成员互相之间更加了解,认识到并欣赏各自的能力和经验。在工作中互相支持,大家意识到并尊重各人的个性。
- 随着项目的开展和成员们的互动,一些成文或不成文的规则逐步建立起来了。
你觉得目前最需要改进的一个方面是什么?
计划阶段准备充分。