前 言 自1968年“软件危机”[Naur et al 1969]一词出现以来,软件产业从业者和学者一直在探讨如何将传统行业中的工程方法应用于软件行业,希望软件的开发过程以一种受控、可预测的方式进行,并因此出现了软件工程这一学科。40多年来,软件从仅仅应用于国防军事和航空航天等高端领域,逐渐渗透到几乎所有的产业,甚至已经像水和空气一样成为人类日常生活和工作不可或缺的元素。相应地,软件开发领域相继出现了许多不同的开发过程和模型,从瀑布式模型、螺旋式模型,到CMMI软件能力成熟度评估和改进框架等。这些过程模型和框架无一例外地都是基于“完美的结果产生于精确控制的过程”这个理念,对软件开发生命周期中的计划与执行都十分重视,“按计划、不超预算、实现了预定的需求规格范围、产出物的质量可接受”,成了一种公认的、软件开发项目成功的标准。 对于最早利用计算机软件的国防军事和航空航天等复杂的、需要大量预先设计的应用领域来说,上述模型或项目成功标准依然成立。但是就数量上来说,在今天,更多的软件项目是服务于面对市场激烈竞争氛围的企业。能否快速响应市场的变化、调整自己的经营和管理方式,是决定一个企业能否生存和发展的根本因素,在这种情况下,已有的软件开发过程和模型就显得有些滞重,从而造成企业的信息化系统研发经常不能满足其日新月异的经营方式所需。为此,从20世纪90年代中后期开始,在企业应用软件开发的圈子里,陆续出现了一些轻量级的开发方法[Fowler 2004],这些方法以企业业务价值最大化为目标,快速适应企业的业务变化,并尽量缩短企业信息系统从规划到初次投入使用的时间周期。在2001年的一次学术讨论会上,这些方法的创作者和拥护者们总结了这些方法的共性,发表了敏捷宣言,并将这些方法统一到“敏捷”这一面旗帜之下[Agilemanifesto 2001]。 最近十几年来,很多敏捷软件开发方法的成功案例,终于使之从“草根一族”渐渐走入了主流软件开发方法学的厅堂:CMM/CMMI的核心发起单位—卡耐基-梅隆大学的SEI,也专门有研究报告,以论证敏捷方法和CMMI的兼容性和互补性[Glazer et al 2008];兼并了著名的软件工程工具厂商Rational的业界大鳄IBM,也宣称推出自己的敏捷软件开发解决方案[IBM 2009]。国内敏捷软件开发的起步虽然较欧美晚,但在经济全球化的今天,敏捷热潮也逐渐从国外传到国内,尤其是随着业界领导厂商之一的ThoughtWorks公司进入中国市场,以及一贯致力于敏捷方法推广的IT专业媒体网站InfoQ中文站的开通,使得敏捷方法在中国也正以燎原之势快速地传播。通过其官方网站不难看出,国内最大的软件企业华为公司也已经开始采用这种方法[Huawei 2009]。 众所周知,日本丰田汽车的精益制造方法[Krafcik 1988],是对美国福特公司所发明的、曾经主宰汽车制造业的大批量、流水线生产方式的一种革命性的推进。精益的核心就是消除生产过程中的一切浪费,而敏捷软件开发方法由于大大减少了开发过程中在制品的数量及相关活动,加之所有的开发活动都是受客户的业务价值最大化驱动的,因此也极大地降低了不直接体现在最终产出物价值中的成本,与精益制造的想法不谋而合[Elssamadisy et al 2007]。 目前国内有关敏捷软件开发的书籍虽然也有一些,但多为译作或影印版本。作者衷心希望本书能有抛砖引玉之效果,引起中国软件业从业者和广大学者对敏捷软件开发给予更大的关注,并在不久的将来国内能够出现更多、更好的本土原创著作。受作者水平所限,本书中难免存在诸多不当之处,敬请读者向本书作者(sangdayong@gmail.com)指出。 本书由三位作者联合编著而成。海南师范大学信息与科学技术学院的吴丽华教授编写了本书的第1章,空军工程大学工程学院航空装备管理工程系的王瑛教授编写了本书的第2章,其余章节由桑大勇编写。 本书在完成的过程中得到了海南师范大学学术著作出版资助项目的支持;作者曾经向用友管理软件学院的李台元院长多次请教过企业信息化的方法论,对形成第6章有很大帮助。作者谨在此表示衷心的感谢。最后,还特别要感谢西安电子科技大学的蔡希尧教授,他对本书体系框架的形成给予了很多指导,提出了许多建设性的意见。