京东敏捷实践指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 敏捷是什么

2.1 敏捷历史

软件工程和项目管理的历史要从1910年说起,美国福特汽车公司(简称“福特”)的大规模生产将泰勒先生的科学管理方式发扬光大,其特点是大规模、大批量的“推动式”流水线过程。而与之相对的是1950年启动的丰田TPS生产系统,逐步演进到1986年的精益生产,其特点是小规模、小批量的“拉动式”过程。相应的软件工程方法在借鉴生产系统流水线的理念后,在软件开发领域遇到了很多问题。温斯顿·罗伊斯(Winston W.Royce)博士于1970年发表论文《管理大型软件系统的开发》,指出从需求、分析、设计、编码、测试到运维按照预定义好的、顺序的阶段来进行软件开发,这种方式是有风险的。他建议各阶段之间要有反馈,甚至各阶段尽可能做两遍。但行业人士忽视了温斯顿先生的警示,仅记住了这种软件开发模式——瀑布模式,还将其进行了大规模的传播和使用。温斯顿先生因此篇论文被视为瀑布式开发的鼻祖。

1986年,竹内弘高和野中郁次郎在哈佛商业评论中发表了题为The New New Product Development Game的文章,他们指出,传统的职能筒仓“接力式”的、阶段式的开发模式已经不能满足快速灵活的市场需求,而整体或“英式橄榄球式”重叠各阶段的方法(团队作为一个跨职能的整体在内部传球并保持前进)也许可以更好地应对当前激烈的市场竞争。受此文章的启发,肯·施瓦伯(Ken Schwaber)和杰夫·萨瑟兰(Jeff Sutherland)于1995年正式发布了Scrum框架,而同期其他的“轻量级”开发方法也如雨后春笋般涌现出来,如极限编程(Extreme Programming,XP)、特性驱动开发(Feature Driven Development,FDD)、自适应软件开发(Adaptive Software Development,ASD)及动态系统开发方法(Dynamic Systems Development Method,DSDM)等。

2001年2月,17位曾经经历过瀑布式文档与计划驱动的重量级软件开发流程的软件工程专家,带着各自的“轻量级”开发方法,在美国犹他州的雪鸟滑雪场进行了一场求同存异的聚会,他们将这些轻量级方法的共性,抽象和统一到了一个共同的价值观和原则上,这就是最终形成的《敏捷宣言》,也就是敏捷运动的开端。随后各种新的敏捷方法不断涌现,如精益软件开发、看板方法、大规模敏捷框架SAFe和LeSS、DevOps等。

回顾瀑布开发模式的发展,不得不提到CMMI和PMP。美国卡耐基梅隆大学软件工程学院SEI应美国国防部的要求,对如何规范国防部的软件开发项目进行了研究,于1991年发布CMM软件能力成熟度模型,对瀑布开发模式的大规模推广和应用起到了推动作用,直到2010年发布的CMMI1.3才纳入了部分对敏捷的支持,2018年3月28日发布的CMMI2.0明确提出对敏捷的支持。美国项目管理协会(PMI)从1984年推出第一次项目管理专业人士资格认证PMP开始,再到1996年项目管理知识体系(Project Management Body of Knowledge,PMBOK)第一版的发布,一直以“瀑布式”的项目管理方法为核心,直到2011年推出敏捷管理专业人士认证(Agile Certified Practitioner,PMI-ACP),才正式开始拥抱敏捷项目管理。从CMMI和PMP的演进历程来看,敏捷已经是大势所趋。

项目生命周期模型可以划分成4类。

(1)预测型生命周期(Predictive)——这种方法需要提前进行大量的计划工作,然后一次性执行,执行是一个连续的过程。

(2)迭代型生命周期(Iterative)——这种方法允许对未完成的工作进行反馈,从而改进和修改该工作。

(3)增量型生命周期(Incremental)——这种方法向客户提供多个已完成的、可立即使用的可交付成果。

(4)敏捷生命周期(Agile)——这种方法既有迭代也有增量,频繁交付,便于根据反馈不断完善交付成果。

项目生命周期的特点如表2-1所示。

表2-1 项目生命周期的特点

资料来源:PMI《敏捷实践指南》。