什么是敏捷软件开发?

敏捷是一个术语,用于描述软件开发的方法,强调增量交付,团队协做,持续计划和持续学习,而不是试图在接近结束时当即交付。编程

敏捷专一于保持流程的精益,并建立最小的可行产品(MVP),在最终结果出现以前经历屡次迭代。不断收集和实施反馈,总而言之,这是一个更加动态的过程,每一个人都在朝着一个目标努力。架构

敏捷软件开发

Scrum和其余领先的敏捷方法

敏捷是一种思惟方式,它是一套价值观和原则。敏捷是一种思考和行动的方式。敏捷就是短周期,迭代和增量交付,快速失败,得到反馈,及早向客户提供商业价值,关于人员,协做和互动。敏捷是一种关于透明度,检查和适应的心态。可是,敏捷不包含任何角色,事件或工件。这是一种心态。例如,Scrum是敏捷伞下普遍使用的框架之一,它能够帮助你变得更敏捷,但敏捷运动中有更多的框架,如看板,XP,Crystal等等,如图所示下面:框架

Scrum敏捷伞

Scrum

Scrum是一个框架,人们能够在其中解决复杂的自适应问题,同时高效且创造性地提供具备最高价值的产品。它用于管理软件项目和产品或应用程序开发。它的重点是适应性产品开发战略,其中跨职能团队做为一个单元在2-4周内达成共同目标(Sprint)。它由一系列价值,文物,角色,仪式,规则和最佳实践组成。ide

Lean (精益)

精益起源于丰田生产系统(TPS),它在20世纪50年代,60年代及之后完全改变了实物商品的生产。精益保持其在制造业中的地位,但也在知识工做中找到了新的应用,帮助全部行业的企业消除浪费,改进流程并促进创新。软件开发是精益方法的天然应用,由于与制造业同样,它一般遵循一个肯定的过程,具备必定的接受条件,并致使有形价值的传递。指导精益方法全部实践的关键概念,咱们称之为精益支柱。他们是:工具

  • 连续的提升
  • 尊重人
  • 轻量级领导

看板 (Kanban)

看板是一种高度可视化的工做流管理方法,在精益团队中很受欢迎。事实上,83%的精益生产团队使用看板来可视化并积极管理产品的建立,重点是持续交付,同时不会使开发团队负担太重。与Scrum同样,看板是一个旨在帮助团队更有效地协同工做的流程。post

看板基于3个基本原则:学习

  • 可视化您今天要作的事情(工做流程):查看彼此上下文中的全部项目能够提供很是丰富的信息
  • 限制正在进行的工做量(WIP):这有助于平衡基于流的方法,所以团队没法启动并当即承诺过多的工做
  • 加强流程:当某些内容完成后,积压中的下一个最高优先级项目将被激活

看板经过定义最佳的团队工做流程,促进持续协做并鼓励积极,持续的学习和改进。测试

动态系统开发方法(DSDM)

DSDM是一个由八个原则组成的框架,包括生命周期和产品,角色和职责以及几种最佳实践技术。这些支撑和支持的理念是尽早提供具备战略意义的商业利益,从而为组织提供最佳的投资回报率(ROI)。ui

DSDM是一种优先考虑计划和质量而非功能的方法,它在一开始就修复了成本,质量和时间,并使用MoSCoW优先级排序方法,将项目分解为四种不一样类型的要求:编码

  • 必须有(Must have)
  • 应该有(Should have)
  • 能够有(Could have)
  • 不会有(Won't have)

支持DSDM Atern的原则有八个[13]。这些原则指导团队必须采起的态度和他们必须采起的思惟方式,以始终如一地提供。

  1. 专一于业务需求
  2. 按时交货
  3. 合做
  4. 毫不妥协质量
  5. 从坚实的基础逐步创建起来
  6. 迭代开发
  7. 持续清晰地沟通
  8. 表现出控制力

极限编程

最初由Kent Beck描述的极限编程(XP)已经成为最受欢迎和最有争议的敏捷方法之一。XP是一种快速,持续地提供高质量软件的规范方法。它旨在提升面对不断变化的客户需求的软件质量和响应能力。它促进了高客户参与度,快速反馈循环,持续测试,持续规划以及密切的团队合做,以很是频繁的间隔(一般每1-3周)提供工做软件。

该方法的名称来源于传统软件工程实践的有益元素被带到“极端”水平的想法。例如,代码审查被认为是一种有益的作法。极端状况下,能够经过结对编程的实践不断检查代码。

最初的XP方法基于四个简单的价值观 - 简单,沟通,反馈和勇气。

它还有12个支持实践:

  • 规划游戏 (Planning Game)
  • 小版本 (Small Releases)
  • 客户验收测试 (Customer Acceptance Tests)
  • 简单的设计 (Simple Design)
  • 配对编程 (Pair Programming)
  • 测试驱动开发 (Test-Driven Development
  • 重构 (Refactoring)
  • 持续集成 (Continuous Integration)
  • 集体代码全部权 (Collective Code Ownership)
  • 编码标准 (Coding Standard)
  • 隐喻 (Metaphor)
  • 可持续发展 (Sustainable Pace)

极限编程

特征驱动开发(FDD)

功能驱动开发(FDD)由Jeff De Luca于1997年在一家大型新加坡银行的软件开发项目中开展。它是一个迭代和增量的软件开发过程,是一种开发软件的敏捷方法。FDD将许多业界公认的最佳实践融合为一个有凝聚力的总体。这些实践是从客户端值的功能(特性)角度推进的。其主要目的是及时反复提供有形的,有效的软件。使用FDD的优点在于,因为“初期设计足够”(JEDI)的概念,它甚至能够扩展到大型团队。因为其以功能为中心的流程,它是一个很好的解决方案,能够保持对敏捷,增量和固有复杂项目的控制。它由五个基本活动组成:

  1. 开发总体模型
  2. 构建功能列表
  3. 按功能规划
  4. 按功能设计
  5. 按功能构建。

特征驱动开发(FDD)

每一个项目都有本身独特的模型,这将产生一个功能列表。最后三个活动是短迭代过程,其构建时间不超过两周。若是它须要两周以上,那么它将被分解为更小的功能。

水晶 (Crystal)

水晶方法是由Alistair Cockburn在20世纪90年代中期开发的一系列方法(Crystal系列)。这些方法来自Cockburn多年的学习和团队采访。Cockburn的研究代表,他采访过的团队并无遵循正式的方法,但他们仍然提供了成功的项目。Crystal家族是Cockburn对他们所作的事情进行编目的方式,这些项目使项目成功。水晶方法主要关注:

  • 人 (people)
  • 相互做用 (Interaction)
  • 社区 (Community)
  • 技能 (Skills)
  • 人才 (Talents)
  • 通信 (Communications)

敏捷宣言

“敏捷”一词是在2001年的敏捷宣言中创造的。该宣言旨在创建指导更好的软件开发方法的原则。敏捷宣言由4个重要的价值观组成。阅读敏捷宣言的方式并非右侧的物品再也不具备价值,而是敏捷运动更重视左侧的物品。

敏捷宣言

那么让咱们来看看敏捷宣言的第一行。这条线代表,咱们重视人,他们的互动,沟通和协做,而不是拥有各类普遍的流程和工具。固然,流程和工具颇有价值,可是,若是它们真正支持人们一块儿工做并提供优质产品,那么它们就更有价值。咱们如今在不少组织中看到的是,流程和工具自己就是目标。从敏捷的角度来看,咱们对此有不一样的见解。流程和工具应该支持人们共同合做并为客户创造价值。

敏捷宣言原则

做为敏捷宣言的补充,敏捷联盟还定义了一套12项基本原则,除了敏捷宣言以外,还提供了指导和更详细的解释:

敏捷宣言原则

  1. 咱们的首要任务是经过早期和持续交付有价值的软件来知足客户。
  2. 欢迎不断变化的要求,甚至是开发后期。敏捷流程利用变化来实现客户的竞争优点。
  3. 常常提供工做软件,从几周到几个月,优先考虑更短的时间尺度。
  4. 业务人员和开发人员必须在整个项目中天天一块儿工做。
  5. 围绕有动力的我的创建项目。为他们提供所需的环境和支持,并相信他们可以完成工做。
  6. 向开发团队内部和内部传达信息的最有效和最有效的方法是面对面交谈。
  7. 工做软件是进步的主要衡量标准。
  8. 敏捷过程促进可持续发展。
  9. 赞助商,开发者和用户应该可以无限期地保持稳定的步伐。
  10. 持续关注技术卓越和良好的设计可提升灵活性。
  11. 简单性 - 最大化未完成工做量的艺术 - 相当重要。
  12. 最好的架构,要求和设计来自自组织团队。团队按期反思如何变得更有效,而后相应地调整和调整其行为。

摘要

敏捷开发是软件开发行业的一个流行词,它是管理软件开发项目的另外一种方式。它不是特定的软件开发方法,而是基于敏捷宣言中表达的价值观和原则的一套方法和实践的总称。解决方案经过自组织,跨职能团队之间的协做发展,利用适合其背景的实践。

基本的Scrum閱讀

Scrum和自组织团队 (Scrum and Self-Organizing Team)
敏捷和Scrum - 有什么区别?
在Scrum Sprint中发布的频率是如何肯定的?
经过3个步骤创建自组织团队
The Best Free Scrum Learning Resources, Guides and Articles
为何敏捷开发是您项目的更好选择?
为何Scrum是 - 快速失败技术?
8常常被误解的Scrum Master角色
Scrum Events - 初学者阅读文章
Scrum在3分钟内完成

Scrum工件

相关文章
相关标签/搜索