Scrum - 概述



敏捷已成为软件开发行业中的一个热门词汇。但敏捷开发究竟是什么?简单来说,敏捷开发是一种执行软件开发团队和项目的不同方式。

为了理解什么是新的,让我们回顾一下传统方法。在传统的软件开发中,产品需求在开始开发之前就已经确定。

瀑布模型

最常用且具有此特性的软件开发模型是瀑布模型,如下图所示。但是,在大多数情况下,会添加新的功能,并且早期需求也可能会发生变化。瀑布模型的结构不适合适应此类需求的持续变化。此外,用户在产品完整交付之前无法清楚了解产品的功能。

Waterfall Model

迭代增量模型

在迭代增量模型中,开发从有限数量的已确定和优先级排序的需求开始。交付成果是产品的可工作增量。从需求到代码开发的一系列活动称为迭代。根据增量的功能以及任何或所有新的、修改的、待处理的需求,将下一批需求提供给后续迭代。后续迭代的结果是产品增强的可工作增量。重复此过程,直到产品实现所需的功能。

Incremental Model

用户通常不参与开发工作,这可能会导致沟通差距,从而导致功能错误。参与对开发团队来说是积极的,但对团队的时间要求很高,并且可能会造成延误。此外,迭代期间的任何非正式需求变更都可能导致混淆,也可能导致范围蔓延。基于此前提,敏捷开发应运而生。

敏捷开发

敏捷开发基于迭代增量开发,其中需求和解决方案通过团队协作不断发展。它建议采用时间盒式的迭代方法,并鼓励快速灵活地响应变化。它是一个理论框架,并没有规定开发团队必须遵循的任何特定实践。Scrum 是一个具体的敏捷流程框架,它定义了需要遵循的实践。

敏捷方法的早期实现包括Rational Unified Process(1994)、Scrum(1995)、Crystal Clear、极限编程(1996)、自适应软件开发、特性驱动开发(1997)和动态系统开发方法 (DSDM)(1995)。在 2001 年发布敏捷宣言后,这些方法现在统称为敏捷方法

敏捷宣言

敏捷宣言由一群软件开发人员于 2001 年发布,强调了需要给予开发团队、适应不断变化的需求、客户参与的重要性。

敏捷宣言如下

“我们正在通过实践发现更好的软件开发方法,并帮助其他人也这样做。通过这项工作,我们珍视

  • 个体和互动 高于 流程和工具
  • 可以工作的软件 高于 面面俱到的文档
  • 客户合作 高于 合同谈判
  • 响应变化 高于 遵循计划

也就是说,尽管右项也具有一定的价值,但我们更重视左项。”

…敏捷软件开发宣言,作者:Beck, Kent 等人(2001)

敏捷宣言条目定义

左侧的宣言条目可以描述如下

宣言条目 描述
个体和互动 需要重视
  • 团队成员的自组织和自我激励
  • 团队成员之间持续进行工作、澄清、信息交流
可以工作的软件 以短时间间隔交付可工作的软件有助于获得客户的信任和对团队的信心。
客户合作 客户与开发团队的持续参与确保了必要的修改的沟通。
响应变化 专注于对提议的更改做出快速响应,这可以通过短时间迭代来实现。

敏捷宣言的关键要素是,我们必须信任人及其协作能力。出于这个原因,开发的特定敏捷方法通过强调整个项目生命周期中的团队合作和协作来挖掘团队成员的能力。

敏捷的关键原则

敏捷宣言基于以下原则

原则 描述
满意度和交付 通过尽早和持续地交付可工作的软件来满足客户。
欢迎变化 即使在开发的后期阶段也欢迎更改需求。
频繁交付 频繁地交付可工作的软件(每周而不是每月)。
沟通是关键 确保开发人员每天都与业务人员密切合作。
环境和信任 围绕有积极性的个人构建项目。为他们提供必要的支持并信任他们。
面对面沟通 鼓励面对面交谈以确保高效有效的沟通。
软件作为进度衡量标准 可工作的软件是进度的主要衡量标准。
可持续发展 促进可持续发展,能够在整个开发过程中保持恒定的速度。
关注细节 持续关注技术卓越和良好的设计。
少即是多 简洁至关重要。
自组织团队 团队定期关注在不断变化的环境中变得有效。

敏捷方法

动态系统开发方法 (DSDM)

它是一个用于软件项目的敏捷框架。它被用来微调传统方法。DSDM 的最新版本称为 DSDM Atern。Atern 这个名字是北极燕鸥的缩写——一种可以飞行很长距离的海鸟,它代表了该方法的许多特性,这些特性是自然的工作方式,例如优先级排序和协作。

Scrum

它是最流行的敏捷框架,尤其专注于如何在基于团队的开发环境中管理任务。Scrum 使用迭代和增量开发模型,迭代持续时间较短。Scrum 相对易于实施,并且专注于快速和频繁的交付。

极限编程 (XP)

它是一种敏捷软件开发。它提倡在短开发周期中频繁发布,旨在提高生产力并在引入检查点时采用新的客户需求。该方法以传统软件工程实践的有益元素被提升到极致的想法命名。(极限编程是一种软件开发学科,它组织人员以更高效地生产更高质量的软件。)XP 以新颖的方法解决了分析、开发和测试阶段,从而对最终产品的质量产生重大影响。

测试驱动开发 (TDD)

它是一种软件开发流程,依赖于非常短的开发周期的重复:首先,开发人员编写一个自动测试用例来定义所需的改进或新功能,然后生成最少的代码以通过该测试,最后将新代码提升到可接受的标准。

精益

这是一种生产实践,它认为除了为最终客户创造价值之外,为任何目标支出资源都是浪费,因此是消除的目标。从消费产品或服务的客户的角度出发,价值被定义为客户愿意为之付费的任何行动或流程。精益的核心是用更少的工作来保留价值。

看板

它是一个用于改进和保持高水平生产的系统。看板是组织用来控制库存支出的策略——准时制 (JIT) 实现的一种方法。看板成为支持整个生产系统运行的有效工具,并证明是促进改进的绝佳方式。

结论

在过去的 10 年里,越来越多的成功案例表明,公司通过敏捷实践显著提高了其 IT 开发团队和项目的成功率和绩效。这导致敏捷在包括媒体和技术、大型企业乃至政府在内的各种行业得到广泛采用。

敏捷框架帮助团队从以下方面受益

  • 更快的交付/上市时间
  • 降低不确定性和风险
  • 通过专注于客户价值来提高投资回报率 (ROI)

在这些不同的敏捷方法中,Scrum 在过去的 20 年里在全球范围内取得了巨大的成功。

广告