接触敏捷方法到现在已经有5个月的时间左右,期间我们也遵循敏捷开发模式进行项目的开发。另外就是因为在面试过程中被提问到对敏捷开发的理解,所以今天我想总结下我对敏捷开发的理解。
首先我想谈谈我对传统模式开发-瀑布式开发的理解。瀑布式开发是一种老的、过时的软件开发方法。它的整个过程是:需求分析、概要设计、开发、测试、维护。由此可见它的每一个阶段的输出是下一个阶段的输入,文档是整个阶段衔接的唯一信息,它采用的是文档驱动开发。
瀑布式开发套用自传统的工业化生产,有论文统计这也是造成70%软件开发失败的原因(过程周期长、反馈周期长、难以应对变化)。所以为了改变这一状态,在20世纪90年代,Martin Fowler和ThoughtWorks提出了敏捷方法,他们互相协助创作了“敏捷软件开发宣言”(http://agilemanifesto.org/iso/zhchs/manifesto.html)
经过时间修正后的解释:“两边价值一样多,但是我们刻意的选择了左边” —— 徐昊(ThoughtWorker)
敏捷开发(agile development)是一种以人为核心、迭代、循序渐进的开发方法,它采用的是迭代开发(迭代开发是指将一个复杂且开发周期特别长的开发任务分解成小周期且可完成的任务)。敏捷开发也包括站会、重构、CodeReview、Retro、看板等。敏捷开发的轻量级的方法包括:
- Scrum方法
- FDD - 特征驱动开发(Feature-Driven Development)
- DSDM - 动态系统开发方法(Dynamic Systems Development Method)
- Crystal - 水晶方法族(Crystal Methods)
- XP - 极限编程(Extreme Programming)
- ASD - 自适应软件开发(Adaptive Software Development)
未完待续!
本人是小白一枚,希望大家多多指教!