从软件工程诞生的那一天起,各种生命周期及模型不断涌现,在敏捷出现之前,曾经有很多非敏捷的方式。
将敏捷看作一个极端,在PMI的《敏捷实践指南》中,将其对应的另一个极端称为预测型。
“另一种理解不同项目生命周期的方法是,使用一个连续区间,从一端的预测型周期到另一端的敏捷型周期,连续区间中间还有更多的迭代型周期或增量型周期。”
——PMI《敏捷实践指南》,2018
可以基于“交付频率”和“变更程度”两个坐标轴对4种生命周期模型进行划分,如图1-4所示。
任何一个生命周期都不可能完美地适用于不同类型的项目。相反,每个项目都能在连续区间中找到一个点,根据自己的项目特征,找到最佳平衡点。
图1-4 生命周期的连续空间
4种生命周期的特征如表1-1所示。
表1-1 4种生命周期的特征
1.预测型生命周期
预测型生命周期预计会从高确定性的明确的需求、稳定的团队和低风险中获益,如图1-5所示,因此,项目活动通常以顺序方式执行,我们也称之为“瀑布开发”。
图1-5 预测型生命周期
在预测型生命周期中,团队需要先确定详细的需求范围,根据各种限制因素,制订详细的计划后,再按计划顺序执行,实现交付。这种方式首先必须控制变更与风险。预测型项目强调根据职能部门划分顺序工作,通常在项目结束前才能一次性交付商业价值。如果遇到不可控的需求变更或者技术风险,则预测型项目可能会失败,要么超出工期,要么超出预算,要么需求范围蔓延。
2.迭代型生命周期
在迭代型生命周期中,首先进行需求的确认与分析,然后多次通过原型或概念的反复验证来逐步开发产品,如图1-6所示。团队可以根据反馈调整工作思路,这样有利于识别和减少项目的不确定性。
图1-6 迭代型生命周期
当项目复杂性高、需求变更频繁时,采用迭代型生命周期会有优势。在迭代型生命周期中,商业价值交付通常需要较长的时间,因为它是为学习而优化的,而不是为交付速度而优化的。
3.增量型生命周期
许多客户或项目无法等待所有的事情全部完成,在这种情况下,客户愿意接受整个解决方案的一个部分。这种少量可交付成果的频繁交付称为增量型生命周期,如图1-7所示。每个增量型生命周期都会包含预测型生命周期中的所有活动。
4.敏捷型生命周期
敏捷型生命周期在增量型生命周期的基础上增加了新的控制方式——基于迭代的敏捷与基于流程的敏捷,如图1-8所示。
图1-7 增量型生命周期
图1-8 敏捷型生命周期
在基于迭代的敏捷中,团队以迭代(相同持续时间的时间盒)形式交付完整的功能。首先,团队集中于最重要的一组功能,作为一个团队,合作完成其工作;然后,团队集中工作于下一组最重要的功能,每次交付的增量大小相对稳定。这种方法典型的代表实践是Scrum框架。
在基于流程的敏捷中,团队将根据自身能力,从待办事项列表中提取若干功能开始工作,而不是按照基于迭代的进度计划开始工作。无须利用迭代定义计划和审核点,而由团队和业务相关方决定规划、产品评审与回顾的最佳实践节点。每次交付的增量可大可小,这种方法典型的代表实践是看板方法。
除了以上4种生命周期,还有螺旋式、V模型等,这里不再赘述。