这个作业属于哪个课程 2021春软件工程实践S班 (福州大学)
这个作业要求在哪里 团队作业六——beta冲刺+事后诸葛亮
团队名称 青青草原
这个作业的目标 完成beta冲刺
其他参考文献

目录


设想和目标

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

  • 我们的软件要解决大学生对花销没有计划,没有度量的问题。定义得很清楚,目的就是通过记账和分享优惠的信息来达到让大学生节约开销,对经济的使用有掌握。典型用户有如当代大学生,典型场景即开销后,将账单计入进我们的小程序,我们可以形成相应的图表,进行额度提醒,并可在社区中获得优惠小妙招等信息,来提高对花销的计划能力。

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

  • 我们在设计阶段有设计四个模块,记账、记事、社区、个人中心。在alpha阶段我们原定计划即完成记账、记事、个人中心三个模块。成功达到目标,并在alpha阶段作业定的截止时间交付。

我们离目标更近了么?有什么经验教训? 如果历史重来一遍, 我们会做什么改进?

  • 离最终完成项目近太多了,经验教训是前后端交接一定要仔细,如在alpha阶段时折线图和账单列表中周数是从1开始,在记账界面记录时是从0开始计算,就导致了数据获取错误的bug,很难发现,这在我们最后即将提交作业时才发现。如果历史重来一遍,我们会在各个需要数据交互的地方更加认真的去核对。

计划

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

  • 算上之前一个月的需求分析和设计,我们又十分充足的时间来做计划。

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

  • 在计划阶段开始前,我们会开一次总的alpha冲刺会议,在这个会议上,大家商量有多少任务是需要现在完成的,并且将这些任务进行分工,在会议上出现不同意见时,大家商讨意见的合理性,进行少数服从多数的最终决定。

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

  • 大家alpha原计划工作都完成了。

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

  • 暂时没有,认为在开发中每一件事情,就算是对错误道路的探索,也算是有价值的,没有对错误的探索怎么会知道什么是正确的呢?

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

  • 有的,最终的项目,每一项模块的完成、需要的博文和文档,都有清楚的分配给某些同学负责并且最终交付。

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

  • 按照原计划进行,但是其中也遇到了很多技术上的问题,也能算作以外吧,如在真机调试上或者在编译器上还有发布后的体验版上效果不同,有些功能不能按照原定设计进行,这些风险没估计到是由于我们对小程序的新技术都不熟悉,全体成员都是第一次接触技术,最终也是在各种查询资料中,实践尝试中解决了意外。

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

  • 有留下缓冲区,在10天冲刺之后我们还剩余几天时间,可以用来整理博文、复审代码,在其中也有五一假期,大家可以利用这些缓冲区,来完善最终结果,

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

  • 在beta阶段我们依然还是留下了缓冲区,但是计划还是希望能够提前完成项目,毕竟这个冲刺时间段夹杂着3门考试,需要用缓冲区进行其他时间的解决,或者项目因为考试而拖延时,可以有缓冲区的时间(即问题中提到的加班)来兜底,保证项目的最终完成。

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

  • 时间的安排很关键,如果能够从来一遍,我们会根据已经有的经验,更合理的去安排时间,更好地利用缓冲区。

资源

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

  • 从最终结果来看,确实有够用的资源来完成任务。

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

  • 除了定好的10天冲刺时间资源,我们是根据任务模块大小来进行估计资源分配的,并且根据之前的代码经验来进行估计,精度挺高,甚至时间还有提前完成。

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

  • 有些小程序压力测试是针对企业的,需要相对大的的资金量,这部分资源不够,其他的人力和测试时间是足够的。美工设计和博客文案我们都有提前做好准备,没有轻视,所以没有低估难度。

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

  • 我们一致认为并不会,我们都是从0开始学习,对我们所做之事和技术都是针对性的学习,可能我会的别人不会,可能别人会的我不会。所以认为不会更有效率。

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

  • 就像之前一样,缓冲区很关键,无论是人力还是时间,如果历史重来,我们应该少偷懒,好好利用时间。

变更管理

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

  • 我们的信息传递主要就是通过QQ群以及每日的站立式会议

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

  • 根据功能对我们项目的重要性,是否为主要功能,来进行组内会议商讨。

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

  • 设计的功能能够实现,整个程序可以按流程正确运行一遍。

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

  • 我们没有出现一个人独揽技术大权,少了某一块就项目就运行不下去的情况,每天都会监控项目进行的进度,对可能的任务变更都可以有相应的人手顶替上。所以是可以指定应急计划的。

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

  • 是的,大家都是一个团队,互相帮助互相提携才能更好地进行,大家都很团结友善,都有自己应做的事,附加的工作请求也会接受,并尽力完成。

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

  • 有什么变更要及时通知大家,不然可能出现牵一发动全身的情况。如果历史重来会更加合理的制定计划。

设计/实现

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

  • 设计工作是在alpha开始前的原型,需求,功能设计,不同的设计是由不同的人完成,原型相对美观,需求分析相对充分,功能设计完善,所以可以认为是合适的时间合适的人。

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

  • 团队进行商议投票,少数服从多数解决。

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

  • 设计阶段时有通过UML的类图、活动图还有其他如数据流图等来帮助实现。有一些功能状态的改变,这些区别是由于设计阶段没有实际完成项目经验产生的。需要更新UML文档。

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

  • 图表分析功能BUG较多,因为要读取的数据量比较大,也有前面提到的产生了前后端交接的错误。在发布之后没有发现什么重要的BUG。

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

  • 大家都是初学,所以没有之前形成的代码习惯,严格执行代码规范,代码复审是有负责不同模块的同学交换进行的,这样比较研究

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

  • 学到了代码复查和测试要认真,如果能重来,会减少这样的bug出现。

测试/发布

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

  • 有相应的对一些功能计划测试。

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

  • 将测试验收通过提交测试文档的方式。

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

  • 使用微信开发者工具以及云开发的node.js本地调试以及真机调试等工具来帮助测试。

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

  • 没有进行压力测试。

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

  • 小程序的发布,审核不通过的问题,审核类目严格,个人类型小程序无法开发社交分享模块,以及对文本需要通过官方提供的接口的检测。我们个人没办法在短时间内申请到相关营业执照。

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

  • 学到了对于发布的事宜要提前考虑,不能等阶段项目都完成后才开始考虑,会遇到意想不到的事情。如果重来一遍,我们会提前去准备备案和审核的事宜。

团队的角色,管理,合作

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

  • 根据一开始前后端的意愿分配,再根据个人想完成的模块来进行角色确定,做到人尽其才。

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

  • 有互相帮助,包括界面设计的调整和云开发数据库调用等等,有很多类似的踩雷的地方,大家会互相交流互相帮助。

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

  • 会议商讨投票,项目不是一个人的项目,不能一人之言就决定什么,所以解决问题都会在商讨的情况下进行投票决定和解决。

总结

团队现在处于规范阶段,大家都有自己需要完成的任务,协同作战,有商有量的进行。目前最需要改进的应该是对时间的安排。

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

  • 多使用代码管理工具,减少冲突,在每次push之前都要先pull下来。对于代码复审需要不同模块间交换来进行。 这样才能提高质量。

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

  • 架构方面,可以尽量将代码写成组件的形式,方面大家进行复用,直接在组件代码中即可对全局有用到该组件的地方进行修改。减少bug、提高速度、增加稳定性即为质量的提高。

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

  • 孰能生巧,一开始只看官方文档一头雾水,现在有了实践经验后,再对官方文档进行查看熟练领会,可以有更好的提高。

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

  • 提高对任务完成进度的查看和监督,这可以减少意外情况的发生,也能及时发现困难。

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

  • 通过微信公众平台官方的后台数据统计来获取活跃数据。

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

  • 在写完之后要全团队一起审核,并提出意见更改,提高质量。

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

  • 管理和领导要尽到应有的责任,做好监督项目的适时进行情况。掌握好时间和缓冲区的安排。

对于软件工程的理论,规律有什么心得体会或不同意见?

  • 要及时汇报自己的进度,提高站立式会议的效率。利用好之前做好的文档,提高做事和编码的效率。

相关文章: