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