敏捷开发的特质

什么是敏捷开发?

敏捷开发就是在高度协作的环境中,不断地利用反馈进行自我调整和完善。

红色的关键字也指出了敏捷开发的三个特点:

  • Close Collaboration 高度协作——以人为核心,
  • Adoptation 不断自我调整和完善——持续整合,循序渐进,
  • Fast Feeback 反馈——迭代开发,尽早反馈。

何为高度协作?

由于大学课程软体工程的限制,还有一些小公司的实习经历,曾一度让我以为瀑布式开发就是最正确的,一叶障目。与敏捷不同,瀑布式开发是以文件为核心的,严格遵循预先计划的需求、分析、设计、编码、测试的顺序,各个环节彼此分离,主要依靠记录的文件进行沟通,要求写详细的文件,但是,任何人在做任何事之前,都不可能预测出所有的可能性,一次性设计完美,所以可想而知,这样的开发方式,会导致整个专案周期又臭又长,问题不断,返工不断,效率低下,严重打击团队成员的积极性,工作乏味。但是敏捷开发呢,强调以人为核心,各个环节的人面对面交流,使用者也参与其中,客户协作胜过合同谈判,只写必要的文件,人为可工作的软体胜过面面具到的文件,团队中所有人一起工作,不论哪个环节,有问题及时提出,沟通调整,响应变化胜过遵循计划,所以敏捷开发可以及时发现问题,防患于未然。

 

何为不断自我调整和完善?

敏捷开发强调开发要持续不断,只要有人使用这个软体,开发就没有真正结束。在《高效程式设计师的45个习惯》中这样写道:为什么要持续开发呢?因为软体开发是一件复杂的脑力劳动,任何遗留下来的问题,要么侥幸不会发生意外,要么使情况变的更糟,慢慢恶化到不可控制。面对这样的问题,唯一的办法就是持续地推进和完善专案,把问题扼杀在萌芽状态。

 

何为反馈?

敏捷开发将冗长的专案周期划分为一个一个短暂的小周期,每个周期都有一个可交付的产品,一个周期就是一个迭代,每个迭代的成果都要给客户演示,及时获得反馈,定期回顾,持续改进,这样小步开发,及时获得反馈,就不会出现像瀑布开发一样到最后交付出使用者不满意到产品,然后再大动筋骨地改造,耗费成本。

 

敏捷开发的好处是什么?

从敏捷开发的特点不难看出它的好处,提高开发效率,每一次迭代都能及时获得使用者的反馈,大方向不容易走错,步步为营,不用返工,效率必然提升;降低开发成本,不用返工,自然成本降低;提高产品质量,敏捷开发要求团队成员面对面工作,及时沟通,交流程式码,共同进步,产品的质量自然高,也不容易出现一个人离开团队,其他人就无法接受他的工作他的程式码这样的事。

 

Scrum和其他领先的敏捷方法

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

Scrum敏捷伞

Scrum敏捷伞

Scrum

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

 

精益 (Lean)

精益起源于丰田生产系统(TPS),它在20世纪50年代,60年代及以后彻底改变了实物商品的制造。Lean坚持制造业,但也在知识工作中找到了新的应用,帮助所有行业的企业**消除浪费,改进流程,促进创新**。软件开发是精益方法的自然应用,因为与制造业一样,它通常遵循一个明确的过程,具有一定的接受条件,并导致有形价值的传递。指导精益方法所有实践的关键概念,我们称之为精益支柱。他们是:

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

看板 (Kanban)

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

看板基于3个基本原则:

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

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

 

动态系统开发方法(DSDM)

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

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

  • 必须有(M)
  • 应该有(S)
  • 可以有(C)
  • 不会有(W)

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

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

极限编程 (XP)

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

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

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

它还有12个支持实践:

  • 规划游戏
  • 小版本
  • 客户验收测试
  • 简单的设计
  • 配对编程
  • 测试驱动开发
  • 重构
  • 持续集成
  • 集体代码所有权
  • 编码标准
  • 隐喻
  • 可持续发展

极限编程

极限编程

特征驱动开发(FDD)

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

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

特征驱动开发(FDD)

特征驱动开发(FDD)

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

水晶 (Crystal)

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

  • 相互作用
  • 社区
  • 技能
  • 人才
  • 通讯

敏捷宣言

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

敏捷宣言

敏捷宣言

那么让我们来看看敏捷宣言的第一行。这条线表明,我们重视人,他们的互动,沟通和协作,而不是拥有各种广泛的流程和工具。当然,流程和工具很有价值,但是,如果它们实际上支持人们一起工作并提供优质产品,那么它们就更有价值。我们现在在很多组织中看到的是,流程和工具本身就是目标。从敏捷的角度来看,我们对此有不同的看法。流程和工具应该支持人们共同合作并为客户创造价值。

敏捷宣言原则

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

敏捷宣言原则

敏捷宣言原则

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

摘要

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

 

References

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章