`
longgangbai
  • 浏览: 7340422 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

什么是敏捷软件开发

阅读更多

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

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

词源

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

价值观

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

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

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

客户协作重于合同谈判。

随时应对变化重于循规蹈矩。

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

原则

宣言中还包括以下原则:

对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要。

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

经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。

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

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

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

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

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

对卓越技术与良好设计的不断追求将有助于提高敏捷性。

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

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

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

对比其他的方法

敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。

适应性的方法

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

 

对比迭代方法

相比迭代式开发两者都强调在较短的开发周期提交软件,敏捷方法的周期可能更短,并且更加强调队伍中的高度协作。

对比瀑布式开发

两者没有很多的共同点,瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。

瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整,代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。

相对来讲,敏捷方法则在几周或者几个月的时间内完成相对较小的功能,强调的是能将尽早将尽量小的可用的功能交付使用,并在整个项目周期中持续改善和增强。

有人可能在这样小规模的范围内的每次迭代中使用瀑布式方法,另外的人可能将选择各种工作并行进行,例如极限编程。

敏捷方法的适用性

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

组织文化必须支持谈判

人员彼此信任

人少但是精干

开发人员所作决定得到认可

环境设施满足成员间快速沟通之需要

最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,因此敏捷方法适更用于较小的队伍,20、40人或者更少。大规模的敏捷软件开发尚处于积极研究的领域。

另外的问题是项目初期的大量假定或者快速收集需求可能导致项目走入误区,特别是客户对其自身需要毫无概念的情况下。与之类似,人之天性很容易造成某个人成为主导并将项目目标和设计引入错误方向的境况。开发者经常能把不恰当的方案授予客户,并且直到最后发现问题前都能获得客户认同。虽然理论上快速交互的过程可以限制这些错误的发生,但前提是有效的负反馈,否则错误会迅速膨胀。

方法列表

目前列入敏捷方法的有:

软件开发节奏,Software Development Rhythms

敏捷数据库技术 >,AD/Agile Database Techniques

 

 

敏捷建模,AM/Agile Modeling

自适应软件开发,ASD/Adaptive Software Development

水晶方法,Crystal

特性驱动开发,FDD/Feature Driven Development

动态系统开发方法,DSDM/Dynamic Systems Development Method

精益软件开发,Lean Software Development

Scrum

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

XBreed

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

分享到:
评论

相关推荐

    敏捷软件开发 原则模式与实践

    首先,我们要理解什么是敏捷软件开发。敏捷开发是一种以人为本、迭代且增量的软件开发方法论,强调灵活应对需求变化,以客户满意度为核心目标。它提倡快速响应变化,通过短周期的迭代,不断交付可用的软件,从而提高...

    敏捷软件开发书籍 pdf

    敏捷软件开发书籍合集,包括: [Scrum敏捷软件开发] [The.Pragmatic.Bookshelf开发丛书-敏捷开发回顾:使团队更强大] [The.Pragmatic.Bookshelf开发丛书-敏捷开发指导] [敏捷开发修炼之道] [用户故事与敏捷方法]

    敏捷软件开发.pdf

    敏捷软件开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调快速和灵活地响应变化,以适应不断变化的需求。敏捷方法反对繁重的文档和过度的预设计,提倡可适应性、可持续性和持续的客户合作。 书中,...

    敏捷软件开发原则、模式与实践.pdf

    《敏捷软件开发原则、模式与实践》一书是由著名软件开发专家、软件工程大师Robert C. Martin所著。这本书自出版以来,就被视为敏捷开发领域内的经典之作,对于软件开发人员、项目经理以及软件项目领导者来说,它提供...

    Scrum敏捷软件开发过程.pdf

    Scrum是一种敏捷软件开发框架,它强调灵活性、协作和快速响应变化的能力。Scrum的核心理念是通过短期迭代(称为Sprints)和跨职能团队的工作来不断交付可用的软件,并在整个过程中密切与利益相关者合作。 **敏捷...

    敏捷软件开发Agile介绍PPT课件.pptx

    "敏捷软件开发Agile介绍PPT课件.pptx" 敏捷软件开发是当前软件开发中最流行的开发方法之一,旨在快速响应客户需求,提高软件开发效率和质量。该PPT课件对敏捷软件开发进行了详细的介绍,涵盖了敏捷软件开发的历史...

    敏捷软件开发知识体系

    敏捷软件开发知识体系是中国敏捷软件开发联盟在2011年推出的一项重要工作,旨在采集国内企业敏捷成功实践,对敏捷软件开发进行深入研究。在软件开发领域,敏捷方法提供了一种与传统瀑布式方法不同的开发哲学和实践,...

    敏捷软件开发实践

    ### 敏捷软件开发实践 #### 一、引言 《敏捷软件开发实践》是一本深受读者喜爱的书籍,它不仅介绍了敏捷开发的核心理念,还深入探讨了如何将这些理念付诸实践。这本书通过一系列实用的例子和建议,帮助开发者更好...

    敏捷软件开发敏捷软件开发

    敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发

    敏捷软件开发实践估算与计划 Mike Cohn

    《敏捷软件开发实践估算与计划》是Mike Cohn的一部著作,由清华大学出版社于2016年出版。这本书深入探讨了在敏捷开发环境中如何进行有效的估算和计划,旨在帮助团队提升开发效率和项目成功率。 1. **敏捷开发**:...

    Scrum敏捷软件开发

    《Scrum敏捷软件开发》是敏捷联盟及Scrum联盟创始人之一、敏捷估算及计划的鼻祖Mike Cohn三大经典著作中影响最为深厚的扛鼎之作,也是全球敏捷社区中获得广泛肯定的企业敏捷转型权威参考。作者花四年时间,把自己近...

    敏捷软件开发:原则、模式与实践清晰扫描中文版PDF(503页完整版)

    本书《敏捷软件开发:原则、模式与实践》是由全球知名的软件开发专家和软件工程大师Robert C. Martin所著,该书是关于敏捷开发与极限编程的综合性、实用性指南。书中深入探讨了软件开发人员、项目经理以及软件项目...

    敏捷软件开发精要.pdf

    敏捷软件开发是一种以人为核心,迭代、循序渐进的软件开发方法。其核心在于适应变化,它鼓励快速和灵活的响应变化,让软件产品更加贴合用户的需要。敏捷方法推崇跨功能的团队合作、面对面的沟通、自组织和自驱动的...

    敏捷软件开发:原则、模式与实践(全)

    敏捷软件开发:原则、模式与实践(全) 敏捷软件开发:原则、模式与实践(全) 敏捷软件开发:原则、模式与实践(全) 敏捷软件开发:原则、模式与实践(全) 敏捷软件开发:原则、模式与实践(全)

    敏捷软件开发.doc

    ### 敏捷软件开发核心理念与实践 #### 敏捷宣言与原则 敏捷软件开发,源于21世纪初,由一群软件开发领域的先驱者共同创立,旨在应对快速变化的市场需求,提高软件开发效率和质量。《敏捷软件开发宣言》明确提出了...

    敏捷软件开发方法论.pptx

    **什么是敏捷软件开发** 敏捷软件开发是一种以人为本、迭代驱动的现代软件工程方法。它强调灵活性、快速响应变化以及持续交付有价值的工作软件。相较于传统的瀑布式开发模式,敏捷方法论更加注重团队之间的互动、...

Global site tag (gtag.js) - Google Analytics