本节书摘来自异步社区《敏捷迭代开发:管理者指南》一书中的第2章2.1节迭代开发,作者【美】Craig Larman,更多章节内容可以访问云栖社区“异步社区”公众号查看。
第2章 迭代和渐进
敏捷迭代开发:管理者指南
经验的神奇之处在于:它能够提醒你不再犯同样的错误。
—F. P. 琼斯(F. P. Jones)
概述
迭代和渐进方法的基本实践,包括时间箱(timeboxing)和自适应计划。
采用迭代方法的一个常见错误。
特定的迭代和渐进方法,包括Evo和UP。
迭代和渐进开发不仅是现代软件方法的基础,也是早在20世纪60年代就使用的方法(有关这段历史参见6.3节)。敏捷方法是迭代和渐进方法的子集。本章总结了关键的实践方法:
迭代开发 渐进开发
风险驱动和客户驱动 渐进需求
时间箱 自适应计划
2.1 迭代开发
敏捷迭代开发:管理者指南
迭代开发(iterative development)是一种构建软件(或者其他东西)的方式,软件的整个生命周期依次由几个迭代组成(迭代计划技巧参见11.1节)。每个迭代(iteration)都是一个独立的迷你项目,它们由一系列活动组成,例如,需求分析、设计、编程和测试。每次迭代的最终目标是产生一个迭代发布(iteration release),一个稳定的、集成的、经过测试的部分完成的系统。要明确的是,每一个迭代版本都是将所有团队的全部软件整合在一起产生的。绝大多数迭代版本只对内发布,不对外发布,作为基线(baseline),主要供开发团队从中获益。迭代版本的最终版是完成的产品,面向市场或者客户进行发布,参见图2-1。
尽管在理论上迭代只能用于简化或者性能优化,但是这个部分完成的系统通常会在一次又一次的迭代过程中伴随着新特性的出现而逐渐成长,换言之,就是增量开发(incremental development)。通过迭代来增长系统的概念称为迭代和增量开发(Iterative and Incremental Development,IID),通常简称为“迭代开发”。有些旧的过程文献[Wong84]使用术语“增量开发”,意思是一系列的迭代开发,每次都先冻结预先定义的规格说明,随后围绕新特性进行开发。不过,这没有推广开来。时至今日,绝大多数开发方法都是IID方法,并且,IID是所有敏捷方法(包括Scrum和XP)的核心。
绝大多数项目在最终公开发布之前,至少需要进行3次迭代。我曾经看到过一个历时两年的Valtech项目,经历了将近20次迭代,每次迭代平均花费4周的时间。此外,我还听说过一个经历了45次迭代的长期项目。
在现代的迭代方法中,推荐的迭代周期是1~6周。
例如,每次迭代不仅包括需求分析,还包括产品级的编程。而且,每次迭代的结果不是一个原型或者概念性的试验,而是最终系统的一个子集。
概括地说,可将迭代视为一个独立的迷你项目,每次迭代中会出现许多规程下的活动(需求分析、测试等),参见图2-2。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。