敏捷,增量和瀑布开发模型之间的区别?

Differences between Agile, Incremental and Waterfall development model?

敏捷模型、增量模型和瀑布模型之间的主要区别是什么? 作为初学者软件开发人员,我应该遵循什么模型? 我需要说清楚。

除了 Gishu's answer

  • Incremental - 你现在需要多少就建多少。除非需求得到证实,否则您不会过度设计或增加灵活性。当需要出现时,您可以在现有的基础上进行构建。 (注意:与迭代的不同之处在于您添加新事物.. 与改进某些东西)。
  • Agile - you are agile if you value the same things as listed in the agile manifesto。这也意味着 "do agile" 没有标准模板或清单或程序。它并没有过度指定.. 它只是说明您可以使用您需要的任何实践 "be agile"。 Scrum、XP、看板是一些更具规范性的 'agile' 方法,因为它们具有相同的价值观。持续和早期反馈、频繁 releases/demos、改进设计等。因此它们可以是迭代和增量的。

  • Waterfall涉及离散的开发阶段:规范, 设计、实施、测试和维护。原则上,一个阶段必须是 在进入下一阶段之前完成。

有时选择进程很困难。Choosing the right Software development life cycle model阅读这篇文章很有帮助。

瀑布是顺序的,而敏捷是增量的方法。

Waterfall: 构思、启动、分析、设计、构造、测试、实施和维护。所有八个步骤将按顺序(一个接一个)完成。完成一个步骤后,您将无法返回上一步。只要稍作改动,整个项目就会从零开始。所以,没有错误或更改的余地。

何时使用瀑布:

  • 如果客户完全了解他们想要什么(项目的规模、成本和时间表),则选择瀑布。

优点:

  • 如果任何雇主离职,新雇主会突然抓住项目,因为所有步骤都是顺序的,所以新资源很容易了解项目的现状。
  • 客户知道最终产品的外观。

缺点:

  • 一步完成后无法返回
  • 瀑布需要大量的初始需求,错误的需求会将您的项目引向别处,而不是目的地。
  • 如果发现任何错误或需要进行任何更改,项目必须从头开始。
  • 整个项目只在最后进行测试,如果错误写得早发现晚,它们的存在可能会影响其他代码的编写方式。

敏捷:开发人员从简单的设计开始,然后开始在小模块上工作。这些模块的工作每周或每月完成一次。完成一个模块后,模块被送往测试阶段,如果出现任何错误,开发人员首先删除该错误,然后部署结果以接受客户审查,如果客户要求任何更改,则首先开发人员必须实施该更改。在每个模块结束时,评估项目优先级,我们应该从哪个模块开始工作。

何时使用敏捷:

  • 当快速生产比产品质量更重要时。
  • 当没有关于最终产品外观的清晰图片时。

优点:

  • 每个模块完成后都会进行测试,以培训开发人员不要在下一个模块中犯此类错误。
  • 敏捷允许开发人员和客户随时添加更改。
  • 在每个模块之后,客户审查申请,让客户了解每个模块之后的项目进度。

缺点:

  • 对成功的项目经理要求很高。作为制作模块,设置模块的优先级和设置模块的时间段确实需要很多经验。
  • 由于没有人有初始要求,因此最终产品可能与最初的预期大相径庭。