此作业要求:http://edu.cnblogs.com/campus/nenu/2019fall/homework/10005

组名:扛把子

组长:孙晓宇

组员:宋晓丽、梁梦瑶、韩昊、刘信鹏

扛把子   “PSP小能手”项目

Postmortem结果

设想和目标

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

答:“PSP小能手”这一项目是基于腾讯微信的生成psp表小程序,使用者在上面进行工作任务计时最终生成一张PSP表。该项目当下主要是解决用户(软件工程课上群体)的例行报告,提高用户完成作业的效率和准确度。目前项目的使用群体小但定位准确,对该项目未来宏观的典型用户和典型场景在 选题Scrum例会报告的需求分析 部分中有清晰的描述。

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

答:有充足的时间,我们的小组成员在选题前进行前对项目进行了评估和研究,并且对小组成员所掌握的技术手段有一定的认知。在确定选题后,我们进行了典型用户和典型场景的定义,并且在整个项目制作过程中,我们各自发挥了各自优势,并且各自都分配了相对擅长的任务,大大提高了效率,节省了时间。

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

答:首先,在每周作业发布后的首次例会中,我们会对上一周的工作进行总结,并且对新一周的任务进行细化分工(截止时间精确到小时)。在做讨论决定时小组成员各抒己见,保证每一个成员的民主平等,提出建议后组长组织组员进行分析并投票(投票的形势遵循少数服从多数的原则)以保证好的建议能够被得以实行。

4.用户量、用户对重要功能的接受程度和我们事先的设想一致吗?我们离目标更近了吗?有什么经验教训?如果历史重来一遍,我们会做什么改进?

答:截至β阶段结束,我们的产品预计的15用户(不含项目涉及人员)目标达成,用户在使用项目后为我们提出了许多宝贵的意见例如日志时态提示不合理、计时状态机不明显等,通过与用户的交流我们了解到了用户的需求同时也得到的大多数用户的肯定,所以用户对于主要功能的接受程度和我们事先设想一致。

我们离目标确实更近了,目前该项目已经实现了预期的主要功能,结合用户的建议后期我们会对项目继续优化。

经验教训是团队开发中在实现特定功能时要学会变通,不能钻牛角尖。在设计过程中,我们常会遇到让大家耗费大量时间但难以解决的问题,这个时候不能故步自封,要学会请教他人以及查询是否有其他方法可以解决此类问题。

如果重来一遍,我们会在设计阶段做更多的用户需求调研,以设计出更能迎合普遍大众使用习惯的产品。

计划

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

答:原计划的工作已经全部完成,并且综合股东意见后,对产品设计、功能缺陷和不足已完成修改。

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

答:没有,价值大小是相对的,我们产品的各个功能模块,虽有主辅之分,但缺一不可。

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

答:是。我们对于任务的分配非常谨慎并且非常详细,在每周例会上通过讨论分配任务后,会在当日立即公布在leangoo,看板上对任务的负责人,截止时间等均有清晰描述。在组员任务完成时会通过微信群的方式面向全组进行公示,其他人员会针对该组员完成的任务进行讨论。

4.是否项目的整个过程都按照计划进行?

答: 是的,我们通过对于项目功能以及作业完成的切割,合理的分配给特定的组员。在任务截止前,组员有权利义务在可能无法完成任务时进行组内求助,其他成员同时也有权利和义务对出现的问题进行讨论并提出解决的办法,整个过程中我们始终按照原有计划执行,并执行的相对良好。

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

答:我们的项目预留了缓冲区。因为我们小组是按模块划分任务的,所以会给任务设置一个较早的deadline,以方便组内成员检查修改。缓冲区的作用是为不能按时完成计划留有缓冲,给我们有条不紊的完成计划任务提供保障。

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

答:每周的任务要根据实际情况决定,在任务分配时我们会尽量保证合理,但不存在出现变动的情况,例如比较复杂的任务需要更多人员的配合以及更多时间的消耗。

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

答:我们学会了要悉心听取他人意见,并合理对人任务进行划分。如果再来一遍,我们会将任务分配更加合理,并且在组内人员无法攻克的问题上,会及时请教他人,并权衡他人提出的建议。

资源

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

答:有的。 网络上有关于小程序开发的教学视频,身边有大量从事相关行业的老师和朋友。

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

答:在任务的分配时,成员首先要熟悉任务,任务的分配会根据成员自身的实际情况进行。所以组内会有一个时间诉求,该诉求会经过组内分析确保成员能在自身条件满足并不影响整体项目进行的情况下进行,精度会根据每天课余时间的多少有所不同,一般精确到天。

3.用户测试的时间,人力和软件/硬件资源是否足够?

答:足够。

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

答:没有。组内的任务分配会参考个人能力与个人兴趣两个方面考虑。在熟悉任务的过程中有非常明确的标准,所以在任务分配时进行的十分顺利且精致。

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

答:经验教训是在遇到问题时要尽早提出来,依靠团队的力量解决问题会事半功倍的结局问题。在遇到难题时不该把解决问题局限在某个人上,而是该分享给组内甚至组外的人。

如果重来一遍的话在分配任务的同时会关注每一个任务的进度,并在过程中及时沟通,及时查找方法乃至请教他人。

变更管理

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

答:是的。

每次会议大家都会汇报自己的工作进度和工作情况。并且在课余时间会经常在微信群里进行讨论。

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

答:我们根据功能的重要程度和难易程度,如果是关系到后续发布的核心功能那么必须做到按时实现。对于工作量大以及暂时不具备能力完成的功能模块,经组长和组内人员协商可以进行推迟。

3. 项目的出口条件(ExitCriteria)有清晰的定义吗?

答:我们认为实现了预期,本项目的预期就是先期实现记录时间以及PSP表格。

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

答:能。我们的组员结构清晰,很多时候都是结伴任务,有良好共同。并且对于紧急的变更我们会通过电话的方式通知大家进行线上讨论或是线下会议。

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

答:是的。大家是团队协作,对于出现的意料之中的工作情况有很及时的沟通。

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

答:我们学到了在团队开发的过程中一定要做到将心比心,在确保自己任务完成的同时要关注整体项目的进行,融洽的气氛和广泛的交流是一个团队成长的关键。

如果历史重来一遍,我们会提升对于项目的责任感,在过程中多多交流。

设计/实现

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

答:β阶段的设计工作在α阶段结束后,由各组内成员,总结α阶段发布会各股东的修改建议后完成的。

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

答:有。根据问题的性质和类别,有组内成员进行讨论和分析,并权衡分析结果的优势和劣势后进行组内投票,遵照少数服从多数的原则决定最后结果。

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

答:产品设计之初,制作了程序流程图和简易产品模型,帮助各成员熟悉产品的一个实现逻辑,并在开发过程中,做到更有目标。

4.什么功能产生的Bug最多,为什么?

答:在实现时间记录的问题上我们出现了在暂停后二次计时,而开始时间定格为更改为第二次计时时间的情况。原因是在代码设计时出现的判断错误已经前期的测试不够全面。

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

答:代码规范没有拟定,主要依据微信小程序开发编码规范。代码复审主要是项目整合之后,产品上线之前,通过代码互查、组内个人代码分享的形式进行了复审。

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

答:在产品的设计前要做好市场调研,去了解用户的 需求,以及用户所处在的环境。已经在每个功能的实现如何对用户去进行引导和帮助。

如果重来一遍,我们会让自己的产品更加亲民,充分了解用户的感受,与此同时要增加严格的代码规范。

测试/发布

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

答:团队测试主要是前期的代码自测、中期的代码互测、后期的整合测试组成。

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

答:产品上线之前,微信小程序IDE提供真机测试功能,我们的产品主要依据开始阶段对各模块的定义进行真机测试。

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

答:没有。

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

答:β阶段性能分析利用微信公众平台的性能分析工具。

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

答:在PSP2.0发布的过程中我们遇到了项目代码审核无法通过的问题。官方给出的原因是项目有“违法,涉黄”嫌疑,并附上了带有相关关键字的图片。这是我们意料之外的,2.0版本中我们对图标界面等进行了大量升级,但由于该特殊原因在为期两天的过程里无法进行发布。但我们的技术人员巧妙地在代码中加入了官方的安全接口,最后通过漫长的审核,最后发布成功。

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

答:经验是要做好完整的计划,把项目的 细节尽可能的做到最好,保证项目发布的同时更加要保证项目的质量。

如果重来的话,我们会制定周密的计划,做好测试,并跟踪软件的效能。

团队的角色,管理,合作

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

团队的组长是小组成员共同商议决定的,其他人的角色,根据划分的任务,每个人选择自己擅长的范畴,可以做到人尽其才。

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

团队之间存在很多互相帮助,线上主要依靠微信群、QQ群实时沟通;线下立会时间面对面交流问题。

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

如果出现问题,大家会在每天的站立会议上,及时反映并进行讨论,共同相处解决方法。

4.每个成员明确公开地表示对成员帮助的感谢,链接整理如下:

刘信鹏:https://www.cnblogs.com/liuxp775/p/11871378.html

总结:

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

CMMI二级,制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验,建立了基本的项目管理过程来跟踪费用、进度和功能特性。

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

我认为我们团队目前处于规范阶段。

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

对产品定位更加明确,对软件工程课程理解加深。

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

目前需要改进的是各成员的工作安排的合理程度,以及各成员对风险预测和把控能力,因为每个成员实际情况不同。

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

在敏捷开发原则之下,小组做的最好的主要体现如下:
原则四、五、六:项目过程中,所有成员都在一起进行主要模块的开发;各成员相互激励,互相给予所需要的环境和支持,并且对彼此互相信任;每天进行立会,保证每天面对面的交谈和沟通
原则七:我们在每一个阶段,都能发布实际可运行的项目,并且功能会在前一阶段进行更新。
原则十:不管是产品还是开发过程都做到简洁,尽可能保证核心功能产出的同时减少不必要的工作。

最新文章

  1. sql server实现自定义分割月功能
  2. migration integer limit option
  3. 数据结构与算法(1)支线任务2——Basic Calculator
  4. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13: ordinal not i│ n range(128)
  5. GSON解析
  6. tostring() 作用
  7. careercup-栈与队列 3.6
  8. JS高程5.引用类型(5)Array类型的操作方法
  9. 使用Func<>和Action简化委托
  10. MacTex XeLaTex xdvipdfmx:fatal: pdf_ref_obj(): passed invalid object. 报错的解决方法
  11. RabbitMQ入门-消息派发那些事儿
  12. JavaScript tips ——搞定闰年
  13. socket通讯,TCP,UDP,HTTP的区别
  14. javasrcipt的作用域和闭包(二)续篇之:函数内部提升机制与Variable Object
  15. Linux 独立启动方式安装 Archiva
  16. BZOJ1087 [SCOI2005]互不侵犯King 状态压缩动态规划
  17. vue接口地址配一个全局的
  18. NO--12模拟服务器端请求之node.js
  19. linux 之awk命令详解
  20. Git 基础 —— 常见使用场景

热门文章

  1. org.thymeleaf.exceptions.TemplateInputException: Error resolving template 报错
  2. 01 Python简介、环境搭建及包管理(一)
  3. webpack 4.x 初级学习记录
  4. SpringBoot整合Redis(一)
  5. 构建企业级数据湖?Azure Data Lake Storage Gen2实战体验(下)
  6. docker安装sshd
  7. 明解C语言 入门篇 第三章答案
  8. netcat的使用
  9. 关于JQUery.parseJSON()函数的知识札记
  10. CSPS模拟 83