还有人在问什么是敏捷软件开发。
敏捷是一个术语,用于描述强调增量交付、团队协作、持续规划和持续学习的软件开发方法,而不是试图在接近尾声时一次性交付。
敏捷专注于保持流程精益并创建最小可行产品,这些产品在最终确定之前经过多次迭代。反馈会不断收集和实施,总的来说,这是一个更加动态的过程,每个人都朝着一个目标努力。

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

Scrum
Scrum是一个框架,人们可以在其中解决复杂的适应性问题,同时富有成效和创造性地交付具有最高价值的产品。通常Scrum用于软件开发和产品或应用程序开发。它的重点是适应性产品开发策略,其中跨职能团队作为一个单元在2-4周内实现共同目标。它由一系列价值、工件、角色、仪式、规则和最佳实践组成。
看板
看板是一种高度可视化的工作流管理方法,在精益团队中很流行。事实上,83%的精益实践团队使用看板来可视化和积极管理产品的创建,重点是持续交付,同时不会使团队负担过重。与Scrum一样,看板是一个旨在帮助团队更有效地协作的过程。
看板基于3个基本原则:
想象你今天要做的事(工作流程):查看彼此上下文中的所有项目可以提供非常丰富的信息; 限制进行中的工作量(WIP):有助于平衡基于流程的方法,因此团队不会立即开始承诺过多的工作; 增强流程:当某件事完成时,积压中的下一个优先级最高的项目被拉入迭代;
看板通过定义最佳的团队工作流程来促进持续协作并鼓励积极、持续的学习和改进。
极限编程
极限编程(XP)最初由Kent Beck描述,目前已成为最受欢迎和最具争议的敏捷方法之一,XP是一一种快速、持续交付高质量软件的规范方法。它旨在面对不断变化的客户需求时提高软件质量和响应能力。它促进了客户的高度参与、快速反馈循环、持续测试、持续规划和紧密的团队合作,以非常频繁的实践间隔(通常每1~3周)交付工作软件。
该方法论的名称来源于将传统软件工程实践的有益元素带到“极端”水平的想法。例如,代码审查被认为时一种有益的做法,更极端的是,通过结对编程的实践,可以不断地审查代码。
最初XP方法基于四个简单的价值观——简单、沟通、反馈和勇气。
它还有十二辅助实践:####
- 增量和反复式的开发----一次小的改进跟着一个小的改进。
- 反复性,通常是自动重复的单元测试,回归测试。参见JUnit。
- 结对程序设计
- 在程序设计团队中的用户交互(在场的客户)
- 软件重构
- 共享的代码所有权
- 简单
- 反馈
- 用隐喻来组织系统
- 可以忍受的速度
功能驱动开发(FDD)
功能驱动开发(FDD)由Jeff De Luca于1997年引入。它是一个迭代和增量的软件开发过程,是一种敏捷软件的开发方法。FDD将许多行业公认的最佳实践融合成一个有凝聚力的整体。这些实践是从重视客户的功能(特性)的角度驱动的。它的主要目的是及时地重复交付切实可行的软件。使用FDD的优势在于可以扩展到大型团队,由于其以功能为中心的流程,它是保持对敏捷、增量和固有复杂项目的控制的绝佳解决方案。它包括五个基本活动:
- 整体模型的开发;
- 功能列表的构建;
- 按功能规划;
- 按功能设计;
- 按功能构建;
每个项目都有自己独特的模型,这将产生一个功能列表。最后三个活动是短迭代过程,构建一个功能不超过两周。如果需要两周以上的时间,则必须将其分解为更小的功能。