Alpha - Postmortem
Alpha - Postmortem
NewTeam 2017/11/18
设想和目标
返回目录
1. 软件要解决的问题
我们要解决方便用户在手机上使用博客园班级博客的问题。在功能规格说明书中对需要解决的问题、典型的用户和典型的场景有清晰的描述。
2. 是否达到目标
实现了原计划的Alpha阶段的功能,比较顺利的按照原计划的时间交付,没有达到原计划的用户数量。
3. 用户量, 用户对重要功能的接受程度
用户量没有达到预期,可能的原因的宣传和推广做的不够好。用户比较能够接受现有的功能并且表示愿意尝试下个版本带来的改进,用户反馈了一部分在测试阶段没有发现的bug。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 尽早考虑发布和用户记录相关事宜,对用户记录功能进行充分测试,解决掉问题。
- 在进行用户调查时应该采用问卷调查和用户访问等多种方式,不应该浮于表面。
- 应该找到更好的推广方式,加大推广的力度。
计划
返回目录
1. 是否有充足的时间来做计划?
用了充足的时间对开发阶段做了计划,并且在开发过程中根据实际的进展对开发计划进行了调整。
2. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
确定计划的流程是由项目经理提出计划,团队成员一起讨论、修改和确认。成员的意见通常没有明显的冲突,对于不同意见,一般会根据进展状况、人员分工、时间要求等客观因素进行协调。
3. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
基本完成了,但是部分功能在发布之后发现了一些问题,在继续接受反馈和进行修复。
4. 有没有发现你做了一些事后看来没必要或没多大价值的事?
没有,所做的都是最基本的功能和最基本的工作。
5. 是否每一项任务都有清楚定义和衡量的交付件?
是。通常一个功能会由三个任务组成:API的测试、包装和界面的搭建、切换、数据的显示以及对功能的测试,由不同的成员完成,两个任务都完成后,可以实现功能,经过测试人员测试,认为功能比较完整。每个任务完成后能够看到一定的成果。
6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
基本按照计划进行,但是在实现登录功能时API的调用一直不成功,导致登录功能一直不能实现,涉及到修改和权限的功能也受到一定影响。
用户记录异常。在正式发布之前用一个测试app对用户记录功能进行了测试,但是正式发布后的数据出现异常
7. 在计划中有没有留下缓冲区,缓冲区有作用么?
Alpha阶段的计划中没有明确的缓冲区,但是周末没有Scrum Meeting,任务也相对较少,可以认为是用来休息以及完善之前任务的缓冲区。
8. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
Beta阶段有其他的大作业,可能投入到项目中的时间不能够保证。下一步的计划中会延续之前给每个功能的完成设时间节点的做法,在每个节点前中找一个尽量所有人都有空的时间作为缓冲区,集中完成任务。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 尽早考虑发布和用户记录相关事宜,对用户记录功能进行充分测试,解决掉问题。
- 发布之前及早开始进行更加全面的测试。
- 应该找到更好的推广方式。
资源
返回目录
1. 我们有足够的资源来完成各项任务么?
有五个人,三个人负责开发,一个人负责测试,每个人都能配置好环境,且不需要后端的开发,资源相对比较充足。但是五个人都没有用来开发IOS的设备。
2. 各项任务所需的时间和其他资源是如何估计的,精度如何?
由于不需要后端,只需要对API进行调用,而且现阶段前端的工作在难度上没有太大的差别,所以基本是以页面为单位进行估计的。除了登录功能的部分基本比较准确。
3. 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
用于测试的时间和人员安排不够合理,在稳定和发布阶段把测试的任务交给了人测试员一个人,可能有些方面测试不够充分,alpha版本发布后收到了一些bug反馈。
没有,项目经理可以担当除开发和测试以外所有的工作,beta阶段会对美工设计进行更过的改进。
4. 你有没有感到你做的事情可以让别人来做(更有效率)?
各个成员担当着自己的责任,任务的分配相对来说比较均衡,其中测试人员对测试中所做的工作更为了解,所以最终由测试人员完成了测试计划和测试报告,比由项目经理完成更有效率。
有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 低估了测试的工作量,应该及早开始测试,并且在稳定和发布阶段对人员的分配进行适当的调整,加大测试的力度,尽心更全面的测试。
变更管理
返回目录
1. 每个相关的员工都及时知道了变更的消息?
是的,通常变更会在Scrum Meeting中由大家一致决定或者在群里进行讨论,或者由项目经理告知相关人员。
2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
正式开发之前进行了问卷调查,实际的了解了班级博客中使用相对较多的功能,把这些功能作为必须实现的基本功能,其他进行改进的功能和不常用的功能作为可以推迟的功能。另外有些现阶段实现起来较为困难且可能影响整体进度的功能也被推迟,可能成为alpha阶段的bug。
3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
能够在大多数手机上稳定运行,正常使用基本功能。
4. 对于可能的变更是否能制定应急计划?
在多个平台进行发布,包括一些审核条件较为宽松的平台,避免所有平台的审核都不通过。
但是用户记录出现的问题始料未及,并且至今没能解决。
5. 员工是否能够有效地处理意料之外的工作请求?
Alpha阶段的开发过程中基本没有较大的变更,遇到的技术问题基本能够比价顺利的解决。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 尽早考虑发布相关的事宜,事先了解不熟悉的流程。
设计/实现
返回目录
1. 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
设计工作在正式开发之前由项目经理完成,这段时间其他成员需要进行环境的配置和新技术的学习,由项目完成然后所有成员讨论、修改,是比较合适的时间和方案,但是可能不是合适的人。因为后面实际的开发过程中采用的并不是最初的架构,大家讨论之后觉得现有的架构更合适。
2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
在架构的设计方面有较多的不确定的地方,在后续的开发过程中采用了大家都认可、结构更清晰的方式。
3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
使用了Axure进行了原型设计,使用ProcessOn进行了功能分布、成员分工、整体架构的设计。能够较为清晰的呈现出项目的结构,在功能、架构上与最初的设想并不相同,在开发的过程中根据实际的进展和必要性进行了修改。
4. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
涉及网络请求的功能。发布之后发现有时候班级无法加载,有的班级加载作业列表时无法做出反应。测试过程中没有遇到类似的bug,但是这些bug的出现似乎也是意料之中,因为在开发过程中进行对API的测试和使用是遇到问题最多的环节,目前仍在寻找bug出现的原因。
5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
签入时PM会做简略的代码复审。
制定了代码规范,但是考虑到代码规范的条目过于繁琐,实际执行过程中可能占用不必要的时间,因此开发过程中仅严格执行了对可读性影响最大的命名和注释。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 设计过程中对模块的划分做的不够好,考虑不够全面。虽然也参考过成型的react native项目,但是基本都是用了其他一些框架,考虑了必要性和学习成本,并没有使用这些框架。应该征求大家的意见。
测试/发布
返回目录
1. 团队是否有一个测试计划?为什么没有?
测试人员在正式的开发工作开始之前制定了测试计划
2. 是否进行了正式的验收测试?
是。进行了场景测试、压力测试、集成测试、兼容性测试。
3. 团队是否有测试工具来帮助测试?
使用腾讯的WeTest平台,对主流的50款手机进行了兼容性测试。
4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
采用appium+python脚本的策略进行自动化测试,主要测试软件的特定功能。
5. 在发布的过程中发现了哪些意外问题?
原计划在360、腾讯和酷安网上进行发布,但是由于360和腾讯对此类app的开发者资质、版权有限制,没能通过审核。
一开始在酷安网的安全测试一直不通过,后来使用了腾讯提供的加固工具和360的签名工具对app进行了加固和重新打包在酷安网完成了发布。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
应该对测试工作更加重视,原本认为后端数据都是通过官方API获取,不可控制,导致对测试的重视程度不够,发布之后仍有bug。即使是对于获取数据过程中出现的问题,也应该进行一些处理,保证程序的稳定运行。对用户记录功能进行充分的测试和验证。
团队的角色,管理,合作
返回目录
角色确定
团队成员自己选择想要担当的角色,成员的选择倾向能够满足团队的角色需求。各成员能够发挥各自的长处:开发人员有较强的学习能力和编程能力,测试人员能够比较细致全面的对代码和产品进行测试,项目经理可以写文档,做计划,在成员之间进行沟通和协调。
互相帮助
一个功能通常会分解成2-3个任务分配给不同的成员,在完成任务的过程中遇到问题时通常会在Scrum Meeting结束后进行讨论,或当面检查代码中的问题。
我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 应该充分考虑各位成员的意见,尽可能让各位成员做自己擅长的事情。在任务分配时应该更多的给成员自主选择权,让所有成员都对项目管理拥有一定主权。
总结
返回目录
你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
第二级,一定程度上可重复类似项目的软件开发。有基本的项目管理方式,采取了一定的措施控制时间。
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
磨合阶段。团队成员能够较好的进行合作,项目能够顺利推进,但是职责定义不够明确,基本按照功能进行划分,而且下阶段将不再需要对API进行测试和包装,成员的分工需要进行调整。
对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例。
- 无论团队内外,面对面的交流始终是最有效的沟通方式:了解进度的方式是Scrum Meeting + 代码签入,在Scrum Meeting中进行交流,有协作的成员遇到问题会面对面交流,共同解决问题。
- 可用的软件是衡量项目进展的主要指标:以完整的功能为单位进行任务的划分,每个阶段都完成新的功能,从第一阶段完成开始就是可用的软件。
- 保持简明 - 尽可能简化工作量的技艺 - 极为重要:每个人基本不会同时面对多个任务,当前任务完成,当前功能实现后,才会安排新的任务。
下一阶段改进
- 更加重视测试工作,根据进度和项目所处的阶段调整测试工作分配的人力和时间。
- 制定计划时应该充分考虑各位成员的意见,发挥集体的智慧。
- 任务分配的方式应该更加灵活,充分发挥各成员的优势。
- 应该多做一些风险管理,考虑所有环节可能出现的问题,准备备用方案,以避免影响进度或最终效果。
博客要附上全组讨论的照片。
Alpha - Postmortem的更多相关文章
- UltraSoft - Alpha - Postmortem 事后分析
Alpha阶段 Postmortem会议 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 主要是解决DDL提醒功能的问题,定义的比较清楚,对典型用户和典 ...
- UltraSoft Scrum Meeting 博客汇总
一.Alpha阶段 UltraSoft - Alpha - Scrum Meeting 1 UltraSoft - Alpha - Scrum Meeting 2 UltraSoft - Alpha ...
- Alpha阶段项目Postmortem
以下对成员名字的简称: 陈鸿超 = 陈1 陈彦吉 = 陈2 石浩然 = 石 韩青长 = 韩 1. 设想和目标 1.1 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? ...
- alpha阶段的 postmortem 报告
1. 每个成员到了第二次alpha 阶段与第一次相比,取得什么进步? 成员 黄杰 学会了app环境的搭建和代码的基本理解 李炫宗 更加明白安卓代码的编写和理解 康取 对安卓界面的设计有一些了解 ...
- Alpha阶段项目Postmortem会议总结
(一)设想和目标 1.我们的软件要解决什么问题?是否定义的很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要解决总是不知道在什么时间该做什么事情,或是老是忘记做一些事情的问题,通过添加事件 ...
- 6th Alpha阶段的postmortem报告
组名:好好学习(代组长发布) 会议重要内容记录: 1. 尝试在beta阶段实现的功能,与alpha阶段相比的优势 (1)更改软件现有的bug: 1)软件的账目只能输入,但是一旦发生失误却无法更改和 ...
- 【Alpha】Phylab2.0: Postmortem
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 主要解决同学们写物理实验报告时,处理数据的困难--巨大的计算量和不规范的物理报告数据处理格式.典型 ...
- Alpha版本——Postmortem会议
No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 设想和目标 1.我们的软件要解决什么 ...
- alpha版postmortem 报告
一.团队开发存在的问题 此次会议我们团队中每个成员都仔细思考并提出了团队在这一阶段存在的问题,主要如下: 1.前期任务规划.分配不合适: 2.个人对认领任务模块完成度.了解度不够: 3.个人学习意识. ...
随机推荐
- Laravel框架定时任务2种实现方式示例
本文实例讲述了Laravel框架定时任务2种实现方式.分享给大家供大家参考,具体如下: 第一种 1.生成一个commands文件 > php artisan make:command test ...
- 20155305 2016-2017-2 《Java程序设计》 实验五 Java网络编程及安全实验报告
20155305 2016-2017-2 <Java程序设计> 实验五 Java网络编程及安全实验报告 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传 ...
- 20155330 实验二 Java面向对象程序设计
20155330 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- 【BZOJ3142】[HNOI2013]数列
[BZOJ3142][HNOI2013]数列 题面 洛谷 bzoj 题解 设第\(i\)天的股价为\(a_i\),记差分数组\(c_i=a_{i+1}-a_i\) 则 \[ Ans=\sum_{c_1 ...
- The filename 未命名.ipa in the package contains an invalid character(s). The valid characters are: A-Z, a-z, 0-9, dash, period, underscore, but the name cannot start with a dash, period, or underscore
The filename 未命名.ipa in the package contains an invalid character(s). The valid characters are: A-Z ...
- 【一】H.264/MPEG-4 Part 10 White Paper 翻译之 Overview of H.264
翻译版权所有,转载请注明出处~ xzrch@2018.09.14 ------------------------------------------------------------------- ...
- JavaFX 学习笔记——jfoenix类库学习——raised风格按钮创建
创建按钮 JFXButton jfxb = new JFXButton("hello"); jfxb.getStyleClass().add("button-raised ...
- 在Unity中使用带碰撞体的TiledMap
虽然最近Unity2018版本推出了自己的瓦片地图,但是这个瓦片地图有点BUG,在场景内把瓦片地图铺好做成预制体,动态生成的时候居然丢失了碰撞体,于是我决定还是使用Tiled软件绘制地图并使用Tile ...
- Python爬虫下载Bilibili番剧弹幕
本文绍如何利用python爬虫下载bilibili番剧弹幕. 准备: python3环境 需要安装BeautifulSoup,selenium包 phantomjs 原理: 通过aid下载bilibi ...
- 3星|《给你讲个笑话:我是创业公司CEO》:创业成功就是上帝掷骰子
给你讲个笑话:我是创业公司CEO 作者有过数次创业经历,最后一次在济南创业,后来公司搬到北京,看书中的交代公司目前好像还不算太成功.书中交代作者公司的业务是文化产品的策划,没细说做什么,也没说做成过哪 ...