1.敏捷方法的特点
敏捷型方法主要有两个特点,这也是其区别于其他方法,尤其是计划驱动或重型开发方法的最主要的特征。
1)适应性和预设性
敏捷型方法是“适应性”(adaptive)而非“预设性”的。重型方法试图对一个软件开发项目在很长的时间跨度内做出详细的计划,然后依计划进行开发。这类方法在计划制订完成后拒绝变化,而敏捷型方法欢迎变化。其实,敏捷的目的就是成为适应变化的过程,甚至能允许改变自身来适应变化。
2)面向人而非面向过程
敏捷型方法是“面向人的”(People Oriented)而非“面向过程的”(Process-oriented)。它们试图使软件开发工作能够充分发挥人的创造能力。它们强调软件开发应当是一项愉快的活动。
敏捷开发过程还要去开发人员必须有权做技术方面的所有决定。
敏捷方法特别强调开发中相关人员之间的信息交流。
敏捷方法还特别提倡直接的面对面交流。
2.敏捷方法的核心思想
敏捷方法的核心思想主要有下面3点:
(1)敏捷方法是适应型,而非可预测型。与传统方法不同,敏捷方法拥抱变化,也可以说它的初衷就是适应变化的需求,利用变化来发展,甚至改变自己,最后完善自己。
(2)敏捷方法是以人为本,而非以过程为本。传统方法以过程为本,强调充分发挥人的特性,不去限制它。并且软件开发在无过程控制和过于严格烦琐的过程控制中取得一种平衡,以保证软件的质量。
(3)迭代增量式的开发过程。敏捷方法以原型开发思想为基础,采用迭代增量式开发,发行版本小型化。它根据客户需求的优先级和开发风险,制订版本发行计划,每一发行版都是在前一成功发行版的基础上进行功能需求扩充,最后满足客户的所有功能需求。
3.主要敏捷方法简介
这里简单介绍几种影响比较大的敏捷方法。
(1)极限编程(Extreme Programming,XP)。
在所有的敏捷型方法中,XP是最引人瞩目的。极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气,即任何一个软件项目都可以从4个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。
(2)水晶系列方法。
水晶系列方法是由Alistair Cockburn提出的敏捷方法系列。它与XP方法一样,都有以人为中心的理念,但在实践上有所不同。其目的是发展一种提倡“机动性的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模型、工作产品和实践。
(3)Scrum。
该方法侧重于项目管理。Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架(是一种流程、计划、模式,用于有效率地开发软件)。
(4)特征驱动开发方法(Feature Driven Development,FDD)。
FDD是由Jeff De Luca和大师Peter Coad提出来的。FDD是一个迭代的开发模型。FDD认为有效的软件开发需要3个要素:人、过程和技术。
FDD定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。根据项目大小,部分角色可以重复。
FDD有5个核心过程:开发整体对象模型、构造特征列表、计划特征开发、特征设计和特征构建。