敏捷与SDLC的螺旋模型

时间:2008-10-31 14:51:49

标签: agile methodology sdlc

我认为敏捷只不过是螺旋模型的另一种实现。我是Spiral的大力支持者(螺旋模型是一个软件开发过程,结合了设计和原型分阶段的元素,努力结合自上而下和自下而上的概念的优势)从一开始就看到了许多项目在不知道它们在Spiral世界中运行的情况下实现了Spiral。自从敏捷开始普及之后,螺旋的概念开始被忽略了一点。我相信对于复杂的项目,螺旋仍然是最好的选择,但我想更好地理解敏捷和螺旋技术之间的相似点和不同点。谁能解释他们的差异/相似之处?

6 个答案:

答案 0 :(得分:43)

敏捷 螺旋式。完全。部分名称因营销目的而改变。

问题在于螺旋往往意味着“预先设计大” - 你计划出许多螺旋,每个螺旋都按风险顺序排列。然而,螺旋不是敏捷 - 它只是按风险顺序递增执行。

敏捷增加的一个重要区别是“不要过度计划你还不知道的事情。” Agile 螺旋式,但您一次只为一个增量创建详细计划。

敏捷也增加了很多其他东西。螺旋是一种非常技术性的方法。然而,敏捷认识到技术是由人建立的。 Agile Manifesto有四项原则超越了Boehm的简单风险管理方法。

答案 1 :(得分:12)

正如我所看到的,基本的区别在于,大多数螺旋式开发模型仍然坚持大型的前期设计。重点是尽可能多地了解系统的使用方式;发现所有用例。一旦了解了这些,就可以设计系统并将其分解为遵循迭代细节设计,实现,测试,重构设计循环的阶段。在敏捷中,他们是一些前期规划 - 可能收集大量的理解(故事标题) - 以便可以描述合理的版本,但每个版本都是独立计划的,我们会延迟发现细节,直到我们准备开始该版本的实施。我们期待改变,不要先尝试了解所有事情。

另一个不同的是,大多数敏捷哲学都涉及“先测试”方法。这与螺旋不同,其中测试通常是自身的活动,并且在代码之前不开发测试。大多数情况下,它们是提前计划的,但是并行或编码后开发。许多敏捷方法都坚持首先开发测试作为代码的规范。

它们的相似之处在于它们是迭代的。它们在实现和理解迭代的方面有所不同。

答案 2 :(得分:2)

我不是螺旋模型的专家,但从维基百科定义来看,在我看来存在一些显着差异。

例如,在Agile项目中,迭代结束时不是原型,而是一个功能齐全,经过全面测试,可部署的(1)系统,包含功能列表中的最高优先级功能。 / p>

在项目开始时收集的需求只是勉强可以开始(进行下一步),并且意味着在实际实施之前不久就会充实。欢迎改变要求。

此外,Agile不仅仅是进行迭代开发,而是专注于面对面交谈而非书面交流,专注于将业务人员和技术人员聚集在日常工作中。重点是协作最大化价值而不是定义然后履行合同。

如果您还没有看到它,请查看Agile Manifesto,它基本上是敏捷软件开发的定义。

(1)这并不意味着它必须使商业意识部署系统,“只是”它在技术上是可行的。是否在迭代结束时部署系统应该是一个纯粹的业务决策。

答案 3 :(得分:1)

我认为Agile是迭代SDLC的类型,而螺旋是增量SDLC的类型。 Scrum是其中一种敏捷型DSDM / FDD / XP等。 瀑布之后的所有SDLC都遵循相同的一组行为(需求分析,设计,编码和测试)以一些不同的组合。因此,顺序OR迭代或增量中的基本动作集是相同的。

就敏捷和螺旋而言,两者都有共同的优势 1.改变需求处理 2.短期发布 3.由于SDLC的持续时间较短,风险管理很容易 4.Cross团队帮助产品和项目顺利进行

答案 4 :(得分:0)

First Agile实际上是遵循类似哲学的许多不同过程。使其与众不同的哲学之一是每次迭代都会产生一种有效的产品。它可以被描述为迭代和增量。很多重点放在工作产品和测试上。在许多敏捷模型中,测试都是在编码之前进行的。

在螺旋模型中,迭代次数是固定的,而敏捷模型的每个阶段可能包含任意数量的迭代。

你是对的,有相似之处,但潜在的哲学有所不同。这个page更详细地解释并将敏捷与其他方法进行比较。

您可以说敏捷流程是由用例驱动的...将重点放在人们,最终用户身上。

答案 5 :(得分:0)

我认为螺旋和敏捷是相似的。然而,最近敏捷通常似乎成为一个借口牛仔编码的宣传系统。即。

  • 极少的要求
  • 最小技术分析
  • 最少文档
  • 无代码评论
  • 特殊奖励 - 滥用域驱动设计使对象模型过于复杂

这绝不是螺旋式的想法。我认为这也不是敏捷的重点,尽管你最近有多次看到过这种情况会让我感到惊讶。 越来越多经验丰富的开发人员/ PM开始看到瀑布和“敏捷”之间更加平衡的方法的智慧 - 也许这只会让我们回归螺旋式。

虽然在敏捷思维空间中有一些有用的想法,但似乎它似乎表现在那些在组织中具有特别过于繁琐/无用的软件设计方法的人,并且是对...的反应/过度反应这一点。