团队作业6——事后诸葛亮分析报告

发布时间 2023-12-12 18:49:22作者: Jven_sti

1 分析

1.1 设想与目标

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

  • 我们的软件为辅导员与学生的交流提供便利,提高辅导员的工作效率,方便学生联系辅导员的微信小程序,定义得很清楚。典型用户和典型场景在之前的博客中已清晰提及。

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

  • 针对于计划书中的功能全部实现,但是用户数量没有达到预估的数量。

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

  • 事实上,工程的质量并没有提高,团队合作的优势得到没有充分发挥,项目完成度不太理想。

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

  • 由于项目未能上线,无法得到用户量数据,等我们团队将最后一些问题解决并把项目上线后,我相信用户接受程度应该比较高。我们离目标已经不远了。

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

  • 这次团队开发的过程中,人员工作分配不是特别合理。前期太拖沓,工作全堆到中后期去做,导致比较赶时间。每个人的分工也不够明确,负责的模块数量不合理。如果能重来一遍,我们一定会在整个项目开始前明确项目的全局内容,合理分配工作模块。

1.2 计划

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

  • 有十分充足的时间来准备我们的计划

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

  • 及时沟通,每个人都会发表自己的意见,然后团队投票采取较好的计划

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

  • 并没有做完。由于技术原因,后台数据暂时不能和前端交互

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

  • 有,在决定做微信小程序后,后台人员就去网上学习小程序后台内容。然而实际上只需用原来学过的知识就可以完成,浪费了不少时间

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

  • 是的

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

  • 不是,意外和风险主要是出现在后台数据无法与前端交互,因为我们团队是第一次接触小程序开发,对于项目部署方面不太熟悉,导致没能完成

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

  • 有,留出一段时间进行bug排查,但是没用上,因为项目还没完成

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

  • 更加细致地给每个人划分工作模块,督促成员完成各自的工作。合理安排时间,预留更多的缓冲区

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

  • 学到了如何进行团队合作,如果历史重来一遍,预留更多的缓冲区

1.3 资源

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

  • 人力资源:团队成员有5名,分别负责前端开发、后端开发、UI界面设计、项目总体架构,人数充足
  • 开发资源:都是在网上搜资料边学习边开发
  • 设备资源:人手一台电脑
  • 时间资源:充足

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

  • 按照每个人的能力大概估计,精度一般

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

  • 资源足够,并没有低估美工设计/文案的难度

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

  • 没有,每个人都是做自己擅长的方面

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

  • 应该在项目开始前提前想好所需的资源,这样就不会占用开发阶段的时间。

1.4 变更管理

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

  • 是的

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

  • 开会讨论

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

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

  • 能,结合git的使用变更计划

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

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

  • 学到了如何处理意料之外的计划,兵来将挡水来土掩。

1.5 设计/实现

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

  • 设计工作在项目开始前完成,由整个团队共同讨论得出。是合适的数据,合适的人

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

  • 碰到过,对于界面UI的设计不清晰,通过开会讨论解决

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

  • 没有运用单元测试,TDD,UML等其他工具

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

  • 预约功能产生的Bug最多,因为这是项目中最核心的功能,实现难度较大。由于团队的编程经验都不多,对于类似的情况无法预料

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

  • 主要是测试各部分功能是否可以正常运作,在修改bug的时候严格执行了代码规范

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

  • 在开发过程中,提高了编程能力和设计思维,学会了团队合作。如果能重来一次,一定会把每个人的能力充分发挥

1.6 测试/发布

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

  • 有测试计划

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

  • 没有进行正式的验收测试,我们进行了简单的测试,而且小程序测试有点复杂,需要通过大量审核

(3)团队是否有测试工具来帮助测试?
很多团队用大量低效率的手动测试,请提出改进计划:至少一个方面的测试要用自动化的测试工具,自动化的测试结果报告,比较测试结果的差异,等等。

  • 微信开发者测试工具

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

  • 通过微信开发者测试工具,没有压力测试,有用,暂时无改进

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

  • 项目未能实现后台数据与前端交互,尚未发布

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

  • 学会了如何使用测试工具

1.7 团队的角色,管理,合作

(1)团队的每个角色是如何确定的,是不是人尽其才?

  • 根据每个人擅长的方面确定角色,是人尽其才

(2)团队成员之间有互相帮助么?

(3)当出现项目管理、合作方面的问题时,团队成员如何解决问题?

  • 及时进行开会讨论

2 总结

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

  • 属于CMMI二级

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

  • 萌芽,因为是编程小白凑出来的队伍

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

  • 这是我们团队第一个里程碑,希望日后能越来越好

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

  • 每个人的开发能力

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

  • 前、后端开发完全分离,只通过接口进行交互

正如我们前面提到的, 软件的质量 = 程序的质量 + 软件工程的质量,那团队在下一阶段应该如何提高软件工程的质量呢?

(1)代码管理的质量具体应该如何提高? 代码复审和代码规范的质量应该如何提高?

  • 使用github、码云等托管代码。努力学习,规范代码。

(2)整个程序的架构如何具体提高?

  • 更加具体的分析项目各个部分

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

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

  • 进度和质量需要提高

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

  • 项目未发布,无法跟踪用户数据

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

  • 努力学习如何写项目文档

(7)对于人的领导和管理, 有什么具体可以改进的地方?

  • 应该选举一个有大局观并且懂管理项目的人

3 团队讨论的照片

image

4 团队成员在Alpha阶段的角色和具体贡献

成员 角色 团队贡献分(10分制)
温杰文 架构、开发 3.34
郑嘉涛 开发、测试 3.33
张怡峰 开发、测试 3.32