Scrum vs Waterfall vs Agile vs Lean vs Kanban

软件开发行业有许多不一样的方法 - 一些是旧方法的新方法,另外一些方法采用了相对较新的方法。该领域中最经常使用的两种方法是敏捷,如Scrum,Kanban和Lean等,以及传统的瀑布模型,如结构化方法或更新的RUP。canvas

大多数遵循这两种模式的软件公司都认为他们选择的方法在方面是优越的,因此在咱们回答这个问题以前,“哪个更成功?咱们应该看看它们的主要区别。架构

瀑布方法

瀑布是软件开发过程的线性方法。这些都表明了软件开发的一个独特阶段,每一个阶段一般在下一个阶段开始以前完成。每一个开发阶段之间一般也有一个里程碑。app

  • 结构化为顺序过程当中的一个大项目
  • 适合变化不常见的状况
  • 一个须要预先明肯定义的需求的流程

所以,瀑布模型保持只有在检查并验证其前一阶段时才应移动到阶段,以下图所示:框架

瀑布方法

例如:测试

在Royce的原始瀑布模型中,按顺序遵循如下阶段:优化

  • 系统和软件要求:在产品需求文档中捕获
  • 分析:产生模型,架构和业务规则
  • 设计:产生软件架构
  • 编码:软件的开发,证实和集成
  • 测试:缺陷的系统发现和调试
  • 操做:完整系统的安装,迁移,支持和维护

敏捷方法

敏捷使用精益思想衍生出来,在信息技术环境中应用“精益”概念。精益方法的关键重点是:编码

  • 消除流程中的浪费
  • 最大限度地减小业务非增值活动
  • 从消费者的角度最大化附加值

敏捷方法

敏捷方法是通过验证的项目管理方法,它鼓励如下关键概念:spa

  • 常常检查和调整
  • 鼓励团队合做,自我组织和问责制的领导哲学
  • 一套工程最佳实践,能够快速交付高质量的项目
  • 一种将开发与客户需求和公司目标相结合的业务方法

敏捷开发 - 迭代生命周期

敏捷开发阶段包括传统规划,分析需求,设计,编码,测试和部署,但它们造成一个循环而不是一条线。这意味着流程灵活,可重复,能够按任何顺序和并行发生。这容许收集用户反馈,针对不一样环境的连续测试以及在运行时更改项目的范围。.net

敏捷方法的基础

  • 经验主义 - 可以在逐步提升生产力的过程当中执行,中止,反思,改进和继续
  • 肯定优先级 - 根据业务价值提供工做
  • 自组织 - 团队最了解如何根据资源和约束提供工做
  • Time-Boxing - 团队须要在规定的时间内完成指定的任务。
  • 协做 - 团队承诺在给定的时间内交付最终产品,这将鼓励跨团队协做和完成任务的首创性。

敏捷与瀑布 - 范围,时间和成本三角

瀑布方法的最大优点是固定成本和可预测性。你知道价格,何时交付。其最重要的弱点是其缺少灵活性。敏捷方法很是灵活,能够演变成与最初设想的产品大相径庭的产品。设计

敏捷与瀑布

传统的瀑布方法创建在时间,成本和范围三重约束的基础上。调整这些变量中的任何一个都会强制改变至少其中一个变量。交付成功的项目取决于平衡这三个竞争变量。但正如咱们所知,简单地为项目添加资源并不总能带来预期的目标。事实上,若是在软件项目的后期添加资源,它实际上会产生不利影响。

敏捷方法采用不一样的方法,将三重约束颠倒过来。敏捷方法不是将范围视为一开始就是固定的,而是将时间(迭代)和成本(团队成员)设置为固定; 而后调整范围以关注最高优先级。创建敏捷是由于指望范围会随着时间的推移而发展。目标是在预算成本和时间内知足客户最重要的要求。随着项目的进展,敏捷容许新的需求或从新肯定优先级。

敏捷与瀑布质量

敏捷仍是瀑布?见图

Standish Group的最新报告涵盖了他们在2013年至2017年间研究的项目。在这段时间内,敏捷和瀑布的成功,挑战和失败的总体突破以下所示,敏捷项目成功的可能性大约是后者的2倍,失败的可能性下降1/3。

(来源:vitalitychicago.com - 比较瀑布和敏捷项目成功率

敏捷与瀑布 - 项目成功率

敏捷方法伞

自2001年“敏捷宣言”诞生以来,敏捷就有不少嗡嗡声。事实上,敏捷方法只是一种思惟方式,可使团队和组织进行创新,快速响应不断变化的需求,同时下降风险。组织能够灵活地使用许多可用的框架,如Scrum,看板,精益,XP等等。

Scrum敏捷伞

精益方法

精益组织了解客户价值,并关注其关键流程以不断提升客户价值。最终目标是经过一个零浪费的完美价值创造过程为客户提供完美的价值。

5步精益方法

指导精益方法实施的五步思考过程很容易记住,但并不老是很容易实现:

  1. 从最终客户的角度按产品系列指定值。
  2. 肯定每一个产品系列的价值流中的全部步骤,尽量消除那些没法创造价值的步骤。
  3. 使价值创造步骤按顺序进行,使产品顺利流向客户。
  4. 随着流量的引入,让客户从下一个上游活动中获取价值。
  5. 在指定值时,识别值流,删除浪费的步骤,引入流和拉,再次开始流程并继续,直到达到完美状态,其中建立完美值而没有浪费。

5步精益方法

Scrum方法

Scrum是一种管理项目的敏捷方式,一般是软件开发。使用Scrum进行敏捷软件开发一般被视为一种方法论; 但不是将Scrum视为方法论,而是将其视为管理流程的框架。

Scrum Process Canvas

看板方法

看板是日本的“视觉信号”或“卡片”。丰田线路工人使用看板来表示制造过程当中的步骤。做为精益的一部分,该系统的高度视觉性使得团队能够更轻松地沟通须要完成的工做和什么时候完成。它还标准化了线索和精炼过程,有助于减小浪费和最大化价值。与scrum sprint board相似,看板跟踪“作 - 作 - 完成”活动,但它限制了“正在进行的”活动的数量(该数量由团队经理定义,不能超过)。

看板方法

有四个基本的看板原则:

  • 可视化工做以增长沟通和协做。
  • 限制正在进行的工做,以免无限的非优先打开任务链。
  • 衡量和优化流量,收集指标,预测将来问题。
  • 旨在经过分析得到持续改进。

初学者的其余Scrum指南

相关文章
相关标签/搜索