软件工程 瀑布模型、原型模型、喷泉模型和V模型的优缺点及适用场景

2023-05-16

一、瀑布模型

  瀑布模型(Waterfall Model)是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好“返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。
  瀑布模型也称软件生存周期模型。它在软件工程中占有重要地位,它提供了软件开发的基本框架,这比依靠“个人技艺”开发软件好得多。它有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。
  首先,对于绝大多数人来说,刚接手一个新项目的时候都会不自觉的选择“瀑布模型”—-我们跟客户交谈后指定需求分析,之后进行简单的设计,之后编写代码,提交,完成。新手会不自觉的选择这种方案,因为它直白,想到哪一步做到哪一步,需要做什么就做什么。但是,这在有些时候是要付出惨重的代价的。比如A拥有一家跑车公司,可以给客户自定义生产跑车。有一天一土豪来到A的公司,跟A商谈了一个跑车项目,他们谈好了车型,材料,马力等等细节。之后,A带着团队做了6个月,做成了这架跑车,交给了土豪。可是土豪开了一天之后回来要求重做,原因是当讨论方案的时候,双方都忘记给跑车安尾灯了!但是给跑车安装尾灯,就要涉及到整个车尾的重新设计,就要把整辆车拆掉再重新组装!
   这个模型显然只适合已经成熟了的项目,团队接手项目之后如庖丁解牛般行云流水。当团队接手了创新项目之后,显然已经不再适合用瀑布模型。

1、瀑布模型有以下优点:

1)为项目提供了按阶段划分的检查点。
2)当前一阶段完成后,您只需要去关注后续阶段。
3)可在迭代模型中应用瀑布模型。
这里写图片描述

2、瀑布模型有以下缺点:

1)在项目各个阶段之间极少有反馈。
2)只有在项目生命周期的后期才能看到结果。
3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

3、瀑布模型适用场所:

适合于结构化方法,也就是面向过程的软件开发方法。
软件项目或产品选择瀑布模型必须满足下列条件:
 1)在开发时间内需求没有或很少变化;
 2)分析设计人员应对应用领域很熟悉;
 3)低风险项目(对目标、环境很熟悉);
 4)用户使用环境很稳定;
 5)用户除提出需求以外,很少参与开发工作。

二、原型模型

  原型模型是先借用已有系统作为原型模型,通过“样品”不断改进,使得最后的产品就是用户所需要的。主要是通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求。同时,原型模型采用逐步求精的方法完善原型,使得原型能够“快速”开发,避免了像瀑布模型一样在冗长的开发过程中难以对用户的反馈作出快速的响应。相对瀑布模型而言,原型模型更符合人们开发软件的习惯,是目前较流行的一种实用软件生存期模型

1、原型模型的优点:

1)开发人员和用户在“原型”上达成一致。这样一来,可以减少设计中的错误和开发中的风险,也减少了对用户培训的时间,而提高了系统的实用、正确性以及用户的满意程度。
2)缩短了开发周期,加快了工程进度。
3)降低成本。

2、原型模型的缺点:

1)当告诉用户,还必须重新生产该产品时,用户是很难接受的。这往往给工程继续开展带来不利因素。
2)开发者为了使一个原型快速运行起来,往往在实现过程中采用这种手段。
3) 不宜利用原型系统作为最终产品。采用原型模型开发系统,用户和开发者必须达成一致:原型被建造仅仅是用户用来定义需求,之后便部分或全部抛弃,最终的软件是要充分考虑了质量和可维护性等方面之后才被开发。

3、原型模型的适用场所:

 原型模型适用于那些不能预先确切定义需求的软件系统的开发,更适用于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好的交流或者通信的情况下。

三、喷泉模型

 喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。采用喷泉模型的软件过程如下图所示:
这里写图片描述
  喷泉模型主要用于面向对象的软件项目,软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。各活动之间无明显边界,例如设计和实现之间没有明显的边界,这也称为“喷泉模型的无间隙性”。由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙。
  喷泉模型是由B.H.Sollers和J.M.Edwards于1990年提出的一种新的开发模型。喷泉模型主要用于采用面向对象技术的软件开发项目,喷泉一词本身就体现了迭代和无间隙的特征。无间隙指在各项活动之间无明显边界,如分析、设计和编码之间没有明显的界限。在编码之前再进行需求分析和设计,期间添加有关功能,使系统得以演化。喷泉模型在系统某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的系统。由于对象概念的引入,需求分析、设计、实现等活动只用对象类和关系来表达,从而可以较为容易地实现活动的迭代和无间隙,并且使得开发过程自然地包括复用。

1、喷泉模型的优点:

  喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。

2、喷泉模型的缺点:

 由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

3、喷泉模型适用场所:

 适应于面向对象的软件开发过程。
 详情可以参考:喷泉模型(Fountain Model)智库百科 中的实例

四、V模型

  RAD(Rap Application Development,快速应用开发)模型是软件开发过程中的一个重要模型,由于其模型构图形似字母V,所以又称软件开发的V模型。这里写图片描述
   它通过开发和测试同时进行的方式来缩短开发周期,提高开发效率。V模型大体可以划分为以下几个不同的阶段步骤:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。对概要设计中表述的各模块进行深入分析,对各模块组合进行分析等,这一阶段要求达到伪代码级别,已经把程序的具体实现的功能,现象等描述出来。

1、需求分析
  即首先要明确客户需要的是什么,需要软件作成什么样子,需要有那几项功能,这一点上比较关键的是分析师和客户沟通时的理解能力与交互性。要求分析师能准确的把客户所需要达到的功能,实现方式,等表述出来,给出分析结果,写出需求规格说明书。
2、概要设计
  主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等项事务。
3、详细设计
  对概要设计中表述的各模块进行深入分析,对各模块组合进行分析等,这一阶段要求达到伪代码级别,已经把程序的具体实现的功能,现象等描述出来。其中需要包含数据库设计说明。
软件编码
  按照详细设计好的模块功能表,编程人员编写出实际的代码。
单元测试
  按照设定好的最小测试单元进行按单元测试,主要是测试程序代码,为的是确保各单元模块被正确的编译,单元的具体划分按不同的单位与不同的软件有不同,比如有具体到模块的测试,也有具体到类,函数的测试等。
集成测试
  经过了单元测试后,将各单元组合成完整的体系,主要测试各模块间组合后的功能实现情况,以及模块接口连接的成功与否,数据传递的正确性等,其主要目的是检查软件单位之间的接口是否正确。根据集成测试计划,一边将模块或其他软件单位组合成系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。
系统测试
  经过了单元测试和集成测试以后,我们要把软件系统搭建起来,按照软件规格说明书中所要求,测试软件其性能功能等是否和用户需求相符合,在系统中运行是否存在漏洞,等。
验收测试
  主要就是用户在拿到软件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,以确定软件达到符合效果的。

1、V模型的优点:

1)缩短开发周期
2)提高开发效率

2、V模型的缺点:

  V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证。
  解决的思路是,当一个软件开发的时候,研发人员和测试人员需要同时工作,测试在软件做需求分析的同时就会有测试用例的跟踪,这样,可以尽快找出程序错误和需求偏离,从而更高效的提高程序质量,最大可能的减少成本,同时满足用户的实际软件需求。

3、V模型适用场所:

  模式是一种传统软件开发模型,一般适用于一些传统信息系统应用的开发,而一些高性能高风险的系统、互联网软件,或一个系统难以被具体模块化的时候,就比较难做成V模式所需的各种构件,需要更强调迭代的开发模型或者敏捷开发模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件工程 瀑布模型、原型模型、喷泉模型和V模型的优缺点及适用场景 的相关文章

随机推荐

  • 网络安全传输系统(5)—账号管理子系统设计

    1 登录模块设计 输入用户名和密码根据用户名从数据库提取密码比较用户输入密码和数据库提取密码 xff0c 以决定是否登录成功 2 编译客户端程序 arm linux gcc L 008 openssl 1 0 0s install lib
  • C语言实例—一个数如果恰好等于它的因子之和,这个数就称为完数。(gcc编译)

    1 题目 一个数如果恰好等于它的因子之和 xff0c 这个数就称为完数 例如 xff0c 6的因子是1 xff0c 2 xff0c 3 xff0c 而6 61 1 43 2 43 3 xff0c 因此6为完数 编程序找出1000之内所有的完
  • C语言实例—输入两个正整数m和n,求其最大公约数和最小公倍数(gcc 编译)。

    1 辗转相除法 辗转相除法是古希腊求两个正整数的最大公约数的 xff0c 也叫欧几里德算法 xff0c 其方法是用较大的数除以较小的数 xff0c 上面较小的除数和得出的余数构成新的一对数 xff0c 继续做上面的除法 xff0c 直到出现
  • Linux线程详解

    并行和并发的区别 1 并发 concurrency xff1a 在操作系统 中 xff0c 是指一个时间段中有几个程序都处于已启动运行到运行完毕之间 xff0c 且这几个程序都是在同一个处理机上运行 其中两种并发关系分别是同步 和互斥 xf
  • 数据结构—带头结点的单循环链表

    1 基本操作 循环链表的特点是最后一个元素的指针域指向头结点 因此对于循环链表的初始化 xff08 设表的头结点是L xff0c 不再是L gt next 61 NULL xff0c 而是L gt next 61 L 循环链表为空时 xff
  • 数据结构—有序表的合并

    1 有序表合并 问题描述 xff1a 已知线性表La 和Lb中的数据元素按值非递减 有序排列 xff0c 现要求将La和Lb归并为一个新的线性表Lc xff0c 且Lc中的数据元素仍按值非递减有序排列 例如 xff1a La 61 1 7
  • 数据结构—习题2.6 通过一趟遍历找出单链表中的最大值

    1 题目描述 设计一个算法 xff0c 通过一趟遍历在单链表中确定值最大的结点 2 题目分析 假定第一个结点中数据具有最大值 xff0c 依次与下一个元素比较 xff0c 若其小于下一个元素 xff0c 则设其下一个元素为最大值 xff0c
  • 【MySQL 11】怎么解决MySQL 8.0.18 大小写敏感问题

    1 查看状态 通过 show variables 命令查看当前 mysql 是否是区分大小写 xff0c 如下 xff1a mysql大小写敏感配置相关的两个参数 xff0c lower case file system 和 lower c
  • Ubuntu配置阿里云ddns

    首发于yuany3721的WordPress 生成阿里云access key 注意 xff1a 不能使用ram子用户 下载并配置ddns curl https github com NewFuture DDNS releases downl
  • LibreOJ - 10015 扩散

    题目描述 一个点每过一个单位时间就会向 4 个方向扩散一个距离 xff0c 如图所示 xff1a 两个点 a b 连通 xff0c 记作 e a b xff0c 当且仅当 a b 的扩散区域有公共部分 连通块的定义是块内的任意两个点 u v
  • Python 生成器 (通俗讲解)

    一 生成器的本质 生成器是含有yield语句 xff08 或yield表达式 xff09 的函数所返回的对象 也就是说 xff0c 要创建一个生成器 xff0c 我们首先要定义一个函数 xff0c 该函数内将使用yield表达式或yield
  • (三)MNN与Opencl联合编译

    在MNN与opencl进行联合编译中 xff0c 需要注意一些事项 xff1a 1 在MNN中cmakelists进行修改后 2 在source backend opencl core runtime中OpenCLWarpper cpp中文
  • Linux文件系统操作命令

    一 目录类命令 ls 查看文件或目录的工具 xff0c 列出目录 用法 xff1a ls 选项 文件 选项 l 以长格式显示目录下的内容列表 输出的信息从左到右依次包括文件名 xff0c 文件类型 权限模式 硬连接数 所有者 组 文件大小和
  • Windows 11安装安卓子系统步骤

    1 win11开启虚拟平台 如下图 xff0c 进入设置界面 xff0c 应用 可选功能 更多 Windows 功能 勾选 Hyper V 和 虚拟机平台 xff0c 重启系统 2 下载安装子系统 打开地址 xff1a https stor
  • linux系统使用docker部署gitlab

    1 安装docker docker安装见我之前的文章 xff1a http t csdn cn H4wAm 2 拉取gitlab镜像 gitlab ce社区版最新版 docker pull gitlab gitlab ce latest g
  • ubuntu 18.10安装ssh软件

    ubuntu 18 10 ssh软件安装步骤 xff1a 输入 Ctrl 43 Alt 43 T 打开命令终端 xff1b 输入 sudo apt get update 更新源列表 xff1b 在输入命令后 xff0c 显示的是输入密码操作
  • Clion(2023)+QT(6.5)+cmake+vcpkg+Opencv(4.7)环境安装与使用

    用习惯了Clion xff0c 智能提示很棒 xff0c 就不想用Qt自带的creator编辑器 xff0c 并且新版的Clion支持编辑ui文件 于是搜罗了一下教程搭配一下环境安装 xff0c 其实最重要的还是cmakelist的编写 Q
  • QPushButton样式设置

    1 无样式的按钮 2 改变字体颜色 color span class token operator span ff0000 span class token punctuation span 3 改变字体 font span class t
  • linux进程间通信--共享内存(POSIX 版本)

    linux进程间通信 共享内存 POSIX 版本 System V共享内存模型使用的是key和标识符 xff0c 这与标准的UNIX I O模型使用文件名和描述符的做法不一致 这种差异导致System V共享内存段需要一整套全新的系统调用和
  • 软件工程 瀑布模型、原型模型、喷泉模型和V模型的优缺点及适用场景

    一 瀑布模型 瀑布模型 xff08 Waterfall Model xff09 是一个项目开发架构 xff0c 开发过程是通过设计一系列阶段顺序展开的 xff0c 从系统需求分析开始直到产品发布和维护 xff0c 每个阶段都会产生循环反馈