几种常见软件过程模型的比较

瀑布模型

瀑布模型(经典生命周期)提出了软件开发的系统化的、顺序的方法。其流 程从用户需求规格说明开始,通过策划、建模、构建和部署的过程,最终提供一 个完整的软件并提供持续的技术支持。

优点:

1. 强调开发的阶段性,各阶段具有顺序性和依赖性

2. 强调早期调研和需求分析,推迟编码实现的观点

3.  提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以 在该摸板下有一个共同的指导

缺点:

1. 文档驱动,用户无法及时了解产品的情况

2. 依赖早期调研和需求分析,很难适应在许多项目开始阶段必然存在的不确定 性。

3.  流程单一,必须要完成前一阶段的任务,才能进行下一阶段,开发过程中的 成功经验无法用于本产品。

4.  测试在后期引入,对于系统存在的重大缺陷,如果在可执行程序评审之前没 有被发现,将可能造成重大损失。

5. 组织庞大,人员闲置。

适用范围:需求确定,工作能够采用线性的方式完成的软件。

增量过程模型

增量过程模型包括增量模型、RAD 模型。

(一)增量模型 增量过程模型以迭代的方式运用瀑布模型,把软件产品作为一系列的增量构

件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够

完成特定的功能。使用增量模型时,第一个增量往往是核心功能。

优点:

1.能在较短的时间内向用户提交可完成部分工作的产品。

2.逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个 全新的软件可能给客户组织带来的冲击。

3. 规避技术风险

4. 可并行开发构件,加快开发的进度

缺点:

1.  没有考虑软件的整体质量和长期的可维护性。

2.  大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工 具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。

3.  由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计

适用范围:项目在既定的商业要求期限之前不可能找到足够的开发人员;

(二)RAD模型

RAD  模型是一种侧重于短暂的开发周期的增量软件过程模型,它是瀑布模 型的“高速”变体,通过基于构建的构建方法实现快速开发。开发团队能够在非

常短的时间内创造出“全功能系统”

优点:

1.开发速度快,质量有保证。

2.对信息系统特别有效。

缺点:

1.  对于大型的可伸缩的项目,RAD 需要大量的人力资源来创建多个相对的独立 的 RAD 团队

2.  如果开发者和用户没有为短时间内急速完成整个系统做好准备,RAD 项目将

会失败。

3.  如果一个系统不能合理的模块化,RAD 构件建立会有很多问题。

4.  如果系统需求是高性能,并且需要通过调整构件接口的方式来提高性能,不 能采用 RAD 模型

5.  技术风险很高的情况下

适用范围:1、 不适合技术风险很高的开发,不适合系统需求是高性能,并且需 要通过调整构件接口的方式来提高性能的产品开发。

2、 适用于工期紧张,又可细分功能,还要有合适的构件

演化过程模型

演化过程模型包括原型开发,螺旋模型,协同开发模型。

(一)原型开发 从需求收集开始,开发者和客户在一起定义软件的总体目标,标识已知的需

求并且规划出需要进一步定义的区域。然后是“快速设计”,它集中于软件中那些 对客户可见的部分的表示,这将导致原型的创建,并由客户评估并进一步精化待 开发软件的需求。逐步调整原型使其满足客户的需求,这个过程是迭代的。其流 程从听取客户意见开始、随后是建造/修改原型、客户测试运行原型、然后回头 往复循环直到客户对原型满意为止。由于这种模型可以让客户快速的感受到实际 的系统(虽然这个系统不带有任何质量的保证),所以客户和开发者都比较喜欢 这种过程模型(对于那些仅仅用来演示软件功能的公司而言或从来不考虑软件质

量和不害怕长期维护的公司而言)。

优点:

1、能让人(开发者或客户)很快见到产品,有成就感。

2、能渐进地启发客户提出新的要求或任务。

缺点:

1、 没有考虑软件的整体质量和长期的可维护性。

2、 大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工 具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。

3、 由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。

(二)螺旋模型 螺旋模型是一种演进式软件过程模型,结合了原型的迭代性质和瀑布模型的

系统性和可控性的特点,具有快速开发越来越完善软件版本的潜力。 开发步骤:沿螺线自内向外,每旋转一圈便开发出更为完善的一个新的软件

版本。例如,在第一圈,确定了初步的目标、方案和限制条件以后,转入右上象

限,对风险进行识别和分析。如果风险分析表明,需求有不确定性,那么在右下 的工程象限内,所建的原型会帮助开发人员和客户,考虑其它开发模型,并对需 求做进一步修正。客户对工程成果做出评价之后,给出修正建议。在此基础上需 再次计划,并进行风险分析。在每一圈螺线上,风险分析的终点做出是否继续下 去的判断。假如风险过大,开发者和用户无法承受,项目有可能终止。多数情况 下沿螺线的活动会继续下去,自内向外,逐步延伸,最终得到所期望的系统。

优点:

1. 强调风险

2. 强调阶段质量

3. 提供纠错的机会

缺点:

1. 每个阶段都要提出被选方案,进行风险分析,研发周期长,效率低

2. 必须要转业的风险分析人员的参与

适用范围:大型项目

(三)协同开发模型 协同开发模型(协同工程),可以表示唯一系列的框架活动、软件工程动作和任务 以及相应的状态。

适用范围:所有类型的软件开发

专用过程模型

包括基于构件的开发、形式化方法模型、面向方面的软件开发。 (一)基于构件的开发

基于构件的开发模型具有许多螺旋模型的特点,本质上是演化模型,需要以 迭代方式构建软件。不同之处在于,基于构件开发模型采用预先打包的软件构件 开发程序。

开发过程:对所需构件进行评估 → 考虑构件的集成 → 设计系统的软件框 架→将构件放入框架→进行测试

优点:

1. 构件可复用。提高了开发效率。

2.  采用了面向对象的技术

3.  能够使软件复用

缺点:过分依赖于构件,构件库的质量影响着产品质量。

(二)形式化方法模型 形式化方法模型包含了一组活动,他们导致了计算机软件的数学规约。形式

化方法使得软件工程师们能够通过应用一个严格的数学符号体系来规约、开发、 和验证基于计算机的系统。 这种方法的一个变种,称为净室软件工程,已经被 一些组织所采用。在开发中使用形式化方法时,它们提供了一种机制,能够消除 使用其它软件过程模型难以克服的很多问题。二义性、不完整性、不一致性能被 更容易地发现和纠正,而不是通过专门的评审,是通过对应用的数学分析。 形 式化方法提供了可以产生无缺陷软件的承诺。

优点:

1、形式化规约可直接作为程序验证的基础,可以尽早的发现和纠正错误(包括 那些其它情况下不能发现的错误)。

2、开发出来的软件具有很高的安全性和健壮性,特别适合安全部门或者软件错 误会造成经济损失的开发者。

3、能够开发出无缺陷软件。

缺点:

1、 开发费用昂贵,而且需要的时间较长。

2、 需要大量的培训。

3、 不能将这种模型作为对客户通信的机制,因为客户对这些数学语言一无所 知。

适用范围:不适用于技术水平不高的客户。

(三)面向方面的软件开发 将系统分成若干相对较独立的组成部分,这些部分称为方面。

优点:超越了子程序和继承的方法。 缺点:技术还不成熟

统一过程模型

统一过程模型是一种“用例驱动、以体系结构为核心、迭代及增量”的软件 过程框架,由 UML 方法和工具支持。它是一种增量模型,定义了五个阶段:

a、起始阶段,包括用户沟通和计划活动,强调定义和细化用例

b、 细化阶段,包括用户沟通和建模活动,重点是创建分析和设计模型。

c、构件阶段,细化模型设计,并将设计模型转化为软件构件实现

d、 转化阶段,将软件从开发人员传递给最终用户,并由用户完成 beta 测试和验 收测试

e、生产阶段,持续地监控软件的运行,并提供技术支持。

优点:

1. 任何功能开发后就进入测试过程,及早进行验证

2. 早期风险识别,采取预防措施

缺点:

1. 需求必须在开始之前完全弄清楚,否怎有可能在架构上出现错误

2. 必须有严格的过程管理,以免使过程退化为原始的试→错→改模式

3.如果不加控制的让用户过早接触没有测试完全,版本不稳定的产品可能对用 户和开发团队都带来负面的影响

时间: 2024-10-24 21:55:21

几种常见软件过程模型的比较的相关文章

几种常见的FTP软件的二进制设置说明

几种常见的FTP软件的二进制设置说明: 1.FlashFXP: 打开 FlashFXP:在工具栏中,选项 => 参数(也可以直接按F6键),在弹出来的窗口中,选择"传输(T)"卡,在传输模式中选择"二进制". 2.LeapFTP: 打开 LeapFTP: 在 Options(选项)菜单中选择 Parameters(参数设置),选择其中的(ASCII 扩展名),出现列表后,选中其中的"*.PHP",点右边的(删除),再点右边的(确定)即可.如

对几种常见设计模式的理解

 转自:  http://blog.csdn.net/dengpeng0419/article/details/48110841 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 最早提出"设计模式"概念的是建筑设计大师亚力山大Alexander.在1970年他的<建筑的永恒之道>里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现.在<建

软件过程模型

软件过程模型 瀑布模型:将基本的开发活动看成是一系列界限分明的独立阶段,这是一种计划驱动的软件过程,有利于规范软件开发活动. 原型化模型:原型是一个部分开发的产品,用于加强对系统的理解,有助于明确需求和选择可行的设计策略. 迭代式开发:将描述.开发和验证等不同活动交织在一起,在开发过程中建立一系列版本,将系统一部分一部分地逐步交付. 可转换模型:利用自动化的手段,通过一系列转换将需求规格说明转化为一个可交付使用的系统. 瀑布模型 软件开发的迭代性 迭代式开发 更快速地发布产品 追求产品创新 需求

10种常见的软件架构模式

架构模式 架构模式是一个通用的.可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题.架构模式与软件设计模式类似,但具有更广泛的范围.在本文中,将简要地解释以下10种常见的体系架构模式,以及它们的用法.优缺点. 分层模式 客户端-服务器模式 主从设备模式 管道-过滤器模式 代理模式 点对点模式 事件总线模式 模型-视图-控制器模式 黑板模式 解释器模式 一. 分层模式 这种模式也称为多层体系架构模式.它可以用来构造可以分解为子任务组的程序,每个子任务都处于一个特定的抽象级别.每个层

[软考]之软件过程模型II

上一篇博客总结了瀑布模型/V模型/增量模型这三种软件模型,然而我们还有一个很重要的问题忘了回答,那就是,什么是软件过程模型? 什么是软件过程模型? 软件过程是软件开发与维护的工作流程和工艺流程,是软件工程的重要组成部分.软件过程指软件生存周期中所涉及的一系列相关过程.过程是活动的集合,活动是任务的集合,任务是把输入转换为输出的操作.软件过程是动态的,它动态地产生.推进(执行),动态地消亡.软件过程模型是对软件过程静态的.抽象的描述,是软件过程执行的依据. 下面继续介绍剩下的几种过程模型: 演化模

几种常见的Web服务器

Apache与Tomcat的区别 ,几种常见的web/应用服务器 APACHE是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页 如(asp,php,cgi,jsp)等动态网页的就不行 如果要在APACHE环境下运行jsp 的话就需要一个解释器来执行jsp网页 而这个jsp解释器就是TOMCAT, 为什么还要JDK呢?因为jsp需要连接数据库的话 就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK 整合的好处是

[002] 两种常见的代码组织结构

1. 按照应用程序的业务逻辑来组织结构 办公软件: 1. 采购 com.itheima.buy 2. 开会 com.itheima.meeting 3. 请假 com.itheima.leave 2. 根据与代码的类型划分程序包结构 UI界面展现         com.itheima.mobilesafe.activity 自定义的UI         com.itheima.mobilesafe.activity.ui 业务逻辑             com.itheima.mobiles

1.1经典软件过程模型的特点

经典软件过程模型的特点(瀑布模型.增量模型.演化模型.统一过程模型) 一.软件过程软件过程的概念:经典软件过程模型的特点(瀑布模型.增量模型.演化模型.统一过程模型):过程评估与CMM/CMMI的基本概念:敏捷宣言与敏捷过程的特点 01:瀑布模型(Waterfall Model) 1970年Winston Royce提出了著名的"瀑布模型",直到80年代早期,它一直是唯一被广泛采用的软件开发模型. 瀑布模型将软件生命周期划分为制定计划.需求分析.软件设计.程序编写.软件测试和运行维护等

性能测试的几种常见方法

性能测试的几种常见方法(转) 负载测试:负载测试是用户观点的测试行为.简单说来就是负载测试就是让系统在一定得负载压力下进行正常的工作,观察系统的表现能否满足用户的需求. 用户的需求从何而来?需求分析--特指性能测试的需求分析.由此看来需求分析是相当重要的. 负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现. 负载测试的预期结果是用户的性能需求得到满足.此指标一般体现为响应时间.交易容量.并发容量.资源使用率等. 负载测试也是最常用的性能测试方法,因此也有不少人将负载测试混淆为性能测试