《构建之法》(八)

这次继续第十五章的内容。这章主要

第15章  稳定和发布阶段

一、从代码完成到发布

一个软件团队经历了计划/设计/开发等阶段, 达成代码完成 (Code Complete) 这一目标。

1、软件团队的血型

    A型:他们知道优秀的软件公司会发布有已知缺陷的软件;

    B型:他们不相信这一点;

    O型:他们不知道这一点,因此嘴巴惊讶成O型;

    AB型:他们对于自己开发的软件是A型,对于别人开发的软件是B型。

 常用的名词:

 Alpha、Beta、ZBB(Zero Bug Build)、RC(Release Candidate)、RTM(Release To Manufacturer)、RTW(Release To Web)

 

2、会诊小组(Triage  Team)  软件团队的各个角色代表 (pm/dev/test/UX 等) 组成会诊小组。处理每一个影响产品发布的问题。

 

3、按时发布的招数:

  招数: 设计变更(Design Chang Request)  经过Alpha / Beta阶段后,通过用户的反馈,对原来的设计进行改进。

  招数: ZBB  团队要有把bug 都搞定的执行力。

  招数:最后回归测试

  招数:砍掉功能

  招数: 修复bug 的门槛逐渐提高

  招数:逐步冻结

 

二、不同频率不同覆盖范围的渐进发布

  一般来说,后发布的版本事前一个版本的升级。比如Windows 10 的发布,采用不同目标人群+不同发布频率的方式。

 

三、发布之后---事后诸葛亮 会议

  在软件开发周期结束后,对软件开发的流程进行解剖分析的过程。结果是找出问题的根源。

 

四、项目回顾模板

设想和目标

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

2.  是否有充足的时间来做计划? 有时间,但是大部分人并不知道如何利用这一段时间来做计划。

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

 

计划

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

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

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

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

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

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

 

资源

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

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

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

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

有什么经验教训?

 

变更管理

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

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

3.  项目的出口条件(Exit Criteria)是否得到清晰的定义? 

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

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

 

设计 / 实现

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

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

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

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

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

 

测试 / 发布

1.  团队有没有测试计划?为什么没有? 

2.  有没有做过正式的验收测试?

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

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

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

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

 

总结

根据上面的这些问题作出相应的讨论和回答,提出意见和建议,并将其汇总整理。

 

posted @ 2017-06-27 20:41  柯艾  阅读(137)  评论(0编辑  收藏  举报