我相信敏捷只不过是螺旋模型的另一种实现.我是Spiral的大力支持者(螺旋模型是一个软件开发过程,结合了设计和原型分阶段的元素,努力结合自上而下和自下而上的概念的优势)从一开始就看到了许多项目在不知道它们在Spiral世界中运行的情况下实现了Spiral.自从敏捷开始普及之后,螺旋的概念开始被忽略了一点.我相信对于复杂的项目,螺旋仍然是最好的选择,但我想更好地理解敏捷和螺旋技术之间的相似点和不同点.谁能解释他们的差异/相似之处?
敏捷是螺旋式的.完全.在某种程度上,该名称已更改用于营销目的.
问题在于螺旋往往暗示"预先设计大" - 你计划许多螺旋,每个螺旋都按风险顺序排列.然而,螺旋不是敏捷 - 它只是按风险顺序递增执行.
敏捷增加的一个重要区别是"不要过度计划你还不知道的事情." 敏捷是螺旋式的,但您可以一次只创建一个增量的详细计划.
敏捷还增加了很多其他东西.螺旋是一种非常技术性的方法.然而,敏捷认识到技术是由人建立的.在敏捷宣言已经是超出贝姆的简单的风险管理方法四个原则.
我认为,基本的区别在于,大多数螺旋式开发模型仍然坚持大型的前期设计.重点是尽可能多地了解系统的使用方式; 发现所有用例.一旦了解了这些,就可以设计系统并将其分解为遵循迭代细节设计,实现,测试,重构设计循环的阶段.在敏捷中,他们是一些前期规划 - 可能收集大量的理解(故事标题) - 以便可以描述合理的版本,但每个版本都是独立计划的,我们会延迟发现细节,直到我们准备开始该版本的实施.我们期待改变,不要先尝试了解一切.
另一个不同的是,大多数敏捷哲学都涉及"先测试"方法.这与螺旋不同,其中测试通常是自身的活动,并且在代码之前不开发测试.大多数情况下,它们是提前计划的,但是并行或编码后开发.许多敏捷方法都坚持首先开发测试作为代码规范.
它们是相似的,因为它们是迭代的.它们在实现和理解迭代的方面有所不同.