`

软件开发模式对比(瀑布、迭代、螺旋、敏捷)

阅读更多

1、瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法。
瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。
步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。 

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


2、迭代式开发也被称作迭代增量式开发迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。
什么是迭代式开发?
每次只设计和实现这个产品的一部分, 
逐步逐步完成的方法叫迭代开发, 
每次设计和实现一个阶段叫做一个迭代. 

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、
固定长度(如3周)的小项目,被称为一系列的迭代。
每一次迭代都包括了需求分析、设计、实现与测试。
采用这种方法,开发工作可以在需求被完整地确定之前启动,
并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。
再通过客户的反馈来细化需求,并开始新一轮的迭代。

迭代式开发的优点:
  1、降低风险
  2、得到早期用户反馈
  3、持续的测试和集成
  4、使用变更
  5、提高复用性



螺旋开发,1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
“螺旋模型”刚开始规模很小,当项目被定义得更好、更稳定时,逐渐展开。 

  “螺旋模型”的核心就在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚。您轻松上阵,定义最重要的功能,实现它,然后听取客户的意见,之后再进入到下一个阶段。如此不断轮回重复,直到得到您满意的最终产品。 
       (1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件; 

  (2)风险分析:分析评估所选方案,考虑如何识别和消除风险; 

  (3)实施工程:实施软件开发和验证; 

  (4)客户评估:评价开发工作,提出修正建议,制定下一步计划。 
螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。


 



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

  • 人和交互 重于过程和工具。
  • 可以工作的软件 重于求全而完备的文档。
  • 客户协作重于合同谈判。
  • 随时应对变化重于循规蹈矩。


其中位于右边的内容虽然也有其价值,但是左边的内容最为重要。
人员彼此信任 人少但是精干 可以面对面的沟通

项目的敏捷开发:
敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果; 
关注业务优先级; 检查与调整。

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




四者对比区别:

传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。
特别是前期阶段,设计的越完美,提交后的成本损失就越少。

迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目的,以最短的时间,
最少的损失先完成一个“不完美的成果物”直至提交。然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善。

螺旋开发,很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。
敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。 

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

分享到:
评论

相关推荐

    敏捷软件开发与传统软件开发的对比分析1

    本文将对比分析瀑布模型(传统软件开发的典型代表)和敏捷开发中的迭代式开发、原型模型以及螺旋模型,探讨它们的优势和局限性。 1. **瀑布模型** - **概述**:瀑布模型由Winston Royce于1970年提出,是最早被广泛...

    软件开发模式

    螺旋模型结合了迭代开发和瀑布模型的严格性,强调风险分析,适用于大规模软件开发项目。该模型要求客户对风险分析有信任和反馈。问题在于需要高水平的客户信任,以及可能对项目利润产生影响。 8. 敏捷开发模型...

    软件工程实践中的敏捷开发与迭代开发模式1.pptx

    - **软件生命周期模型**:传统的瀑布模型、螺旋模型等,这些模型按照一定的顺序进行软件开发的各个阶段,如需求分析、设计、编码、测试、部署等。 - **敏捷开发与传统开发模式的比较**:传统开发强调严格的计划和...

    大话软件项目管理之软件开发模式

    敏捷开发模式中的SCRUM是一个典型的敏捷开发框架,它通过短迭代周期(通常为1-4周)的Sprint来进行开发,每个Sprint结束都会产生一个可工作的软件版本,有助于持续交付价值。 文章通过一个生动的例子说明了项目管理...

    敏捷开发与传统开发模式的比较分析.docx

    迭代式开发是一种与传统的瀑布式开发相反的软件开发过程,具有更高的成功率和生产率。螺旋开发是一种风险驱动的方法体系,将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析。 与传统开发模式相比...

    产品需求文档:如何撰写一份适合敏捷迭代开发的PRD文档?.docx

    软件开发方式有瀑布模式、迭代增量式、螺旋模式、敏捷开发等。敏捷开发相比其他模式,它的优点是开发周期短(一至两周为一个周期)、更强调队伍的高度协作、更迅速的响应。在互联网时代,时间就是金钱,多花一天时间...

    最流行的开发模式 CMMI、RUP、MSF和敏捷

    软件开发行业中有多种开发模式,但 CMMI、RUP、MSF 和敏捷四种模式是当前最流行的。每种模式都有其特点和优缺,了解这些模式的特点和应用场景是非常重要的。 CMMI(Capability Maturity Model Integration)即能力...

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

    与传统的非敏捷开发方式相比,敏捷开发更加强调团队成员间的紧密合作与沟通,重视软件开发过程中的人的因素。这种开发模式鼓励频繁地交付新版本的软件,以便快速获得反馈并根据反馈进行调整,从而更好地适应市场需求...

    传统开发与敏捷开发对比1

    在软件开发领域,两种主要的开发模式分别是传统开发和敏捷开发。它们各自具有独特的特点和适用场景。 1. **传统软件开发过程模型**: - **瀑布模型**:这是一种线性的开发方法,各阶段依次进行,一旦前一阶段完成...

    软件开发模式-PPT.pptx

    根据提供的文件信息,我们可以深入探讨软件开发模式的关键知识点,尤其是围绕传统的瀑布模型和现代的敏捷开发模式。 ### 一、瀑布模型 瀑布模型是最早期的软件开发模型之一,其核心理念是按照一定的顺序和阶段来...

    敏捷软件开发

    敏捷软件开发是一种以人为核心,迭代、循序渐进的软件开发方法。这种方法强调适应性、灵活性和快速响应变化,致力于打破传统瀑布式开发中需求固定、项目周期长、反馈慢的问题。敏捷开发的一个重要特征是它的适应性和...

    敏捷软件开发和传统开发方法的区别1

    敏捷软件开发与传统开发方法之间的主要区别在于它们的开发流程、灵活性和对变化的响应能力。传统开发方法,如瀑布模型,强调线性、顺序的开发过程,每个阶段完成后才能进入下一个阶段。瀑布模型将软件开发分为计划、...

    基于敏捷方法的软件开发.pptx

    - **发展历史**:软件开发的历史可以追溯到计算机诞生之初,随着时间的发展,出现了多种不同的开发方法,如传统的瀑布模型、V模型、螺旋模型等。 - **现代社会的地位**:随着信息技术的飞速发展,软件开发已成为推动...

    论软件开发模型及应用

    在软件工程发展历程中,出现了线性开发模型(如瀑布模型)和迭代开发模型(如螺旋模型、统一过程和敏捷开发模型等)。选择合适的开发模型对软件开发的成功至关重要。 本文以 X 市公安局数据中心支撑平台项目为例,...

    KC02070000001_《软件开发与项目管理》_电子教材_模块一软件开发模型与开发方法.pdf

    《软件开发与项目管理》模块一探讨了软件开发的核心概念,包括软件开发过程模型和开发方法。软件开发是一个系统性的过程,涉及分析、设计、编码、测试和维护等多个阶段。理解并掌握这些阶段的相互作用和关系对于软件...

    软件开发方法.pdf(绝对的好书,精通必看)

    - **敏捷软件开发**:敏捷开发强调快速迭代、用户反馈和团队协作,适用于需求变化频繁的项目。 #### 二、软件开发环境 - **开发环境**包括了编写、测试和部署软件所需的各种工具和技术。一个好的开发环境可以显著...

    软件开发标准 软件开发标准

    不同的开发模型如瀑布模型、螺旋模型、增量模型和敏捷模型都在SDLC框架下运行。 5. **质量管理**:软件质量保证(QA)和质量控制(QC)是确保软件满足预期功能和性能的重要环节。QA关注过程,而QC关注结果。ISO 9001和...

    软件工程软件开发各模型详解

    在软件工程领域,软件开发模型是指导项目团队按照一定顺序和结构进行软件开发的方法论。这些模型定义了软件生命周期中的各个阶段以及它们之间的关系,帮助团队有效地管理风险、提高产品质量和开发效率。以下是对几种...

    关于研发团队敏捷管理心得

    敏捷管理是一种以用户需求为中心,强调快速响应变化的软件开发模式。它倡导通过迭代、小步快跑的方式,不断优化产品,以确保软件始终能够满足用户的需求。相较于传统的瀑布模型、迭代式开发、螺旋开发,敏捷管理更...

Global site tag (gtag.js) - Google Analytics