敏捷是一个术语,用于描述软件开发的方法,强调增量交付,团队协作,持续计划和持续学习,而不是试图在接近结束时立即交付。
敏捷专注于保持流程的精益,并创建最小的可行产品(MVP),在最终结果出现之前经历多次迭代。不断收集和实施反馈,总而言之,这是一个更加动态的过程,每个人都在朝着一个目标努力。
敏捷软件开发
Scrum和其他领先的敏捷方法
敏捷是一种思维方式,它是一套价值观和原则。敏捷是一种思考和行动的方式。敏捷就是短周期,迭代和增量交付,快速失败,获得反馈,及早向客户提供商业价值,关于人员,协作和互动。敏捷是一种关于透明度,检查和适应的心态。但是,敏捷不包含任何角色,事件或工件。这是一种心态。例如,Scrum是敏捷伞下广泛使用的框架之一,它可以帮助你变得更敏捷,但敏捷运动中有更多的框架,如看板,XP,Crystal等等,如图所示下面:
Scrum敏捷伞
Scrum
Scrum是一个框架,人们可以在其中解决复杂的自适应问题,同时高效且创造性地提供具有最高价值的产品。它用于管理软件项目和产品或应用程序开发。它的重点是适应性产品开发战略,其中跨职能团队作为一个单元在2-4周内达成共同目标(Sprint)。它由一系列价值,文物,角色,仪式,规则和最佳实践组成。
精益 (Lean )
精益起源于丰田生产系统(TPS),它在20世纪50年代,60年代及以后彻底改变了实物商品的生产。精益保持其在制造业中的地位,但也在知识工作中找到了新的应用,帮助所有行业的企业**消除浪费,改进流程并促进创新**。软件开发是精益方法的自然应用,因为与制造业一样,它通常遵循既定的过程,具有一定的接受条件,并导致有形价值的传递。指导精益方法所有实践的关键概念,我们称之为精益支柱。他们是:
- 连续的提高
- 尊重人
- 轻量级领导
看板 (Kanban)
看板是一种高度可视化的工作流管理方法,在精益团队中很受欢迎。事实上,83%的精益生产团队使用看板来可视化并积极管理产品的创建,重点是持续交付,同时不会使开发团队负担过重。与Scrum一样,看板是一个旨在帮助团队更有效地协同工作的流程。
看板基于3个基本原则:
- 可视化您今天要做的事情(工作流程):查看彼此上下文中的所有项目可以提供非常丰富的信息
- 限制正在进行的工作量(WIP):这有助于平衡基于流的方法,因此团队无法启动并立即承诺过多的工作
- 增强流程:当某些内容完成后,积压中的下一个最高优先级项目将被激活
看板通过定义最佳的团队工作流程,促进持续协作并鼓励积极,持续的学习和改进。
动态系统开发方法(DSDM)
DSDM是一个由八个原则组成的框架,包括生命周期和产品,角色和职责以及几种最佳实践技术。这些支撑和支持的理念是尽早提供具有战略意义的商业利益,从而为组织提供最佳的投资回报(ROI)。
DSDM是一种优先考虑计划和质量而非功能的方法,它在一开始就修复了成本,质量和时间,并使用MoSCoW优先级排序方法,将项目分解为四种不同类型的要求:
- 必须有(M)
- 应该有(S)
- 可以有(C)
- 不会有(W)
支持DSDM Atern的原则有八个[13]。这些原则指导团队必须采取的态度和他们必须采取的思维方式,以始终如一地提供。
- 专注于业务需求
- 按时交货
- 合作
- 绝不妥协质量
- 从坚实的基础逐步建立起来
- 迭代开发
- 持续清晰地沟通
- 表现出控制力
极限编程 (XP)
最初由Kent Beck描述的极限编程(XP)已经成为最受欢迎和最有争议的敏捷方法之一。XP是一种快速,持续地提供高质量软件的规范方法。它旨在提高面对不断变化的客户需求的软件质量和响应能力。它促进了高客户参与度,快速反馈循环,持续测试,持续规划以及密切的团队合作,以非常频繁的间隔(通常每1-3周)提供工作软件。
该方法的名称来源于传统软件工程实践的有益元素被带到“极端”水平的想法。例如,代码审查被认为是一种有益的做法。极端情况下,可以通过结对编程的实践不断检查代码。
最初的XP方法基于四个简单的价值观 – 简单,沟通,反馈和勇气。
它还有12个支持实践:
- 规划游戏
- 小版本
- 客户验收测试
- 简单的设计
- 配对编程
- 测试驱动开发
- 重构
- 持续集成
- 集体代码所有权
- 编码标准
- 隐喻
- 可持续发展
极限编程
特征驱动开发(FDD)
功能驱动开发(FDD)由Jeff De Luca于1997年在一家大型新加坡银行的软件开发项目中开展。它是一个迭代和增量的软件开发过程,是一种开发软件的敏捷方法。FDD将许多业界公认的最佳实践融合为一个有凝聚力的整体。这些实践是从客户端值的功能(特性)角度推动的。其主要目的是及时反复提供有形的,有效的软件。使用FDD的优势在于,由于“初期设计足够”(JEDI)的概念,它甚至可以扩展到大型团队。由于其以功能为中心的流程,它是一个很好的解决方案,可以保持对敏捷,增量和固有复杂项目的控制。它由五个基本活动组成:
- 开发整体模型
- 构建功能列表
- 按功能规划
- 按功能设计
- 按功能构建。
特征驱动开发(FDD)
每个项目都有自己独特的模型,这将产生一个功能列表。最后三个活动是短迭代过程,其构建时间不超过两周。如果它需要两周以上,那么它将被分解为更小的功能。
水晶(Crystal)
水晶方法是由Alistair Cockburn在20世纪90年代中期开发的一系列方法(Crystal系列)。这些方法来自Cockburn多年的学习和团队采访。Cockburn的研究表明,他采访过的团队并没有遵循正式的方法,但他们仍然提供了成功的项目。Crystal家族是Cockburn对他们所做的事情进行编目的方式,这些项目使项目成功。水晶方法主要关注:
- 人
- 相互作用
- 社区
- 技能
- 人才
- 通讯
敏捷宣言 (Agile Manifesto)
“敏捷”一词是在2001年的敏捷宣言中创造的。该宣言旨在建立指导更好的软件开发方法的原则。敏捷宣言由4个重要的价值观组成。阅读敏捷宣言的方式并不是右侧的物品不再具有价值,而是敏捷运动更重视左侧的物品。
敏捷宣言
那么让我们来看看敏捷宣言的第一行。这条线表明,我们重视人,他们的互动,沟通和协作,而不是拥有各种广泛的流程和工具。当然,流程和工具很有价值,但是,如果它们实际上支持人们一起工作并提供优质产品,那么它们就更有价值。我们现在在很多组织中看到的是,流程和工具本身就是目标。从敏捷的角度来看,我们对此有不同的看法。流程和工具应该支持人们共同合作并为客户创造价值。
敏捷宣言原则 (Agile Principles)
作为敏捷宣言的补充,敏捷联盟还定义了一套12项基本原则,除了敏捷宣言之外,还提供了指导和更详细的解释:
敏捷宣言原则
- 我们的首要任务是通过早期和持续交付有价值的软件来满足客户。
- 欢迎不断变化的要求,甚至是开发后期。敏捷流程利用变化来实现客户的竞争优势。
- 经常提供工作软件,从几周到几个月,优先考虑更短的时间尺度。
- 业务人员和开发人员必须在整个项目中每天一起工作。
- 围绕有动力的个人建立项目。为他们提供所需的环境和支持,并相信他们能够完成工作。
- 向开发团队内部和内部传达信息的最有效和最有效的方法是面对面交谈。
- 工作软件是进步的主要衡量标准。
- 敏捷过程促进可持续发展。
- 赞助商,开发者和用户应该能够无限期地保持稳定的步伐。
- 持续关注技术卓越和良好的设计可提高灵活性。
- 简单性 – 最大化未完成工作量的艺术 – 至关重要。
- 最好的架构,要求和设计来自自组织团队。团队定期反思如何变得更有效,然后相应地调整和调整其行为。
摘要
敏捷开发是软件开发行业的一个流行词,它是管理软件开发项目的另一种方式。它不是特定的软件开发方法,而是基于敏捷宣言中表达的价值观和原则的一套方法和实践的总称。解决方案通过自组织,跨职能团队之间的协作发展,利用适合其背景的实践。