敏捷开发与瀑布开发的区别
在敏捷开发兴起前,人们普遍使用瀑布开发模型。瀑布开发主要流程是:需求分析、设计、编码、测试和维护。
瀑布开发对需求文档的依赖性很强,开发时间长,对变化和变更的响应难度大。导致产品投入市场太慢,员工士气、动力和责任感不强,投资回报率低,常失败。
敏捷开发模型是瀑布开发模型后出现的一种迭代增量式的开发方法,弥补了瀑布开发模型的不足,倡导减少文档,多进行面对面沟通,短期交付可用产品,拥抱并快速响应变化。
敏捷开发宣言
敏捷开发有4条宣言:
- 个体交互胜过过程和工具
强调人的核心作用,人是过程和工具的主体。优秀的人结合良好的工具,才能产生高效的生产力。一个优秀的人加上普通的工具,会胜过一个普通的人使用优秀的工具。过程和工具是死的,人是活的。
- 可用的软件胜过完备的文档
一方面倡导,每次迭代时,交付可用的软件。
另一方面,减少文档信息传输,多面对面沟通,快速响应。能打电话就不要写信。
- 客户协作胜过合同谈判
在和甲方签订合同时,不可能做到将甲方需求完整的、清晰的表述在合同中。“违约”后追究责任不是目的,完成符合要求的产品才是目的。
所以不如,在彼此信任的基础上,建立互助合作式的关系,积极、快速的响应甲方提出的需求,多沟通,让合同指导敏捷开发。
- 响应变化胜过遵循计划
在产品开发过程中,欢迎变化,拥抱变化。计划的安排需要有足够的灵活性,避免呆板。快速的迭代计划要优于中长期计划。
敏捷开发原则
- 最先要做的是通过尽早、持续地交付有价值的软件或产品来是用户满意
- 即使到了开发后期,也欢迎改变需求
- 经常交付可以工作的软件,交付时间间隔越短越好
- 整个项目开发期间,业务人员和开发人员必须天天呆在一起
- 围绕被激励起来的个人构建项目
- 在团队内部,最具有效果且富有效率的传递信息的方法是面对面的交谈
- 工作的软件或产品是首选的进度度量标准
- 敏捷过程提倡平稳的开发节奏,发起人、开发者和用户应能保持一个长期、恒定的开发速度
- 不断地关注优秀的技能和好的设计会增强敏捷能力
- 简单化是根本,不要做过度设计和预测
- 最好的架构、需求和设计出自于自组织的团队
- 团队会定期对前一个迭代进行反省总结,以便调整自己的行为,提高开发效率