# 增量式开发 Incremental development ## 定义 几乎所有敏捷团队都喜欢渐进式开发策略。在敏捷上下文中,这意味着该产品的每个后续版本都可以使用,并且每个版本都通过添加用户可见的功能建立在先前版本的基础上。这些称为“垂直”增量(即,连续产品版本之间的差异),而不是相反的策略,该策略依次提供完整的技术组件:例如,创建数据库模式,然后在此之上构建业务规则,并且仅然后实现一个UI。(本文提供了区别的典型说明。它呼应了软件体系结构的“分层蛋糕”比喻:一个可以沿水平层切开,也可以沿垂直方向切开。)很难想象一种敏捷的增量方法,它至少在某种程度上也不是迭代的。 ,但这两个概念并不相同。(事实证明,它们很难固定下来,并且经常是激烈的语义辩论的主题。) ## 起源 - 1980年:IBM联邦系统部对增量开发的实质性讨论可以在Harlan Mills编辑的一卷《软件工程原理》中找到,特别是Dyer的文章,建议组织“每个增量以最大程度地分离其功能( s)来自功能的其他增量”;但是,这个想法仍然是一种计划的,分阶段的方法,而不是对变化做出响应的想法。 - 1984年:虽然对“瀑布式”顺序法的批评开始得很早,但替代性增量法的提法却越来越尖锐。一个很好的例子是关于“ 软件工程中基于知识的通信过程 ”的早期论文,其提倡增量开发的原因是“没有完整,稳定的规范”。 - 1985年:汤姆·吉尔伯(Tom Gilb)的演进式交付模型(绰号为“ Evo”),也许是第一个明确命名的“瀑布”方法的增量替代方案。 - 1999年:罗伯特·C·马丁(Robert C. Martin)在《 C ++报告》的一篇文章中,对“迭代”和“增量”一词的敏捷意义进行了最早的描述。