第1关:敏捷开发方法
任务描述
本关任务:根据所学有关敏捷开发方法的知识,完成右侧的练习题。
相关知识
为了完成本关任务,你需要掌握:
1.敏捷开发的具体含义;
2.常见敏捷方法的内容和特性。
敏捷开发简介
敏捷开发( agile development )是非常流行的软件开发方法。据统计,2018年90%的软件开发采用敏捷开发。那什么是敏捷开发呢?
1、迭代开发
敏捷开发的核心是迭代开发( iterative development )。敏捷一定是采用迭代开发的方式。
迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。
2、增量开发
增量开发+迭代开发=敏捷开发。
所谓"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。
3、敏捷开发的优势
- 早期交付,可大大降低成本;
- 了解市场需求,降低产品不适用的风险。
4、敏捷开发的价值观
《敏捷软件开发宣言》里面提到四个价值观。
- 程序员的主观能动性,以及程序员之间的互动,优于既定流程和工具;
- 软件能够运行,优于详尽的文档;
- 跟客户的密切协作,优于合同和谈判;
- 能够响应变化,优于遵循计划。
5、常见的敏捷开发方法
在接下来的内容里,我们将重点学习目前主要的四种敏捷开发方法。它们分别为:
- 极限编程( XP )
- 水晶方法( Crystal )
- 并列争球法( Scrum )
- 自适应软件开发( ASD )
极限编程( XP )
极限编程( ExtremeProgramming ,简称 XP )是由 KentBeck 在1996年提出的。极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。模型结构如图1所示。
XP 是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
四大价值观:沟通、简单性、反馈和勇气;
五个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
水晶法( Crystal )
水晶( Crystal )方法论由 Alistair Cockburn 在20世纪90年代末提出。他把开发看做是一系列的协作游戏,而写文档的目标是帮助团队在下一个游戏中取得胜利。
水晶方法的工作产品包括用例、风险列表、迭代计划、核心领域模型,以及记录了一些选择结果的设计注释。
值得注意的是这些文档没有模板,描述也不太规范,但目标清晰,能够满足下次游戏开始的条件。
水晶法的特征:
- 强调软件开发流程的纪律性;
- 试图用最少纪律约束而仍能成功,从而在产出效率与易于运作上达到一种平衡。
并列争球法( Scrum )
Scrum 是一个用于开发和维护复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个 Sprint ,每个 Sprint 的建议长度是 2 到 4 周。Scrum 结构如图2所示。
1、Scrum 的特征
-
以经验性过程控制理论(经验主义)作为理论基础的过程;
-
采用迭代、增量的方法来优化可预见性并控制风险;
-
Scrum 起源于软件开发项目,但它适用于任何复杂的或是创新性的项目。
2、Scrum 过程框架 -
Scrum 过程框架的基石:透明性、检验、适应;
-
四大支柱:迭代开发、增量交付、自组织团队、高优先级的需求驱动;
-
三个角色:产品负责人、Scrum Master 和开发团队。
自适应软件开发( ASD )
ASD 强调开发方法的适应性,这一思想来源于复杂系统的混沌理论。
ASD 不像其他方法那样有很多具体的实践做法,它更侧重为 ASD 的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。
作答要求
根据相关知识,按照要求完成右侧选择题任务。作答完毕,通过点击“测评”,可以验证答案的正确性。
参考资料
【1】敏捷开发入门教程
【2】敏捷开发:5种主流开发方法介绍
答案