技术开发 频道

解读敏捷

【IT168 分析评论】

解读敏捷宣言(Agile Manifesto)

    让我们先从著名的敏捷联盟的《敏捷软件开发宣言》(简称“敏捷宣言”)谈起。

    Manifesto for Agile Software Development

    We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

    Individuals and interactions over processes and tools.

    Working software over comprehensive documentation.

    Customer collaboration over contract negotiation.

    Responding to change over following a plan.

    That is, while there is value in the items on the right, we value the items on the left more.

Kent Beck                 Mike Beedle                Arie van Bennekum
Alistair Cockburn    Ward Cunningham    Martin Fowler
James Grenning    Jim Highsmith            Andrew Hunt
Ron Jeffries            Jon Kern                       Brian Marick
Robert C. Martin     Steve Mellor                 Ken Schwaber
Jeff Sutherland       Dave Thomas

    Copyright 2001, the above authors. This declaraton may be freely copied in any form, but only in its entirety throught this notice.


敏捷运动的价值和意义 

    2001年,十多位软件专家、大师聚集在一起,成立敏捷联盟,发表《敏捷宣言》,开启了软件工程领域的一场敏捷运动,这无疑是世界软件工程史上的一次里程碑事件,它的意义非同凡响。 

    我们知道,在《敏捷宣言》面世的 10 年之前,有CMU SEI过程成熟度模型CMM的发表,4 年之前,有Rational统一过程RUP的发布,2 年之前,有ISO 9001的更新。CMM体系、ISO体系以及RUP框架,都是对软件工程、软件过程改进领域产生了重要影响的宝贵成果。那么,它们(及其他知名的过程标准、参考模型等)是否囊括了所有先进、成熟的软件过程方法、技术和思想,是否是软件过程改进的终极模版? 

    答案显然是否定的。 

    熟悉CMM、ISO和RUP体系的人知道,这些成熟模型和成果的获得,其实都植根于不同的软件开发细分领域,代表了这些细分领域专家、大师们的观点和主张,符合他们的经验与认知。而西方《敏捷宣言》、敏捷联盟和诸多新型敏捷方法的出现,可谓生逢其时,很好地反映了世界软件工程界另一些细分领域,另一部份专家和大师们的不同观点与主张。 

    通过发出不同的声音,解放思想,扬弃传统,积极变革创新,从而推动软件开发方法、技术和工艺的发展,我想,这正是这场敏捷运动的根本价值和意义所在。

如何解读西式Agile? 

    作为一名中国程序员,东方软件人,我们应该如何解读这份西式的《敏捷宣言》? 

    首先,我们看到,敏捷绝不是教条,敏捷同样是一种平衡或权衡(balance or tradeoff)。事实上,张恂和许多朋友一样持有这样一个观点:软件工程(还包括其他行业的所有工程)本质上就是一门有关权衡的科学和艺术。《敏捷宣言》里说的很清楚,右边的东西同样有价值(there is value in the items on the right),《敏捷宣言》并非要彻底抛弃过程与工具、周详的文档、合同协商和遵守计划,只不过西方的敏捷大师们更看重天平的左边,往天平的左边多加了一点砝码罢了(we value the items on the left more)。那么,这个more到底是多少呢? 

  • Agile 是多样化的

    敏捷联盟中的十几位专家,根据每个人不同的技术特点和主张,大致可以分为这样几个流派(类别): 

    Scrum:Jeff Sutherland、Ken Schwaber、Mike Beedle 
    XP:Kent Beck、Ward Cunningham、Ron Jeffries、Martin Fowler、Robert C. Martin、James Grenning 
    Crystal:Alistair Cockburn 
    ASD/APM:Jim Highsmith 
    Pragmatic Programming:Andrew Hunt、Dave Thomas 
    DSDM:Arie van Bennekum 
    Agile MDA/UML:Jon Kern、Steve Mellor 
    Agile Testing:Brian Marick 

    此外,我推荐大家及我本人关注的,未加入敏捷联盟的主要敏捷专家还有: 

    Mary & Tom Poppendick(Lean Software Development) 
    Craig Larman(Scrum, AID, AUP 和 AM 等) 
    Scott Ambler(Agile Modeling, AUP, Agile Database 等) 
    Peter Coad 和 Jeff De Luca(FDD) 
    Mike Cohn(User Stories and Agile Planning)等。 

    从以上的大致分类中,我们可以看到,当前敏捷方法体现出多样化,流派纷呈,各显特色的局面。敏捷,不是一种方法,而是多种方法的集合。您是否想过,为什么这么多流派、风格迥异的软件开发专家、大师们能够走到一起,共同宣传和推广一种新的软件开发思想和理念,推动软件开发工艺的变革? 

    《敏捷宣言》所反映的价值观和原则,正是能够整合这么多位专家的共同基础与核心。此外,这么多种敏捷方法,是否有什么共性的东西呢?如果我们能抓住它们之间的共性,那么就很可能抓住了理解敏捷,掌握敏捷的关键。

  • 迭代开发是敏捷的基础

    Scrum大概是目前应用最多、最热门的敏捷方法。 

    XP为什么会有这么高的知名度和关注度?

西式Agile不是敏捷的全部 

    难道,一份Agile Manifesto就是敏捷的全部?敏捷联盟所代表的那些敏捷方法集合,是否就是世界上所有可行的敏捷方法,它们是否就是完美无缺的、敏捷的终极? 

    答案显然也是否定的。更有甚者,西方已经开始有人提出Post-Agile(张恂认为,有点为时过早)。 

    我们发现,现有公开发表的敏捷文献中,未涉及或鲜有涉及的关键点包括:

  • 如何与软件客户签订一份敏捷的合同,建立切实可行的敏捷契约关系;
  • 如何对内部员工进行有效的敏捷考核,而不实行大锅饭体制。

    我们认为本质上是敏捷的元素,而未被西方敏捷大师或敏捷联盟列入其中,或重点强调:

  • 适度的OOAD,适度的UML建模,适度的前构设计,是敏捷的;
  • 有效的模型驱动开发,框架代码自动生成,是非常敏捷的;
  • 敏捷的软件重用与管理;
  • 敏捷的风险管理。

    虽然《敏捷宣言》发表迄今已 6 年,可以这么说,世界范围内的敏捷运动才刚刚开始。

0
相关文章