敏捷开发(agile development)方法通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包含其他提倡敏捷性(快速和灵活的响应变更)的价值和实践。
由于特定实践多种多样,因此不可能精确地定义敏捷方法。然而,具备进化式精化的计划、需求和设计的短时间定量迭代是这些方法所共有的基本实践。除此之外,它们还倡导反映简易、轻量、沟通、自组织团队等更多敏捷性的实践和原则。
Scrum敏捷方法中的实践范例包括公共项目工作室和自组织团队,这些实践通过每日例行会议来协调工作,在例会上要求每位成员回答四个特定问题。极限编程(XP)方法中的实践范例包括结对编程和测试驱动开发(test-driven development)。
包括UP在内的任何迭代方法都可以施加以敏捷精神。同时,UP本身就是灵活的,以“不管黑猫还是白猫,抓到耗子的就是好猫”的态度引入Scrum、XP和其他方法中的实践。
图2-4 进化式分析和设计——早期迭代的主要形式
敏捷宣言
个体和迭代,超越过程和工具
工作的软件,超越完整的文档
客户协作,超越合同谈判
响应变更,超越履行计划
敏捷原则
1. 优先级最高的是,通过早期和持续交付有价值的软件来满足客户。
2. 欢迎变更需求,即使在开发的后期提出。敏捷过程为客户的竞争优势而控制变更。
3. 以两周到两月为周期,频繁地交付可运行的软件,首推较短的时间定量。
4. 在整个项目过程中,每一天开发人员都要和业务人员合作。
5. 由个体推动项目的建设,为个体提供所需的环境、支持和信任。
6. 在开发团队中或开发团队间传递信息的最为有效和高效的方法是面对面交谈。
7. 衡量进展的重要尺度是可运行的软件。
8. 敏捷过程提倡可持续的开发。
9. 发起人、开发者和用户应该步调一致 。
10. 不断地关注技术上优越的设计会提高敏捷性。
11. 简洁是最重要的,简洁就是尽量减少工作量的艺术。
12. 最佳的架构、需求和设计来自于自组织的团队。
13. 团队要定期反省如何使工作更有效,然后相应地调整行为。
2001年,一群关注迭代和敏捷方法的人(铸就了“敏捷”这一术语)为寻求共识会聚一堂。该会议的成果是创建了敏捷联盟(www.agilealliance.com)并发表了代表敏捷精神原则的宣言和声明。