在软件项目管理中,软件开发实践一直在追求一种在业务需求,当前技术能力与能最大程度提高开发人员效率的方法之间的一种平衡,敏捷软件开发方法也不例外。在了解敏捷开发方法之前需要清楚敏捷宣言。
敏捷宣言
它描述了一组软件开发方法的关键价值,也是敏捷软件开发方法所遵守的原则。其具体内容如下:
个人与互动 | 大于 | 流程与工具 |
可用的软件 | 大于 | 文档 |
与客户的合作 | 大于 | 合约和商定 |
响应变化 | 大于 | 遵循计划 |
敏捷宣言所描述的软件开发方法具有更快速,更轻型的特点;它解决了传统瀑布软件开发方法和迭代,递增方法的一些缺陷。从敏捷宣言中可以看出敏捷方法应该具备如下特点:
1.敏捷方法是适应型的(Adaptive),而不是预测型(Predictive)的。敏捷方法拥抱变化,利用变化来发展,甚至改变自己,最后完善自己。也就是要用重构(Refactoring)。
2.敏捷方法一人为本而不是以过程为本,传统方法把开发者看作一个生产要素(分析员,测试员,程序员),拥有大量的中间产品(需求规约,设计模型等),而忽视了作为决定因素的人的特殊性。敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。
3.迭代增量式的开发过程,敏捷方法以原型开发思想为基础。迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。
敏捷是一种指导软件开发的思想,它并没有指定具体的软件开发方式或流程,目前常用的具体敏捷软件开发方法或流程如下:
- scrum
- XP(极限编程)
- 功能驱动开发
- Clear case
- 自适应软件开发
虽然这些软件开发方法的实现方式完全不同,但是他们具有如下的共同特征:
- 都将团队内部的交流放在优先地位,即鼓励开发人员,业务用户和测试人员经常交流。
- 注重项目的透明性;开发团队不是生存在一个黑盒中,不能向团队的其他成员隐藏自己的行为,都是用非常公开的工具来保证团队成员能够获得足够的信息
- 团队成员都是相互负责的;团队不会因为某一个人而成功或失败;他们的成功与失败是按整个团队来衡量的
- 开发人员没有自己的codebase,整个团队拥有完整的codebase,每个人都对其质量负责
- 工作是在短暂的开发周期中完成的,理想情况下,每个周期结束时会发布。
- 应对变化的能力是这种方法的基础
- 一个系统的大致框架是提前定义的,但详细设计要等到实际安排功能开发计划时才会进行