1.1 背景——敏捷伸缩模型
为什么需要规范敏捷交付(DAD)这一过程框架呢?要理解这一点,必须首先认识自己所面临的现实情况。敏捷伸缩模型(Agile Scaling Model,ASM)提出了一个情景框架(contextual framework),它定义了一个路线图,旨在有效地裁剪和应用敏捷策略,应对敏捷软件开发团队面临的独特挑战。实现可伸缩敏捷策略的第一步是采取规范的敏捷交付周期,把主流敏捷方法中的软件构造策略扩展成为一个完整的过程,从而全程覆盖从最初的项目启动到最后的生产环境部署。下一步是认识哪些伸缩因素适用于自己的项目团队,然后对自己的策略进行裁剪,最终解决团队面临的一系列复杂问题。
如图1.2所示,敏捷伸缩模型把过程定义为三类。
1)核心敏捷开发。核心敏捷方法,例如Scrum、XP和敏捷建模(Agile Modeling,AM)专注于以产品构造为主的活动。它们的特点在于价值驱动的生命周期,即高度协作的、自组织(self-organizing)团队可定期生产出高质量的、潜在可交付的软件。它主要面向的是工作地点集中、开发简单软件的小型团队(少于15个成员)。
2)敏捷交付。这些方法,包括本书描述的DAD过程框架以及Harmony/ESW等,致力于从项目启动到生产环境部署的完整交付生命周期。在这些方法中加入了适用的精益治理策略,为自组织团队提供了均衡策略,还把风险驱动的思想引入到价值驱动的方法之中,从而增加了项目成功的机会。这些方法适合于中小规模(最多30人)、地理位置相近的团队(车程距离内),并开发简单解决方案的情形。理想的DAD团队规模小且工作地点集中。
3)大规模敏捷(Agility@Scale)。由规范敏捷开发加上一个或多个伸缩因素就构成了大规模敏捷。敏捷团队面临的伸缩因素可以包括:团队规模、地理位置、组织分布(为不同团体或公司工作的人)、合规性、文化或组织复杂度、技术复杂度以及企业规程(如企业架构、资产重用性原则及产品组合管理等)。
本书介绍的是DAD过程框架。在大多数情况下,假定所讨论的团队较小(少于15人),工作场所要么集中,要么靠近(车程距离内)。不得不说的是,全书通篇还讨论了可伸缩敏捷实践的应用策略。要把敏捷策略扩展到更复杂的情形,DAD过程框架是基础。