什么是灵敏软件开发?灵敏软件开发是什么意思?

    灵敏软件开发不是一个详细的过程,而是一个涵盖性术语(umbrella term),用于概括具有类似基础的方式和方法。这些方法,其中包括极限编程(Extreme Programming)、动态系统开发方法(Dynamic System Development Method)、SCRUM、Crystal和Lean等,都着眼于快速交付高质量的工作软件,并做到客户满足。

    灵敏软件开发又称灵敏开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的详细名称、理念、过程、术语都不尽相同,相对于"非灵敏",更夸大程序员团队与业务专家之间的紧密协作、面临面的沟通(以为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。

灵敏开发词源

灵敏一词来源于2001年初美国犹他州雪鸟滑雪胜地的一次灵敏方法发起者和实践者(他们发起组成了灵敏同盟)的聚会。


灵敏开发价值观

雪鸟会议共同起草了灵敏软件开发宣言。其中最重要的部门就是对一些与会者一致同意的软件开发价值观的表述:

人和交互重于过程和工具。

可以工作的软件重于责备求全的文档。

客户协作重于合同谈判。

随时应对变化重于循分守纪。

其中位于右边的内容固然也有其价值,但是左边的内容最为重要


灵敏开发原则


宣言中还包括以下原则:
对我们而言,最重要的是通过尽早和不断交付有价值的软件知足客户需要。

我们欢迎需求的变化,即使在开发后期。灵敏过程能够驾驭变化,保持客户的竞争上风。

常常交付可以工作的软件,从几礼拜到几个月,时间标准越短越好。

业务职员和开发者应该在整个项目过程中始终朝夕在一起工作。

围绕斗志高昂的人进行软件开发,给开发者提供相宜的环境,知足他们的需要,并相信他们能够完成任务。

在开发小组中最有效率也最有效果的信息传达方式是面临面的交谈。

可以工作的软件是进度的主要度量尺度。

灵敏过程提倡可持续开发。出资人、开发职员和用户应该老是维持不变的节奏。

对卓越技术与良好设计的不断追求将有助于进步灵敏性。

简朴--尽可能减少工作量的艺术至关重要。

最好的架构、需乞降设计都源自自我组织的团队。

每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。
对比其他的方法

    灵敏方法有时候被误以为是无计划性和纪律性的方法,实际上更切当的说法是灵敏方法夸大适应性而非预见性。

灵敏开发适应性的方法
    集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难切当描述未来将会如何变化.

灵敏开发对比迭代方法
    比拟迭代式开发两者都夸大在较短的开发周期提交软件,灵敏方法的周期可能更短,并且更加夸大步队中的高度协作。

灵敏开发对比瀑布式开发

    两者没有良多的共同点,瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审视等等。
    瀑布式的主要的题目是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整,代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。
    相对来讲,灵敏方法则在几周或者几个月的时间内完成相对较小的功能,夸大的是能将尽早将尽量小的可用的功能交付使用,并在整个项目周期中持续改善和增强。
    有人可能在这样小规模的范围内的每次迭代中使用瀑布式方法,另外的人可能将选择各种工作并行进行,例如极限编程。
灵敏方法的合用性

    在灵敏方法其独特之处以外,他和其他的方法也有良多共同之处,好比迭代开发,关注互动沟通,减少中介过程的无谓资源消耗。通常可以在以下方面衡量灵敏方法的合用性:从产品角度看,灵敏方法合用于需求萌动并且快速改变的情况,如系统有比较高的枢纽性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、职员、沟通泽决定了灵敏方法是否合用。

灵敏开发跟这些相联系关系的枢纽成功因素有:

组织文化必需支持谈判
职员彼此信任
人少但是精干
开发职员所作决定得到认可

环境举措措施知足成员间快速沟通之需要

    最重要的因素恐怕是项目的规模。规模增长,面临面的沟通就愈加难题,因此灵敏方法适更用于较小的步队,20、40人或者更少。大规模的灵敏软件开发尚处于积极研究的领域。
    另外的题目是项目初期的大量假定或者快速收集需求可能导致项目走入误区,特别是客户对其自身需要毫无概念的情况下。与之类似,人之天性很轻易造成某个人成为主导并将项目目标和设计引入错误方向的境况。开发者常常能把不恰当的方案授予客户,并且直到最后发现题目前都能获得客户认同。固然理论上快速交互的过程可以限制这些错误的发生,但条件是有效的负反馈,否则错误会迅速膨胀。
敏捷软件开发方法列表

目前列入灵敏方法的有:
1.软件开发节奏,Software Development Rhythms
2.灵敏数据库技术
3.AD/Agile Database Techniques
4.灵敏建模,AM/Agile Modeling

5.自适应软件开发,ASD/Adaptive Software Development
6.水晶方法,Crystal

7.特性驱动开发,FDD/Feature Driven Development
8.动态系统开发方法,DSDM/Dynamic Systems Development Method

9.精益软件开发,Lean Software Development  

Scrum  

10.测试驱动开发,TDD/Test-Driven Development

XBreed

极限编程,en:XP/en:Extreme Programming

没有上一篇了