`

什么是敏捷开发?

阅读更多
敏捷开发(agile development)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
      敏捷开发是全新理论吗?答案莫衷一是。细心的人们可以发现,敏捷开发其实借鉴了大量软件工程中的方法。迭代与增量开发,这两种在任何一本软件工程教材中都会被提到的方法,在敏捷开发模式中扮演了很重要的角色。再向前追溯,我们还也可见到瀑布式与快速原型法的影子,也许还有更多。

      改善,而非创新。敏捷开发可理解为在原有软件开发方法基础上的整合——取其精华,去其糟粕。因此敏捷开发继承了不少原有方法的优势。“在敏捷软件开发的过程中,我们每两周都会得到一个可以工作的软件,”Fowler介绍,“这种非常短的循环,使终端客户可以及时、快速地看到他们花钱构建的软件是一个什么样的结果。”

     也许是因为时间关系,Fowler只说出了这些优势中的一部分。允许开发过程中的需求变化、通过早期迭代可以较早发现风险、使代码重用变得可行、减少项目返工……借鉴了众多先进方法和丰富经验,拥有的众多优势使得敏捷开发看来已经成为解决软件危机的标准答案。

    然而,我们不得不面对的现实却是,模式与方法的优化并不意味着问题的终结。作为一种开发模式,敏捷开发同样需要面对众多挑战。

    大项目的拆分意味着更多子项目的出现,协调这些同步或异步推进的子项目,合理的资源调配都将变得更加复杂。另外,在当前项目和项目组普遍“增容”的情况下,遇到的问题同样成倍增长。人的重要性被提到了更高的高度,而缺乏有效协调手段,减少人员流动和项目变更对整个项目造成的影响也将成为一大挑战……新方法带来众多便利的同时,也相应引发了几乎同样多的问题。

    敏捷开发(agile development)概念从2004年初开始广为流行。Bailar非常支持这一理论,他采取了"敏捷方式"组建团队:Capital One的"敏捷团队"包括3名业务人员、两名操作人员和5~7名IT人员,其中包括1个业务信息指导(实际上是业务部门和IT部门之间的"翻译者");另外,还有一个由项目经理和至少80名开发人员组成的团队。这些开发人员都曾被Bailar送去参加过"敏捷开发"的培训,具备相关的技能。

    每个团队都有自己的敏捷指导(Bailar聘用了20个敏捷指导),他的工作是关注流程并提供建议和支持。最初提出的需求被归纳成一个目标、一堆记录详细需要的卡片及一些供参考的原型和模板。在整个项目阶段,团队人员密切合作,开发有规律地停顿--在9周开发过程中停顿3~4次,以评估过程及决定需求变更是否必要。在Capital One,大的IT项目会被拆分成多个子项目,安排给各"敏捷团队",这种方式在"敏捷开发"中叫"蜂巢式(swarming)",所有过程由一名项目经理控制。

    为了检验这个系统的效果,Bailar将项目拆分,从旧的"瀑布式"开发转变为"并列式"开发,形成了"敏捷开发"所倡导的精干而灵活的开发团队,并将开发阶段分成30天一个周期,进行"冲刺"--每个冲刺始于一个启动会议,到下个冲刺前结束。

    在Bailar将其与传统的开发方式做了对比后,他感到非常兴奋--"敏捷开发"使开发时间减少了30%~40%,有时甚至接近50%,提高了交付产品的质量。"不过,有些需求不能用敏捷开发来处理。" Bailar承认,"敏捷开发"也有局限性,比如对那些不明确、优先权不清楚的需求或处于"较快、较便宜、较优"的三角架构中却不能排列出三者优先级的需求。此外,他觉得大型项目或有特殊规则的需求的项目,更适宜采用传统的开发方式。尽管描述需求一直是件困难的事,但经过阵痛之后,需求处理流程会让CIO受益匪浅。

    敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏捷联盟。他们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,他们认为:

·个体和交互 胜过 过程和工具
·可以工作的软件 胜过 面面俱到的文档
·客户合作 胜过 合同谈判
·响应变化 胜过 遵循计划

并提出了以下遵循的原则:

·我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
·即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。
·经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
·在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
·围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
·在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。
·工作的软件是首要的进度度量标准。
·敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
·不断地关注优秀的技能和好的设计会增强敏捷能力。
·简单是最根本的。
·最好的构架、需求和设计出于自组织团队。
·每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

    敏捷设计就是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净及富有表现力。请记住,敏捷开发人员不会对一个庞大的预先设计应用那些原则和模式。相反,这些原则和模式被应用在一次次的迭代中,力图使代码以及代码所表达的设计保持干净。

分享到:
评论
1 楼 lydawen 2008-12-08  
受教了。
有些功能相对独立的项目倒是可以这么做,但有些项目相当于是给客户做规划,然后根据规划来设计最终的系统[软件]。而之所以给客户做规划,是因为客户他不知道具体需要的是一个什么样的系统,例如:我需要一辆汽车,但什么样外观的汽车我不知道,汽车有什么样的功能我不知道。
于是,我们就按照行业特性及经验进行汽车的设计,一段时间后,客户说,我的汽车需要喇叭====
这样的项目可能不好使用这种方法。

相关推荐

    敏捷开发的艺术

    , 本书为以下问题提供了明确的答案:, 怎样才能采用敏捷开发?, 我们真的需要结对编程吗?, 汇报应该详细到什么程度?, 如果无法让客户参与进来该怎么办?, 我们应该编写多少文档?, 何时进行设计和架构?, 作为一名非开发...

    敏捷开发 敏捷开发 敏捷开发 敏捷开发

    敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发

    论文研究 - 敏捷开发:探索从业者想知道的东西

    c)如何从计划驱动的Waterfall开发过渡到敏捷开发? d)有哪些工具可用于实施敏捷开发? 如何使用它们来支持敏捷实践? 以下是我们从解释性案例研究中针对上述四个问题得出的答案:a)优秀的敏捷从业人员根据客户的...

    敏捷开发项目流程介绍,什么是敏捷开发

    敏捷开发

    敏捷开发知识体系

    主要内容包括:敏捷开发的哲学理念、价值观、敏捷开发方法框架和敏捷实践,企业敏捷转型参考框架,帮助企业回答为什么要进行敏捷转型,敏捷转型包含哪些内容和如何开展敏捷转型等问题。 第1章 敏捷开发知识体系总体...

    软件项目管理论文:敏捷在软件开发中的应用

    本文从敏捷方法的定义,提出背景,实施方法等方面对敏捷方法进行描述,并与传统软件工程方法相对比,分析敏捷开发的优劣。通过实际软件开发的案例分析软件生产的价值观,得出敏捷方法在软件开发中的价值。关键词:...

    Scrum敏捷框架培训.pptx

    什么是软件过程?什么是敏捷开发?什么是Scrum?....本资源详细为您解答

    敏捷开发模式.xls

    通俗易懂的解释了什么是敏捷开发模式!敏捷开发带来的好处和优点!传统的瀑布开发模式有哪些弊端,敏捷开发模式和瀑布开发模式的比较和不同!

    UML和模式应用期末复习资料

    什么是敏捷开发? 请说明对象图的适用场景以及它的优缺点? 什么是UP的阶段? 用例和使用场景之间是什么关系?与协作又是什么关系? 在用例图中参与者是什么,它属于系统范围之内吗? 请简要阐述在软件开发过程中...

    敏捷开发管理试题及参考答案.pdf

    敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及...

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

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

    敏捷开发、极限编程

    什么是敏捷开发?一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和 可运行的特征。简言之,是把一个大项目分为多个相互联系,...

    敏捷开发中编写高质量Java代码

    敏捷开发的理念已经流行了很长的时间,在敏捷开发中的开发迭代阶段中,我们可以通过五个步骤,来有效的提高整个项目的代码质量。 Java项目开发过程中,由于开发人员的经验、Java代码编写习惯,以及缺乏统一的标准和...

    最完整的Scrum敏捷软件开发过程.ppt

    什么是敏捷软件开发? 敏捷方法的项目计划 敏捷项目管理和传统项目管理 为什么使用敏捷? Scrum概述 Scrum的角色 Scrum实践和工作产品 敏捷开发中的估计方法 测试驱动开发 Scrum应用 支持工具和模版 一些常见的...

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

    在本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导...这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。

    CSDN_敏捷开发相关文档全收集_5

    公司项目需要利用敏捷开发模式进行开发,故在CSDN上进行相关资料的查找搜集。27个资料,293 MB,花费了150多积分.现将所有查到的文档进行分包压缩,贡献给大家。因为实在花的积分过多,请原谅我不是无偿的。每个...

    敏捷开发,敏捷开发,敏捷开发,敏捷开发

    这里不做详细说明,这本书是讲开发人员团队合作的一种方式,45个变成习惯

    华为敏捷开发介绍

    华为敏捷软件开发解读 为落实敏捷软件开发在我司的顺利推行,使广大软件开发管理者和开发人员深刻领会敏捷核心理念,熟练掌握敏捷实践方法,从而达到增强...敏捷学习参考材料包括:《华为敏捷开发解读》及相关附件。

    华为敏捷开发介绍(华为敏捷软件开发解读V1.01).ppt

    华为敏捷开发,devops,敏捷开发流程,需求分析,华为管理流程

Global site tag (gtag.js) - Google Analytics