zxuanzi 2012-03-13
传统软件:
把软件开发类比为传统工业,规范后可重复“生产”
计划、预测
预定义过程和分阶段控制
一次性交付,变更成本大
严格过程监控
过程决定质量
典型:瀑布模型、CMM等
敏捷开发:
认为软件开发是复杂的有机生态系统,不可重复
探索、适应、演进
在变化中基于经验的过程
小批量快速交付,拥抱变化
严格交付验收
高效的人和协作是核心
典型:Scrum,XP,自适应软件开发
瀑布:开发模型
重量级:所有需求统一步伐,全部分析完毕后再开始设计,全部设计完毕后再启动编码…
重过程:有明显的过程,每个过程不重叠,界线清晰—SRS、HLD、LLD、Coding、UT、IT、ST,开发完毕后集中转测试。
迭代:开发模型
中量级:需求分成多批,每批一轮迭代,每轮内都是小瀑布;每轮迭代出一个版本交付测试。
没有明显的过程。
敏捷:开发模式
轻量级:需求分解成更小粒度,每个小粒度需求1~3天实现,并立即转测试。从瀑布、迭代到敏捷,是量变引起质变。(每轮迭代结束时出版本并不是测试的开始,更多的是开发和测试共同结束点)
过程:在一个过程框架下,嵌入了很多敏捷实践,并由很强的原则进行约束。
开发模式之外,更是一种思想、理念、文化!
敏捷优秀实践
发布计划
迭代
迭代计划会议
迭代展示会议
迭代回顾会议
故事澄清会议
故事级别签收
故事级别测试
每日站会
可视化管理
Session
开放式办公
测试驱动开发(TDD):测试、开发、重构(去除多余不规则代码)