一、瀑布、迭代和敏捷的区别
瀑布:开发模型
重量级:所有需求统一步伐,全部分析完毕后再开始设计,全部设计完毕后再启动编码…
重过程:有明显的过程,每个过程不重叠,界线清晰 — SRS、HLD、LLD、Coding、UT、IT、ST,开发完毕后集中转测试。
迭代:开发模型
中量级:需求分成多批,每批一轮迭代,每轮内都是小瀑布;每轮迭代出一个版本交付测试。
没有明显的过程。
敏捷:开发模式
轻量级:需求分解成更小粒度,每个小粒度需求1~3天实现,并立即转测试。从瀑布、迭代到敏捷,是量变引起质变。(每轮迭代结束时出版本并不是测试的开始,更多的是开发和测试共同结束点)
过程:在一个过程框架下,嵌入了很多敏捷实践,并由很强的原则进行约束。
开发模式之外,更是一种思想、理念、文化!
二、敏捷宣言及对应实践
个体和交互 胜过 过程和工具:
实践:座位安排,结对编程,灵活检视,统一项目设置,每日站会,状态墙,回顾会议,技术展示
回顾会议(我们坚信,所有人都尽了最大的努力):开场、共享、信息手机、归类、好的做法、TOP问题、会后跟踪
可以工作的软件 胜过 面面俱到的文档
实践:简单设计、测试驱动开发、测试驱动修正、持续集成、本地构建、代码重构。
响应变化 胜过 遵循计划
实践:任务和迭代级别的项目管理、任务级签收、任务级别交付(尽早测试)
客户合作 胜过 合同谈判
实践:系统解剖、任务(小粒度需求)、迭代级澄清会议、任务级澄清会议