Agile方法即敏捷方法(agile methodologies)(也被称为轻量级方法,lightweight methodology),它是一组开发方法的统称。 随着技术的迅速发展和经济的全球化,软件开发出现了新的特点,即在需求和技术不断变化的情况下实现快节奏的软件开发,这就对生产率提出了很高的要求。
ISO-9000、CMM、SPICE目前已被公认为软件质量保障方面的事实标准,但由于其强调管理和控制,追求项目的可预测性和过程状态的可视性,在提高生产率方面并未予以足够的重视,实施时一方面需要大量中间制品(过程文档)的制作,给开发人员带来很大负担,另一方面,追求可预测性与实际需求的模糊和快速变化不相协调。在此情况下,出现了一些新的开发方法。
新的方法主要有Extreme Programming (简称XP)、SCRUM、Crystal Methodologies、Feature Driven Development(简称FDD)、Dynamic Systems Development Methodology(简称DSDM) 、Adaptive Software Development(简称ASD)、Pragmatic Programming等,统称轻载(Lightweight)方法,以区别于传统的开发方法(称重载方法,Heavyweight)。2001年2月,新方法的一些创始人在美国犹他州成立了Agile 联盟,将轻载方法正式更名为Agile方法,Agile有轻巧、机敏、活力的意思。
Agile 方法目前还没有一个明确的定义,其特点是对软件生产率的高度重视,主要适用于需求模糊或快速变化下的、小型项目组的开发。有人称,Agile方法是在保证软件开发有成功产出的前提下,尽量减少开发过程中的活动和制品的方法,笼统的讲就是,"刚刚好"(Just enough),即开发中的活动及制品既不要太多也不要太少,在满足所需的软件质量要求的前提下,力求提高开发效率。
任何软件开发方法都有一个相应的价值系统(Value system),方法通过价值系统对过程加以指导,方法只有在其应用周境(context)与价值系统相吻合时才能发挥真正效力,价值系统的基础是对世界的信仰和对软件开发特点的认识,可以说是核心理念。
Agile方法的代表人之一Martin Fowler提出了Agile方法的核心理念:适应和以人为本。
Agile方法中的价值系统和指导原则
Agile联盟提出了"四个价值"、"十二个指导原则"。
Agile方法的四个价值:
(1) 较之于过程和工具,更注重人及其相互作用的价值。
(2) 较之于无所不及的各类文档,更注重可运行的软件的价值。
(3) 较之于合同谈判,更注重与客户合作的价值。
(4) 较之于按计划行事,更注重响应需求变化的价值。
Agile方法的指导原则:
(1) 在快速不断地交付用户可运行软件的过程中,将使用户满意放在第一位。
(2) 以积极的态度对待需求的变化(不管该变化出现在开发早期还是后期)。Agile过程紧密围绕变化展开并利用变化来实现客户的竞争优势。
(3) 以几周到几个月为周期,尽快、不断地交付可运行的软件供用户使用。
(4) 在项目过程中,业务人员和开发人员最好能一起工作。
(5) 以积极向上的员工为中心建立项目组,给予他们所需的环境和支持,对他们的工作予以充分的信任。
(6) 在项目组中,最有用、最有效的信息沟通手段是面对面的交谈。
(7) 项目进度度量的首要依据是可运行的软件。
(8) Agile过程高度重视可持续开发。项目发起者、开发者和用户应能始终保持步调一致。
(9) 应时刻关注技术上的精益求精和设计的合理,这样能提高软件的快速应变力。
(10) 简单化(尽可能减少不必要工作的艺术)是基本原则。
(11) 最好的框架结构、需求和设计产生于自组织的项目组。
(12) 项目组要定期对其运作方面进行反思,提出改进意见,并相应进行细调。
此外,Agile方法实施中一般采用面向对象技术(接口定义良好的其它开发技术也可),另外还强调在开发中要有足够的工具(如配置管理工具、建模工具等)支持。