敏捷开发与瀑布开发_瀑布开发与敏捷开发 - CSDN
  • 敏捷方法传统方法的区别联系 首先,说一下传统开发的方式流程,传统开发也就是本文最开始所说的来自于工程学的软件开发方式,是一种瀑布式的流程,在工程的起始阶段,... 其次,说一下敏捷开发的方式流程,敏捷...

    敏捷方法与传统方法的区别与联系
      首先,说一下传统开发的方式流程,传统开发也就是本文最开始所说的来自于工程学的软件开发方式,是一种瀑布式的流程,在工程的起始阶段,进行详尽的需求调研,根据需求进行完全的架构设计,之后进入开发过程,在开发过程中,不再进行设计层面的事情,不再处理需求变化的问题,在这个阶段的任务就是对前期设计的功能实现,然后是测试,部署等等。 
      其次,说一下敏捷开发的方式流程,敏捷开发是在上个世纪90年代,传统开发方式不能够满足现实开发的需要,对传统方式进行总结,对成功失败的开发案例进行研究后,得到的一种不同于传统方式的开发流程,主要的特点是迭代式进行,这种方式把一个软件开发过程分成了若干个小的迭代过程,每一迭代完成一部分功能,每一次迭代过程的工作内容按照功能的重要程度不同而排列,首先完成重要的,同时也是风险比较大的功能,而后是次重要的,依此类推,同时在每次迭代中,都要进行分析、设计、开发、测试,因为分成了一个个小过程,一步步的逼近目标,所以,可以使得产品的用户能够逐渐得明白自己的真实需求从而能够提出真正的需求,而开发团队也可以根据更正后的需求进行下一次迭代的设计。 

      其一,敏捷开发是以人为中心,而传统开发以过程为中心。并不是说传统开发就没有人的参与,或者说人不是一个重要因素。应该说的是,敏捷开发和传统开发的侧重点、中心不同。那么为什么会是这个样子呢,或者说Martin   Fowler为什么要这么说呢?因为,传统开发中,设计已经是在初始阶段完成了,在实现阶段不再修改,换句话说,实现阶段就是对设计的完成,设计方案是不可改变的了。这样就忽略了用户的反馈、忽略了开发员的设计的主观能动性,使得开发员只是专注于代码层面的事情,这是很要命的事情,非常的考究需求工程师、设计师的能力,用一句话来形容这种设计-实现效果就是差之毫厘谬以千里。而敏捷开发提倡的是迭代,在每次迭代中都有分析、设计,也就意味着迭代阶段,可以把一部分完成的系统给用户演示,允许用户提意见、需求,也允许开发员将上一次迭代中得到的想法提出来,并且把这些需求意见想法融入到迭代的分析、设计中,从而在根本上、在理念上,促进了造、用双方的一个交流沟通,发挥了用户的分析评价和开发员设计的主观能动性。 
    其二,敏捷开发是adaptive的,而传统开发是plan驱动的。传统开发,设计阶段完成了,整个的过程就是按照设计方案进行,在设计阶段的后续过程中,无法再对设计方案进行修改,而敏捷开发需要一次次的迭代完成,正是这些迭代完成了对客户真实需求的软件的演进。

      一个控制大的流程,一个处理软件开发细节

    原文地址:https://blog.csdn.net/sghdls/article/details/64441512

    展开全文
  • 瀑布模型的特点 (传统的开发方式) 1、强调文档 前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期才可以看到...

     

    瀑布模型的特点

    (传统的开发方式)

    1、强调文档

    前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期才可以看到软件的“模样”。 

    2、没有迭代与反馈。瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应。瀑布就意味着没有回头路。 

    3、管理人员喜欢瀑布模型的原因是把文档理解为开发的速度,可以方便地界定不同阶段的里程碑。

     

    敏捷开发 

    极限编程的思想体现了适应客户需求的快速变化,激发开发者的热情,也是目前敏捷开发思维的重要支持者。

    敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。

     

    敏捷开发集成了新型开发模式的共同特点,它重点强调:

    1.敏捷就是“快”。快才可以适应目前社会的快节奏,要快就要发挥个人的个性思维多一些个性思维的增多。

    2.客户参与。以人为本,客户是软件的使用者,是业务理解的专家,没有客户的参与,开发者很难理解客户的真实需求。 

    3.强调软件开发的产品是软件,而不是文档。文档是为软件开发服务的,而不是开发的主体。 

    4.设计周密是为了最终软件的质量,但不表明设计比实现更重要。

    5.迭代。软件的功能是客户的需求,界面的操作是客户的“感觉”。对迭代的强调是缩短了软件版本的周期。

    6.小版本。快速功能的展现,看似简单,但对于复杂的客户需求合理地分割与总体上的统一,要很好地二者兼顾是不容易的。

     

    展开全文
  • 瀑布开发模式: 瀑布开发模式有以下显著的特点: 1.严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。 使用里程碑的方式,严格定义了...

    瀑布开发模式:

    瀑布开发模式有以下显著的特点:

    1.严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。

    使用里程碑的方式,严格定义了各开发阶段的输入和输出。如果达不到要求的输出,下一阶段的工作就不展开。

    2.重视和强调过程文档,在开发的中后期才会看到软件原型,早起只能通过文档来了解系统的模样。

    在这种情况下,文档的重要性仿佛已经超过了代码的重要性。

    3.瀑布模型把每个开发阶段都定义为黑盒,希望每个阶段的人员只关心自己阶段的工作,不需要关注其他阶段的工作。

    好处是:可以让开发人员能够更专注于本职工作,提高阶段效率。

    坏处是:

    a.由于各阶段的开发人员只能接触到自己工作范围内的东西,所以对客户需求的理解程度高低不等,开发人员更像是定义为流水线上的工人。

    b.对于客户需求变更,编码人员会比设计人员更容易产生很强的抵触情绪。

    c.在每个开发阶段都会有一些信息刻意的不让其他开发阶段的人员知道(本意是为了提到效率,但实际上有时候产生的是互相的理解偏差)。

    4.瀑布模型产生的管理文档(计划书,进度表)等,能让不太了解该项目的人也能看懂项目的进度情况(只有能看懂百分比就行),很适合向领导汇报用。所以管理人员比较喜欢瀑布模型,但是开发人员不喜欢,因为它束缚了开发人员的创造性。

    5.既然叫做瀑布,就意味着不应该走回头路。否则如果出现返工,付出的代价会很大。

    软件生命周期前期造成的Bug的影响比后期的大的多。

    代价比较大的主要原因还是每个开发阶段的步子过大,每一次调整都可能伤筋动骨。

    6.更适合需求相对稳定的大型项目。



    敏捷开发模式:

    核心是快速迭代,拥抱变化。

    因为最终目标是让客户满意,所以能够主动接受需求变更,这就使设计出来的软件有灵活性,可扩展性。

     

    宣言:

    个体和交互 胜过 过程和工具

    可以工作的软件 胜过 面面俱到的文档

    客户合作 胜过 合同谈判

    响应变化 胜过 遵循计划


    敏捷开发模式有以下显著的特点:

    1.story细化。

    2.简单设计,避免过度设计。

    3.重复迭代。

    4.减少不必要的文档。

    5.客户最关心的功能最先完成。

    6.要求客户有时间对每次迭代的成果进行确认,提出改进意见。

    7.showcase。

    8.沟通是非常重要的,所有的开发人员对项目活动的理解应该是一致的。加强团队之间和客户之间的沟通。

    9.测试驱动开发(TDD)

    10.需要更强的个人和团队能力。

    11.敏捷的管理是团队的自我管理和项目经理的服务式管理。

    12.敏捷开发不能在一开始就给出项目完整的成本计划。

    13.在有技术问题还没有解决的情况下不适合展开迭代。

    14.敏捷实践:晨会,deadline,负责人制等等。


    瀑布+敏捷开发模式:

    核心是减小瀑布模型的粒度,采用敏捷开发的优秀实践方式,提高开发的沟通效率,提供项目的全景视图。


    敏捷开发,首先把客户最关注的软件原型先做出来,交付或者上线,在实际场景中去修改弥补需求中的不足,快速修改,再次发布版本。再次上线或者交付。通过一些敏捷实践方式,细化story,可以提供更小的迭代。如此循环,直到用户(客户)满意。适用于需求不明确的项目、创新性的项目或者需要抢占市场的项目。
    瀑布式开发,要求明确的需求,大家按照需求一步步做好规划,在项目运作过程中严格产出各种文档,按着流程一步步走下去。这种模式一般适用于需求比较明确、to B端项目
    但总的来说,在现在管理项目过程中,并没有严格的按照完全的敏捷或者完全的瀑布模式,都是各自掺杂了其他的方式。在实际项目过程中,过于强调模式并没有意义,重要的是能不能预防问题的发生,在问题发生之后能不能用最小的成本解决,模式更多起一个参考作用

    最后借用民国时候的一句话:少研究一些主义,多关注一些实际问题。
    文章中部分内容是借鉴于其他文章。

    展开全文
  • 最近和朋友谈起敏捷开发(Agile Model)和瀑布开发(Waterfall Model)模式,很多人认为敏捷开发是未来的项目实施的趋势,瀑布实施太老土已经过时了。另外确实一些跨国企业如索尼,联想也在使用敏捷的方式实施一些...

          最近和朋友谈起敏捷开发Agile Model瀑布开发Waterfall Model模式,很多人认为敏捷开发是未来的项目实施的趋势,瀑布实施太老土已经过时了。另外确实一些跨国企业如索尼,联想也在使用敏捷的方式实施一些项目。但实际上我们看到绝大多数公司还是依然在采用瀑布的方式实施项目。我之前参与过敏捷开发的项目,但当时比较“年轻”,认识不是很深刻,于是最近又补习了下和大家一起分享下我对敏捷和瀑布的感悟。

           简单介绍敏捷开发和瀑布开发

           瀑布模型:瀑布模型是一种项目分解为有限的阶段来开发软件的方法。只有在审查并验证其前一阶段时,开发才会应进入下一阶段。在瀑布模型中,阶段不重叠。下图演示了瀑布模型:

           对于瀑布的开发模型来看,似乎依然具备很可靠的工作逻辑,一个工程或项目分为多个阶段,每一个阶段都投入相应的资源,来完成本阶段的工作。每一个阶段到下一个阶段,都有明确的输入输出产物,不同的阶段根据自己所需的输入,进行工作活动之后,产生自己阶段的产出,投入到下一个阶段的工作中。如果不放心的话,每一个阶段还可以增加一个审批环节,让每一个环节都可以经过可靠的审批之后,再投入到下一个环节当中。

    Salesforce crm开发2.jpg

           SDLC瀑布模型一般用于这些情况:要求稳定且不经常更改;应用程序很小;没有不明白或不明确的要求;环境稳定;使用的工具和技术是稳定的;不是动态的;资源可用。

           敏捷模型:维基百科将敏捷模型定义为“一组基于迭代和增量开发的软件开发方法,其中需求和解决方案通过自组织,跨职能团队之间的协作发展。”该模型有自己的原则,往往会使流程置于backset。

    Salesforce crm开发.jpg

          
           在敏捷看来,很多情况下面,我们都无法去了解到全部的内容,或者即使是了解到,我们也不能保证这些内容是不会变化的。所以先根据主路径,完成主要功能后,我们再通过不断地迭代,去完善我们的工作,这样当我们产生变化的时候,我们推翻的工作量也是少量的,可以很快的去完成新的需求变更。通过这样的不断地变更、重构,我们可以获得一个相对客户满意的产品。

           很多支持敏捷的同学会说瀑布缺乏与业务的沟通和迭代次数,所以如果在项目的后期才发现要更改需求的话,则项目可能会失败或需要重新启动。这张图好像也解释了瀑布开发经常所面临的困境。

    Salesforce crm开发3.jpg

           在高举效率与拥抱变化的大旗之下,似乎敏捷模式,就是最好的开发模式。与之相比的是瀑布模式,在这样的呼喊之中,显得有些无法跟得上步伐,体现的是陈旧、死板的。

           “瀑布”对“敏捷”的驳斥

           敏捷本身不是项目管理框架,也不是“方法论”。它是一套与产品开发相关的原则和价值,特别是互联网产品经常会采用敏捷的方法来进行开发。但是,有一些基于敏捷原则的方法,这些方法是产品开发方法,而不是项目管理框架。

           说到需求变更,瀑布也可以走需求变更,提变更申请,按照环节一步一步走,去规划工作量。虽然比敏捷是要慢一些,但是我整个流程是可靠的!为什么就说瀑布是死板的,不符合时代的呢?

           似乎瀑布的做法也没有错误,我们何不按照这样的步骤,来完成我们的工作呢?这样的过程听起来是如此的可靠。看,我有明确的阶段;看,我有明确的审批;看,我有明确的变更流程。以瀑布模式进行开发的项目有这么多,已经证明了这是一个有效的实施方法,难道不是么?

           另外被敏捷所诟病的瀑布项目经常失败通常是发生了非常严重的错误情况下才会产生。实际上只有在对项目的控制很差的情况下才会发生这种情况。瀑布型项目没有迭代和用户的多次反馈也是不正确的 - 很多项目可以通过产品原型图的方式和业务部门确认操作的流程,只是很多项目中并没有使用这种方法。

           焦点碰撞

          敏捷模式,两周一个迭代,每个迭代都能进行一定功能模块的交付,让用户更早的看到交付物,虽然只有部分,也可以让用户来提出自己的看法,产生变更的时候,开发人员也可以在下个迭代中进行修改,让用户进行再次的确认。

          从这样看来,两者的碰撞就是在交付的及时性上与面对变更的成本上,所看到有极大的变化。瀑布在交付阶段比较靠后,交付的模块比较完整,在面对变更的时候,变更影响范围就比较大,变更的成本就极大。问题发现的阶段越靠后,解决问题所需要付出的成本就更高。这样,就体现出来了敏捷对瀑布在这样的情景下面的优势。

          时间和成本,看起来就是敏捷和瀑布在选择时主要考虑的两个方面。未来能更好的指导未来的选择,下面还列出了更详细的敏捷和瀑布的优劣势。

          I 敏捷开发的优势:
           • 开发的阶段性成果会在开发过程中尽早的进行审查,项目的风险会降低;
           • 适用于需求不明确情况,因为需求不明确,所以需要在不断迭代的过程中来逐步理清需求。
           • 灵活性较高,几乎可以在任何时间进行需求变更;
           • 敏捷鼓励开发人员与业务用户之间进行多频次的沟通,业务用户的不合理需求以及开发人员的错误理解都会在这些频繁的沟通中进行不断审查和更新,
           • 敏捷的协作通常要高得多,通常能开发出更高质量的产品;
           • 适用于快速变化的项目,特别是面向前端业务人员的CRM系统项目更容易根据业务的变化而变化。

           I 敏捷开发的劣势:
           • 敏捷的概念接受度还不算太高,初次尝试可能不会非常成功;
            • 最终交付的内容无法预测,预期和实际完成的内容经常会有很大差异;
           • 敏捷需要高水平的协作以及开发人员和用户之间的定期沟通。 业务和IT人员在沟通前需要做大量的准备工作,但很多情况下业务的沟通时间无法保证;
            • 当存在乙方供应商的情况,敏捷会面临更大的挑战性。 客户通常希望尽早了解他们的项目投入。 预估项目时间和成本难度较高;
            • 在敏捷项目中,最大的问题可能是业务部门永远不希望有最终的截止时间。

          I 瀑布开发的优势:
            • 在管理良好的项目中,瀑布可以在早期提供交付的信心;
            • 项目团队成员不需要在同一地点频繁沟通;
            • 在需要大量的设计或分析的情况下瀑布是一种更合适的方法;
            • 如果在基本产品开发之外存在许多接口和依赖关系,瀑布式项目会使用工具来建模和管理这些接口和依赖关系。

           I 瀑布开发的劣势:
            • 许多企业和业务人员确实不容易在前期定义清楚需求,早期计划中所依据的假设需求可能存在很大风险;
            • 沟通的风险要高得多 - 特别是很多项目都是前期单向的沟通,后期项目和业务人员的预期差别很大;
            • 瀑布项目的风险一般都很高,因为基于无效假设基础上的需求可能会让项目无限度扩大。 所以你会看到很多瀑布项目都出现成本超出预算或延迟的情况。

           结论:

           敏捷和瀑布的实施方法差别还是很大的,瀑布几乎可以应用于任何类型的项目,尤其是大型的项目。

           敏捷方法今年来越来越受欢迎,尤其是当前SaaS软件当道,特别像Salesforce crm系统这样自带开发平台的SaaS产品可以非常容易的搭建初始原型并进行快速迭代,所以我们才会看到有越来越多的企业采用敏捷的方式来进行项目实施。总的来说敏捷并不能完全替代瀑布,它只是给了我们另外一种好的选择。

           如需了解更多,欢迎访问怡海软件官网 http://www.frensworkz.com/

     

    转载于:https://my.oschina.net/frensworkz/blog/3063878

    展开全文
  • 瀑布开发模式: 瀑布开发模式有以下显著的特点: 1.严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。 使用里程碑的方式,严格定义了各...
  • 联系信箱:feixiaoxing @163.com】 软件开发有很多的模式,一般认为有三种模式,分别是瀑布、迭代开发、敏捷开发瀑布模型是最基本的开发方式,它有严格的处理流程,分别是需求、设计、开发、测试、交付。瀑布...
  • 瀑布开发模式: 瀑布开发模式有以下显著的特点: 1.严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。 使用里程碑的方式,严格...
  • 瀑布开发模式: 瀑布开发模式有以下显著的特点: 1.严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。 使用里程碑的方式,严格定义了各...
  • 所谓敏捷开发与瀑布开发0.写在前面1.常见的开发模式2.什么是敏捷开发?2.1 敏捷开发宣言:2.2优点:2.3 确点:3.什么是瀑布开发?3.1 优点:3.2 缺点: 0.写在前面 项目管理者面临的一个大BUG是:程序员开发的是客户...
  • 瀑布模型开发与敏捷开发的对比   瀑布模型开发: 严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。 使用里程碑的方式,严格...
  • 敏捷开发(AD:Agile Development )以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可...
  • Deere公司,采用双速IT模式促使敏捷开发法和瀑布式开发法同时发挥作用。这家公司并没有被视为圣地亚哥地区大数据方面的巨头。但该公司最新的农业设备却能在无需人工操作员的情况下,能够把最好的种子种植在可利用的...
  • 瀑布模型&敏捷开发

    2016-02-29 13:35:43
  • 敏捷开发瀑布模型对比  瀑布、迭代、螺旋、敏捷——在这里讨论的敏捷,都属于过程模型  ...
  • 敏捷开发强调以人为中心,快速迭代,客户参与多沟通,减少不必要的文档,包括Scrum和XP 优点:快速适应变化,做出的项目比较接近客户需要的 缺点:文档不多,如果人员流动大,维护相对更难 瀑布开发强调文档,就是...
  • 本文综述了嵌入式系统敏捷开发(Agile Development),敏捷宣言,敏捷的原则,很多的敏捷开发的实践习惯,敏捷开发与瀑布开发流程的区别,敏捷的任务stories划分,并行开发、敏捷的时间安排,敏捷的通信交流方式等等。...
  • 敏捷开发 以人为核心、迭代、循序渐进的开发方式 简化文档,提取文档重点,主要在于人人之间的沟通, 对开发产品进行迭代,最终完成开发。 迭代:迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小...
1 2 3 4 5 ... 20
收藏数 13,143
精华内容 5,257
关键字:

敏捷开发与瀑布开发