敏捷与迭代和增量开发有什么区别?敏捷是否被认为是迭代和增量的?一些信息显示敏捷是最新的迭代和增量。我需要对此作出明确澄清。
5 回答
- 迭代- 你不会一次完成一个功能。您处于代码 >> 获取反馈 >> 代码 >> ... 循环中。你不断迭代直到完成。
- 增量- 您现在可以根据需要构建尽可能多的内容。除非需要被证明,否则您不会过度设计或增加灵活性。当需要出现时,您可以在已经存在的任何基础上进行构建。(注意:与迭代的不同之处在于您正在添加新事物......而不是精炼某些事物)。
- 敏捷——如果您重视敏捷宣言中列出的相同事物,那么您就是敏捷的。这也意味着没有标准的模板或清单或程序来“做敏捷”。它并没有过度指定..它只是说明您可以使用“敏捷”所需的任何实践。Scrum、XP、看板是一些更具规范性的“敏捷”方法,因为它们共享相同的价值观。持续和早期的反馈、频繁的发布/演示、进化设计等。因此它们可以是迭代和增量的。
增量开发意味着软件项目的不同部分不断地集成到整体中,而不是一种将所有不同部分组装在项目的一个或几个里程碑中的单一方法。
迭代意味着一旦组件的第一个版本完成,就会对其进行测试、审查,并且结果几乎立即转换为该组件的新版本(迭代)。
因此,作为第一个结果:迭代开发不需要是增量的,反之亦然,但这些方法非常适合。
敏捷开发旨在减少软件项目中的大量计划开销,以允许快速反应以改变例如客户的意愿。增量和迭代开发几乎总是敏捷开发策略的一部分。有几种敏捷开发方法(例如 scrum)。
迭代开发意味着在产品生命周期中重新审视通常的瀑布模型步骤。这些阶段甚至可以重叠,即在进行端到端测试时,您可能已经开始准备新的需求。
增量开发意味着您为功能制定路线图并逐步实现它们。
敏捷的目标是在每个 sprint 之后创造“潜在的可交付产品”。你如何实现它是一个不同的故事。敏捷尝试采用来自各个领域的“最佳”技术(例如极限编程)。敏捷不排除运行增量或迭代开发。
一些重要且成功执行的软件项目,例如 Google Chrome 和 Mozilla Firefox,是迭代和增量软件开发的典范。
我将引用描述这种方法的精美 ars technica 文章:http: //arstechnica.com/information-technology/2010/07/chrome-team-sets-six-week-cadence-for-new-major-versions/
根据 Chrome 项目经理 Anthony Laforge 的说法,加快步伐旨在解决三个主要目标。一是更快地向用户推出新功能。第二个是使发布计划可预测,因此更容易计划将包含哪些功能以及哪些功能将针对以后的发布。第三,也是最违反直觉的,是减轻 Chrome 开发者的压力。Laforge 解释说,发布之间的较短、可预测的时间段更像是“离开中央车站的火车”。准备好的新功能不必等待其他需要更长时间才能完成的功能——他们可以直接跳上当前版本的“火车”。这反过来可以减轻开发人员急于完成其他功能的压力,因为另一个发布火车将在六周内到来。他们可以高枕无忧,因为他们知道他们的工作不会阻止火车离开车站。<<
敏捷主要用于项目开发中的技术。在敏捷技术中,人们从一种技术切换到另一种技术。主要目的是消除依赖性。就像人们从生产转向开发,从开发转向测试。这就是为什么依赖将消除对单个团队或个人的依赖..