Loading

知疫——Beta总结反思

设想和目标

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

    Beta阶段拟解决问题:根据感染数据、疫苗接种数据进行数据分析,将各地区感染率、疫苗覆盖率、疫情潜在风险系数等作为指标生成疫情风险(安全性)排名;根据分析结果给每个地区生成疫苗接种建议;疫情及新冠疫苗相关新闻、科普推送;疫苗接种点、新冠疫苗检测点查询

    功能定义明确,在功能规格说明书中对典型用户以及典型场景做出了清晰的描述

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

    Beta阶段目标顺利达成,按计划交付了项目,并基本达到了用户量目标。详见项目展示

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

    在代码的规范性上有所提升,测试阶段也做了更明确的计划,对bug进行了记录

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

    根据用户的反馈及意见,用户对重要功能的接受程度和我们事先的预想一致。目前我们已经完成了选题时的开发目标。

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

    相比Alpha阶段,Beta阶段我们对出现了bug也进行了记录。但是开发过程中,没有使用CI/CD这样的自动化测试部署工具。如果再来一遍的话会从这个方面进行改进。

计划

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

    有,在冲刺阶段的前一周,团队对该阶段的目标和工作都做出了详细的计划。

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

    讨论协商最终达成共识。

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

    都做完了!

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

    仓库分支的管理方式没有体现应有作用。

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

    对每一项任务做出了清楚的接口定义,但在交付上没有做出明确要求。

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

    基本上按照计划进行,中途根据开发进度新增了部分任务,但也顺利的完成了。Beta的开发比较顺利,没有遇到意外。

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

    本阶段的计划中留有一定的缓冲区,缓冲时间帮助我们完成了新增的任务。

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

    计划要详细,如果重来一遍会提前做好CI/CD的使用。

资源

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

    主要的资源限制来自于团队成员的时间安排,临近期末大家的课业压力都比较大,但是团队内部自己克服了该困难。

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

    以单个子任务(issue)的粒度精度进行估计,基本符合实际的情况。

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

    Beta阶段的测试时间还算充足。美工的设计上还是有一定的难度,一方面来自于时间的不充足,另一方面是由于团队成员并不具备相关的背景。

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

    没有,团队分工明确合理,每个成员都是不可替代的。

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

    没有提前预估团队成员在不同时间的空闲情况,美工的设计也没得到更多的重视。重来一遍,将在这两方面作出改进。

变更管理

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

    通过微信群,相关的变更能够及时通知到每一位成员。

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

    团队根据目前的开发情况,在例会中进行协商讨论达成一致,讨论的依据主要为此工作是否会影响接下来工作的执行。

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

    在功能定义中做出了定义,并在测试阶段时进行的相关的测试。

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

    事先并没有制定相关的应急计划(实际中还好没有发生突发情况

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

    能,对开发中出现的额外情况均能快速处理。

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

    在开发过程中出现不可控的因素是很正常的,团队要有一定的弹性能够迅速解决这些不可控因素。如果重来一遍,会针对可能的变更制定详细的应急计划。

设计/实现

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

    在冲刺阶段开始之前,由团队共同商议完成。团队达成一致有助于节约开发中的沟通成本。时间的选取上,挑选了团队成员都有充足空闲时间的时间段。

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

    由于功能的变化数据库设计出现了一定的返工,团队经过讨论确定功能需求之后才确定了数据组最终的设计。

  3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?

    在后端运用了单元测试的方法,在开发的流程上,采用的是先开发后测试的方式,没有使用测试驱动开发的方式。

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

    本阶段产生的bug总数并不多,而且没有出现集中于某一功能的情况,这些bug出现的主要原因是代码编写过程中的小疏忽,但是在测试过程中也很快的发现了这些bug。

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

    代码复审主要自我评审以及同行评审为主;严格执行了代码规范。

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

    测试工作在条件允许的情况下,应该尽早开展。在本阶段的测试阶段,团队的测试压力确实比较大。重来一遍的话,会提早开始测试工作。

测试/发布

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

    测试阶段做了更明确的计划,对bug进行了记录

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

    是,在最终的测试中多个角度进行了测试,详见测试博客

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

    使用了http_load进行了压力测试,详见测试博客

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

    在软件效能的测试方面,主要通过请求时间的分析进行衡量。使用了http_load进行了压力测试,详见测试博客。由于软件的实际运行过程中,实际的并发量并没有达到测试中使用的并发量,因此并未能明确体现出压力测试的作用,但是压力测试指出了限制系统并发量的部分,指明改进的方向。

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

    服务器上更新接种机构时会中途中断,无法一次完成所有更新,因此我们降低了接种机构的更新频率。

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

    在bug的记录方面,可以和commit的记录进行关联,方便对bug的追踪。

总结

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

​ 量化管理级。

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

​ 创造阶段。

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

​ 在文档的管理和规范上有待进一步加强以及开发工具使用(比如git)的规范性还可以进一步提高。

对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例。
  • 主张简单。在Beta阶段的目标的建立中,团队就一致通过了先完成基本的显示功能,复杂的分析功能后续继续添加的开发目标,以提供一个能正常服务的项目为最低要求。
  • 快速反馈。得益于例会以及微信群,在开发过程中产生的问题都能及时通知到个人,在一天之内解决问题。
正如我们前面提到的, 软件的质量 = 程序的质量 + 软件工程的质量,那团队在下一阶段(如果有)应该如何提高软件工程的质量呢?
  1. 代码管理的质量具体应该如何提高? 代码复审和代码规范的质量应该如何提高?

    代码的管理上需要加强对代码的复审,在条件允许的情况下要以团队为单位对代码进行审核,同时对代码规范进行更加详细的约定,形成文档供团队参考。

  2. 整个程序的架构如何具体提高? 如何通过重构等方法提高质量,如何衡量质量的提高?

    针对压力测试的结果,对薄弱的环节进行改进(必要时进行重构)。完成后,使用回归测试的方法,验证该部分在性能上有无明显提高,以此提高程序的质量。

  3. 其它软件工具的应用,应该如何提高?

    增加对CI/CD工具的使用,使用相关的开发测试工具辅助开发的进行。

  4. 项目管理有哪些具体的提高?

    issue的划分需要依据实际情况进行考虑而非均匀的划分。充分的利用issue的讨论功能。

  5. 项目跟踪用户数据方面,计划要提高什么地方?例如你们是如何知道每日/周活跃用户等数据的?

    在用户的数据方面,使用CNZZ平台进行跟踪统计。

  6. 项目文档的质量如何提高?

    目前团队的相关文档更新不够及时,下一阶段会在更新的频率上做出改进。同时对测试计划也形成相关文档。

  7. 对于人的领导和管理, 有什么具体可以改进的地方?
    • 任务的分配做出更详细的记录,比如:提前完成或出现了推迟
    • 开发进度落实时要稍微push一下团队成员
  8. 对于软件工程的理论,规律有什么心得体会或不同意见? 请看阅读作业。 (这个作业的期中阅读)

    要保证项目的顺利完成首先需要规范化的管理,包括:如何分配任务、如何验收、团队如何解决问题等,规范化的管理可以最大程度上避免意外事件的发生,增强团队的稳定性。其次,团队是否团结也是影响项目质量的重要因素,团队同心同德才能高效的完成预定开发计划。

讨论照片

posted @ 2021-06-24 23:25  助教团队  阅读(54)  评论(2编辑  收藏  举报