WereWolf项目 Postmortem

WereWolf项目 Postmortem

(博客园的MarkDown编辑器好像有些问题,编号都显示1。。)

设想和目标

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

    我们的软件主要是用来解决玩狼人杀这款桌游时无牌、无法官、游戏流程不熟悉等情况的。我觉得我们对典型用户和典型场景描述的较为清楚,我们项目之前做了问卷调查,提出了一些功能,Alpha版本挑了用户较需要的几个功能重点实现,之后在Beta阶段我们将继续完善其余功能。

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

    与后面开发阶段对比来说,时间相对充足。一周的时间大概够我们整理思路,进行NABCD分析,对软件开发做整体上的规划。

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

    讨论解决。仔细分析问题的每个优缺点,大家共同商讨得出我们认为的最佳方案。如我们的项目最开始我是只想做一个Android客户端的,但石浩然同学坚持要做双平台——因为这样我们才能真正上线,才能真正拥有用户。最后权衡利弊,我们接受了他的想法。

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

暂时还没有实际用户。

有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

对用户需求做更细致的分析,对软件的实用程度做一定估量。

计划

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

    没有。实际的工作量比想象中要大很多,原计划是发布软件的,现在并没有到能发布的程度。

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

    中间看了一些html及html内嵌javascript的知识,回想起来其实没什么必要。

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

    这方面我们做的不是很好,主要是前期学习期间的任务并没有明确的交付件。

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

    大体是按计划进行。意外就是前面提到的任务量过大,由于开始计划时大家经验都不足,没有准确估计到实际所需时间。

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

    没留下。。时间比较紧。。

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

    如果可能的话还是希望缓冲区多一些的。。(这里我理解的缓冲区是休息的时间)。。毕竟还有编译课设。。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

尽管可能做的不是很好,但是我们依旧体验到了为一个软件工程做计划的流程。如果重来一遍,我们将更细致地规划每一个阶段。

资源

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

    我们的资源需求还比较多,目前情况是每个人用自己电脑开发,团队里的一位同学购买了IOS开发者账号,另一位同学租了阿里云服务器,老师还提供了校内服务器。另外,由于我们项目是手机APP,我们大概有三台安卓、两台苹果手机来做测试。

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

    主要根据代码量来估计,精度不太高,因为有些任务代码不多但是完成起来难度较大。

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

    不太够。因为开一局游戏需要至少8个人左右,不过我们打算用一些模拟器来代替,大概能完成测试要求。

    对于不需要编程的资源确实是低估了难度,美工设计确实是需要更多时间的。

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

    由于主要只做了开发方面工作,所以暂时还没有。

有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

提前考虑所需要资源和人手。

变更管理

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

    是的。Github上可以清楚看到。

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

    用户需求和实现难度相结合。

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

    使用时完整流畅,无明显bug。

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

    Git的版本回退。

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

    大家都在尽量处理。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

项目一开始就应在Github上管理,而不是中途才整合在一起。

设计/实现

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

    总体的设计是在一开始由团队所有人讨论完成的。之后每个人具体负责的部分主要是自己来完成设计。中间交互的地方也会互相商讨完成。

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

    随着项目进展不断商讨得出。

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

    没有使用工具,暂时是手工实现的类似于单元测试的接口测试方法。

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

    网络连接时的bug最多,主要是由于对react nativehttpwebsocket调用的不了解,以及接口规定有一些缺陷。

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

    代码复审是在完成每个部分就由开发者立即测试调整的,比较严格地执行了代码规范。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

如果团队人手充足的话,希望能有一个架构师,来专门负责项目的整体架构以及各个模块之间的连接情况。

测试/发布

  1. 团队是否有一个测试计划?为什么没有?

    有。团队人手不足的情况下,每个模块在完成之后由开发者立即测试。整体完成之后,由测试人员进行网络连接测试以及整体流程测试。

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

    是的。不过由于Alpha版本工程量过大,后几个模块尚未完全进行测试。

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

    暂时没有。后期准备采用脚本测试。

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

    测试工作肯定是有用的。通过测试工作我们发现了同样的组件,在IOS上可以流畅运行,在Android上却出现卡顿现象,另外标题栏在IOS上不适配,这些我们都计划在Beta版本完善。

我们学到了什么? 如果历史重来一遍, 我们会做什么改进?

重视测试工作。“软件工程的大部分时间都在调BUG”这句话不无道理。

总结

  你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
你觉得团队在这个里程碑相比前一个里程碑有什么改进?
你觉得目前最需要改进的一个方面是什么?

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

达到了CMMI二级——管理级的程度。我们团队遵守了既定的计划和流程,有资源准备,权责到人。但是还没有一套完整的管理措施,没有制度化。

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

我认为到了规范阶段。我们团队成员们就很多事情取得了一致。角色和职责定义得非常清楚。团队还进行过有趣的团队建(shua)设(ye)活动。

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

正如规范阶段的特点,我们团队的改进如下:

  1. 作为一个整体,团队要做什么、不做什么,都更加明确。团队定下了更现实的目标和决心。
  2. 通过聆听、讨论,成员互相之间更加了解,认识到并欣赏各自的能力和经验。在工作中互相支持,大家意识到并尊重各人的个性。
  3. 随着项目的开展和成员们的互动,一些成文或不成文的规则逐步建立起来了。

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

计划阶段准备充分。

上一篇:Judy Beta Postmortem


下一篇:详解MariaDB数据库的存储过程