一、敏捷开发简史
1957年,增量软件开发方法出现。
1975年,Fred Brooks 提出“No Silver Bullet”,出版《人月神话》,相关概念和内容已与敏捷方法极其类似。
1986年,竹内弘高和 野中郁次郎在New New Product Development Game文章首次提到将Scrum应用与产品开发。
1993年,Jeff Sutherland在Easel公司首次将Scrum方法用于软件开发。
1995年,在OOPSLA‘95 会议上,Sutherland和Schwaber共同发表论文介绍Scrum方法。
1996年,Martin Fowler,Kent Beck,Ward Cunmingham将XP方法引入C3项目,是第一个被正式的XP项目。
1999年 Martin Fowler 著作《Refactoring: Improving the Design of Existing Code》出版,对敏捷开发中的“重构”实践首次进行系统化阐述。
2001年2月,由17位软件开发专家起草的敏捷宣言发表,敏捷联盟成立。
2001年,Ken Schwaber和Mike Beedle推出第一本Scrum书籍《Scrum敏捷软件开发》
2003年,《Lean Software Development: An Agile Toolkit》出版,精益开发方法被业界广泛认知,并完善了敏捷方法。
2010年,ScrumBan(The first article on Scrumban方法发表,综合了Scrum和Kanban
2010年,ThoughtWorks Jez Humble出版《Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation》首次正式提出构建流水线(Build Pipeline的概念,通过从根本上改变开发团队与运维团队的协作方式,达到敏捷软件交付,创造软件价值。
来自 csdn:敏捷十年简史回顾,我略有精简。csdn 这个链接地址已经失效。另外有效地址:有效地址。
二、敏捷宣言和12条原则
2001年2月,Martin Fowler,Jim Highsmith 等 17 位著名的软件开发专家齐聚在美国犹他州雪鸟滑雪圣地,举行了一次敏捷方法发起者和实践者的聚会。
看敏捷简史我们可以了解到,虽然敏捷宣言是 2001 年提出,但它其实是对前面几十年软件开发实践探索的一个总结。
2.1 敏捷宣言
由此我们建立了如下价值观:
个人和交互 高于 流程和工具
软件产品 高于 综合文档
客户协作 高于 合同协商
应变 高于 遵循计划
©敏捷宣言。2001 年。版权所有: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。
https://agilemanifesto.org/iso/zhchs/manifesto.html
2.2 敏捷宣言遵循的12条原则
2.欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
4.业务人员和开发人员必须相互合作,项目中的每一天都不例外。
6.不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
8.敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
10.以简洁为本,它是极力减少不必要工作量的艺术。
12.团队定期地反思如何能提高成效,并依此调整自身的举止表现。
https://agilemanifesto.org/iso/zhchs/principles.html
三、瀑布开发模型
瀑布模型(Waterfall Model 是 Royce 在 1970 年提出的。它强调软件开发的一个完整周期。
1.制定软件计划
3.软件设计
5.软件集成与测试
并且是自上而下的顺序,如同瀑布一样,开发步骤逐级往下流动。
不论后来的什么开发方法开发模型,都是对这几个软件开发阶段进行优化。
随着时间发展,软件功能越来越复杂,软件协作人数越来越多,瀑布模型也暴露了一些缺点:
2.各个软件开发阶段之间较少的反馈
后来又出现了原型模型、增量模型和迭代模型。
在下面一节简要介绍下增量模型和迭代模型。
四、增量模型和迭代模型
4.1 增量模型
增量模型(Incremental Model,也叫增量式开发,增量是指在软件开发过程中,先开发主要功能模块,再开发次要功能模块,逐步完善整个软件功能。
现在用编程语言写软件基本都是用的这个方法。
https://blog.csdn.net/chktsang/article/details/87010449
4.2 迭代模型
迭代模型(Iterative Model,也叫迭代进化式开发。迭代模型把整个开发工作组织为有固定长度工期的小项目,被称为一次迭代。经过多次迭代完善整个软件。
瀑布模型是相反的,瀑布模型是计划整个项目,然后一次性开发完成。
https://blog.csdn.net/chktsang/article/details/87010449