Alpha事后分析

设想和目标

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

我们的软件的功能主要是让一些基于表单识别的项目(如微软智能表单识别项目)减少在数据生成方面上浪费的时间。定义的比较清楚,对于典型用户和典型场景的描述较为清晰。
具体来说,当一个项目需要用大量的人力来完成数据生成工作的时候,就可以用到我们的项目,不仅方便快捷,还能减少人力财力的浪费。具体见功能规格说明书

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

alpha阶段我们的目标是实现一个最小可用版本,即支持简单的表单生成。经过两周的学习和代码编写、一周的测试和稳定,我们基本完成了原计划的功能。
按照原定计划进行交付,用户数量基本上差不太多。

反思:由于我们的项目的主要受众并不是学生群体,而我们在短时间内也只能在学生群体内进行宣传,所以宣传效果并不是很好。

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

无上一阶段。

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

预计的用户数量是100左右,生成的表单数量约在400个左右。
由于我们的项目受众并不是学生群体,而我们目前在短期时间内只能向同学们推广,因此软件的预期下载量很可能并不能达到相应的标准。
但值得欣慰的是,截止5月5日21:15,我们的项目创建数量达到了94个,generate的次数达到了339,除去我们的测试数据,也比较可观,这说明我们基本上完成了预期。

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

本阶段做的还算不错,改进的话大概是再早一点明确目标吧,这样会留下不少时间的缓冲期。

计划

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

有充足的时间来做计划,并在开发过程中微调。

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

计划的产生本身是由全体团队成员一起讨论得出的,每次的例会上大家都会商讨接下来的方向,由于实现功能较简单,目前并没有不同意见。

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

基本上完成了,在某些方面可能并不是做的尽善尽美,但基本上达到了alpha阶段的原定计划目标。

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

姓名的生成部分在起初统计了近年来的新生儿数据,比较繁琐还没太大的用处,后期舍弃了。

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

交付件:

  • PM:博客、issue
  • 后端:可以提供给前端的接口
  • 前端:可以提供给用户的界面

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

基本上按照计划进行。
小意外:
由于我们的项目受众并不是普通学生,因此在宣传发布时出现了一些意外,即用户量比较少。但我们随即加大了推广的力度,推(强)荐(迫)身边的朋友使用了我们的软件,收到的反响还是不错的。

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

Alpha阶段的计划中没有明确的缓冲区。但开发按部就班的进行,没有出现延期的情况。

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

beta阶段会完善alpha阶段的交互速度,并进行新功能的扩展。

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

model页面没用到,这应该算是在计划方面比较大的问题,值得重新考虑一下alpha阶段的最初预期。其次,由于我们比较信任微软的代码质量,忽略了我们接手的是一个还在开发和完善中的项目,因此没有计划修复和细致测试原项目中已经存在的bug,干扰了后期测试时对bug的定位和修复。

资源

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

暂时足够,但由于今年的课程比较特殊,线上联系并没有线下联系效率高。

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

各项所需时间估计基本准确。数据生成上花费的时间比较多,由于服务器起初是在国外,导致访问速度非常慢,也对我们的用户造成了影响。

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

测试的时间,人力和软硬件资源足够,美工方面并不需要大费周折,但还是出现了一点点小的插曲。

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

如果重来一遍我们会仔细思考在数据生成方面所使用的方法,另外也会尽早地布置好服务器。

变更管理

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

是。当有重大变化会及时通过微信进行通知,即使没有及时查看微信,至少每天的例会上也会当面讲清楚。但其实变更并不多。

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

基本可使用功能最小集为“必须实现”功能,其余都归类在“推迟”功能里。

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

有,完成最小可用版本即为出口条件,详见发布声明

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

当一个比较复杂的功能无法立即实现,且不属于最小可用版本的必要功能时,在例会上就会将其作为可推迟的功能,将该功能优先级降低。

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

能。最初并没有计划增加上传空白PDF的功能,随着测试的进行发现了这一问题,最终也顺利的解决了。

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

model页面的推迟方面,我们可能在一开始就将其放入beta阶段;生成的字体方面,由于最初出现了莫名其妙的bug,导致暂时推迟了手写字体的生成,改成了打印字体,但是后期bug又消失了,又改了回来,浪费了一些时间,如果重来,我们可能会先不考虑手写字体,将打印字体做好后在实现手写字体。

设计/实现

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

设计工作在项目冲刺开始前,由大家自由选择的,是合适的时间。开发主要分成了前端和后端两个方向,相关技术基本上大家都没接触过,因此难以评价是否是合适的人。

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

有。因为在任务发布时只是将任务的名称发出,具体实现方法和内容并没有明确,此时会在团队例会上解决或由PM协调。

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

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

数据生成方面产生了很多bug,例如生成的文字是反的等等,后期进行了分类讨论,做出了修改。
因为我们在开发的时候真的就没有想到这些情况

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

利用github复审,当前端某一个页面的代码写完时,会push到github上,然后由负责merge的同学进行复审。代码规范也是严格遵守pylint的规定进行编写。

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

在tag页面标注方面,我们现在实现的时点一次按键传一次请求,效果并不是很好,重来的话会做成一次传递多个请求的方式。

测试/发布

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

有,见测试分析

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

是,(功能规格说明书、整体测试、测试计划)

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

postman测试驱动开发

开发环境:使用VS Code和Azure Functions开发http响应函数,构建后端http服务器。
测试工具:Postman。
开发过程前端的请求由Postman模拟,对后端进行测试,整体上采用测试驱动开发的方式,根据Postman的测试请求来开发完善http服务器功能。

举个例子

生成请求:是GET请求,没必要是POST,参数需要携带项目路径信息。
1588597265696
后端基于此请求开发生成模块,接受请求后解析路径,将路径中对应的项目文件取出来,运行数据生成模块,将生成的文件存放回对应的路径。

4. 团队是如何测量并跟踪软件的效能的?

自己先做使用测试、压力测试等。然后通过用户的反馈不断地进行完善。

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

由于服务器问题引发的访问慢,让用户体验较差并进行了反馈。

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

完善测试计划、并设计好缓冲区

团队的角色,管理,合作

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

是在开会的时候自由选择的,现在来看还是可以称得上是人尽其才的。

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

成员 感谢信
ly 在本次团队作业中,合作很愉快。为了制作展示视频,我写了初稿,tzj和dxy帮助进行了修改和润色。llj帮助进行了视频录制和配音小伙伴邀请等。在测试对接后的前后端时,tzj多次帮助我测试整体项目,反馈错误和体验效果,帮助我修改了很多Bug。整合后端代码的时候,dxy同学辅助我更改代码,变更需求,不断迭代后端代码。技术上,整体思路是zyc同学提供,是我们小组的希望之花!最后感谢一下PM wyk的辛苦付出!
llj 感谢tzj同学对我的帮助,在开发前期帮助我厘清前端源代码结构,详略得当,在具体的功能实现中也提出了很有参考价值的建议;感谢zyc同学对我的帮助,为我提供了很多技术上的指导,总是很耐心地帮助我解决问题,也让我学习到了很多;感谢ly同学,活跃度up up!在后端部署和前后端对接的时候积极严谨,效率也超高!感谢dxy同学,项目的核心功能代码实现👍,后期功能不断迭代改进和修改bug高效认真,从不敷衍;感谢wyk同学,每天尽职的组织例会发布博客,灵活管理工作内容,保证项目按进度推进,确保工作中问题的及时解决以及团队的有效沟通,在答辩中也很赞!给大家撒花!!!
dxy 感谢wyk,尽职尽责当pm,感谢ly,为项目调度操心,感谢zyc,为项目解决重大难题,感谢tzj,在前端尽职尽责,感谢llj,生病依然坚持
wyk 感谢zyc同学在前期帮我搞定了github上的issue问题,ly、tzj同学在发布期间对软件的不断测试与完善,llj、dxy同学的代码编写及视频制作……感谢大家的积极性
tzj 感谢zyc对我的帮助,因为前端用到的一些代码规范化工具、单元测试工具等等都是他介绍给我的,让我省去了很多查找相关内容的时间,还有一些技术难题也都是他指导解决的;感谢ly对我的帮助, 因为端对端测试的时候,他帮助我测出了很多bug,让我能尽快的修改,而且团队交流中也经常和我一起讨论问题和前后端交接情况;感谢llj对我的帮助,因为在实现前端图标的时候,她帮助我梳理清了原项目中有关图标使用的代码结构,并且一起讨论了一些功能设计相关的问题;感谢wyk对我的帮助,因为他为我们团队组织会议,记录我们的工作进度,及时让团队中的问题得到讨论和交流。我感谢dxy对我的帮助,因为他为我解释了后端是相应的功能比如生成pdf的实现,让我更好的理解整个项目的工作流程。
zyc 感谢ly的帮助,在前后端对接中做了许多工作。

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

每日例会上大家都会进行交流,基本上当天出现的问题很快就能够得到解决。

总结:

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

我觉得团队目前处于管理级。我们对各自的分工十分明确,又统一清楚的认识;任务issues管理、每日例会以及燃尽图的管理,相对来说也比较细致。

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

介于磨合和规范之间,即将进入规范阶段。

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

在签入代码方面做好约定;尽早明确alpha阶段目标,以留出缓冲期。

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

尽早并持续地交付有价值的软件以满足顾客需求,我们在alpha阶段预期的实现较为困难时,我们做出了取舍,完成了最小可用版本的开发。

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

代码要保质保量,定期进行代码复审。
加大测试力度,减少bug出现的可能性。

讨论截图

posted @ 2020-05-08 09:37  Name+Not+Found  阅读(243)  评论(2编辑  收藏  举报