常见的软件开发模型之———瀑布模型、原型模型、快速原型模型

  • 一.瀑布模型
    • 1.1瀑布模型的基本思想
    • 1.2.瀑布模型的特点
    • 1.3.瀑布模型的优点
    • 1.4.瀑布模型的缺点
    • 1.5 瀑布模型的应用范围
  • 二. 快速原型模型
    • 2.1 快速原型模型的基本思想
    • 2.2 原型模型和快速原型模型的区别
    • 2.3快速原型模型的优点
    • 2.4 快速原型模型的缺点
    • 2.5 快速原型模型的应用范围

本文参考Mooc《软件工程基础》—电子科技大学、《软件工程》—陈永、《软件工程》(第四版)—张海藩、《软件测试教程》—贺平

一.瀑布模型

1.1瀑布模型的基本思想

瀑布模型是一种严格按照生命周期定义进行软件开发的过程模型,所以也被经典生命周期模型

瀑布模型将软件生命周期划分为问题定义、可行性分析、需求分析、软件设计、程序编写、软件测试和运行维护等基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落,故而形象地称为“瀑布模型”。 其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。它是一种被广泛采用的软件开发模型。

典型的瀑布模型如图所示:


瀑布开发模型中各阶段的主要工作及其相应的质量控制方式如下表所示:

1.2.瀑布模型的特点

应用瀑布模型进行软件开发过程中,瀑布模型的特点如下:

(1)阶段间的顺序性和依赖性

顺序性是指:在瀑布模型软件开发过程中必须等到前一阶段的工作完成以后,才能开始下一阶段的工作。
依赖性是指:前一阶段的输出文档就是后一阶段的输入文档。因此前一阶段文档的正确性是保证后一阶段工作的前提条件。

(2)推迟实现的观点

实践表明,对于规模较大的软件项目,如果前面的准备工作做的不扎实,过早地考虑进行编码实现,往往会导致大量返工,有时甚至会发生无法弥补的错误,带来灾难性后果。采用瀑布模型会强制研发人员按照阶段步骤进行软件设计,避免了一开始就直接进行详细编码的错误做法。编码处于软件开发的中后期,强调了需求分析和系统设计的重要性,体现了推迟实现的观点。如果坚持阶段性的评审,采用瀑布模型可以避免后期大量返工的现象,还可以减少后期维护工作的人力和费用。

(3)文档驱动推进研发进程

瀑布模型在每阶段要完成规定的文档。软件开发是许多人共同参加、分工合作的工作,完整而合格的文档是开发人员间联系的媒介,同时是维护时期的重要依据。所以没有完成文档,就被认为没有完成该阶段的工作。 瀑布模型过程中,各个阶段与文档的关系如下图所示:

此外,在瀑布模型的每个阶段都要对已完成的文档进行复审,以便及早发现问题、消除隐患。这是保证软件质量、降低开发成本的重要措施。越是早期潜伏的错误,暴露时间越晚,纠错的代价就越高。

1.3.瀑布模型的优点

瀑布模型有以下优点:

  • ①瀑布模型提供了一个框架,使得软件软件开发可以在分析、设计、编码、测试和维护的这个框架下进行,克服了软件开发的随意性;
  • ②推迟了编码实现,强调了需求分析和设计,避免后期大量返工的现象,还可以减少后期维护工作的人力和费用
  • ③当前一阶段完成后,才开始要去关注后续阶段,可以实现阶段性质量保证;
  • ④严格按照瀑布模型进行软件开发,会得到完整的软件配置文档,便于设计和后期维护。

1.4.瀑布模型的缺点

瀑布模型有以下缺点:

  • ①工作量大:各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
  • ②开发风险大:由于开发模型是线性的,用户只有在整个过程的末期才能见到开发成果,中间沟通交互环节(反馈)较少,从而增加了用户对开发产品不满意的风险。
  • ③早期错误发现晚:早期的错误可能要等到开发后期测试阶段才能发现,失去了及早纠正的机会,进而带来严重的后果。
  • ④缺乏灵活性:无法解决软件需求不明确和用户需求的变化的问题;不能反映出软件开发过程中的反复性和迭代性。

1.5 瀑布模型的应用范围

  • 系统需求明确而稳定,需求在开发过程中没有或很少变化的
  • 分析设计人员应对应用领域很熟悉技术成熟
  • 工程管理比较严格
  • 用户的使用环境非常稳定
  • 开发工作对用户参与的要求很低
    如军工,航天,医疗,等领域,或者一些变更少的小项目。

二. 快速原型模型

2.1 快速原型模型的基本思想

鉴于瀑布模型与用户交流不足,无法准确的获取用户真实需求,在软件开发过程中,提出了原型模型。
快速原型模型是指在软件开发者在获取一组用户基本需求定义后,利用高级软件工具可视化的开发环境,快速地建立一个目标系统的最初版本(可运行的系统),并把它交给用户试用、补充和修改,再进行新版本开发。反复进行这个过程,直到得出系统的 “最优解”,即用户满意为止的一种方法。通过多次与用户交互后,可以获取用户最真实的需求。模型示意图如下:


快速原型模型的开发过程如下:

  • (1)确定用户的基本需求
    由用户提出对新系统的基本要求,如功能、界面的基本形式、所需要的数据、应用范围、运行环境等,开发者根据这些信息估算开发该系统所需的费用,并建立简明的系统模型。

  • (2)构造初始原型
    系统开发人员在明确系统基本要求和功能的基础上,依据计算机模型,以尽可能快的速度尽可能多的开发工具来建造一个结构仿真模型,即快速原型构架。之所以称为原型构架,是因为这样的模型是系统总体结构、子系统以上部分的高层模型。由于要求快速,这一步骤要尽可能使用一些软件工具和原型制造工具,以辅助进行系统开发。

  • (3)运行、评价、修改原型
    快速原型框架建造成后,就要交给用户立即投入试运行,各类人员对其进行试用、检查分析效果。由于构造原型中强调的是快速,省略了许多细节,一定存在许多不合理的部分。所以,在试用中要充分进行开发人员和用户之间的沟通,尤其是对用户提出的不满意的地方进行认真细致的反复迭代,并与用户交流、修改、完善,直到用户满意为止。

  • (3)形成最终的软件系统
    如果用户和开发者对原型比较满意,则将其作为正式原型。然后可以采用其他软件过程开发方法,如瀑布模型进行后续开发; (该模型要结合其它模型进行后续开发)或者经过双方继续进行细致的工作,在正式原型的基础上对细节问题逐个补充、完善、求精、设计、编码,最后形成一个完整的软件系统。

下图是原型模型结合瀑布模型开发软件的过程:

2.2 原型模型和快速原型模型的区别

原型模型通常可分为两类:

  • 第一类,原型演示仅是为了获得完整的需求说明,在用户认可后,按生命周期重新开发新产品,这种方法不能直接得到终端的目标系统,它的目的只是和用户交流,它保证了功能暂时牺牲了性能。在用户接受系统规格说明书(SRS)后,会将此类原型丢弃),这一类称为原型模型
  • 第二类,不丢弃原型,而是通过原型的不断增加和扩充,增强式地开发(迭代式),逐步达到产品的要求。总的目的都是为了以后尽量少返工,降低维护费用。这一类是就我们所说的快速原型模型

快速原型法突出的特点是一个“快”字这与瀑布模型的推迟实现观点正好相反。采用瀑布模型时,软件的需求分析也要在用户和开发人员之间往返讨论,前期需求不足,会导致用户设计出来的产品不满意的现象经常发生。快速原型法就是针对上述情况,采用演示原型(亦称模拟原型)的方法来启发和揭示系统的需求。具体来讲,其主要思想就是*:首先建立一个能够反映用户主要需求的原型,让用户实际使用未来系统的概貌,以便判断哪些功能是符合需求的,哪些方面还要改进,然后将原型反复修改,最终建立起完全符合用户要求的新系统。快速原型系统*则是开发人员向用户提供“模型样品”,用户向开发人员迅速做出反馈,开发人员根据用户反馈及时做出产品修正、补充,最终减少了维护时期的工作量和费用,这正是快速原型法的优越性存在。

2.3快速原型模型的优点

  • 在开发过程中,开发者更容易得到用户对于已做原型系统的反馈意见
  • 系统开发循序渐进,反复修改,确保较好的用户满意度
  • 开发周期短,费用相对少
  • 尽早发现软件中的错误
  • 支持需求的动态变化

2.4 快速原型模型的缺点

  • 所选用的开发技术和工具不一定符合主流的发展
  • 快速建立起来的系统加上连续的修稿可能导致原型质量低下
  • 开发过程管理要求高,整个开发过程要经过“修改—评价—再修改”的多次反复;
  • 开发人员易将原型取代系统分析;
  • 如果管理不足将会导致缺乏规范化的文档资料。

2.5 快速原型模型的应用范围

快速原型法作为对传统生命周期法的一种改进,由于在研制过程中的前期就有用户的介入与反馈,使得最终系统能更好地适应用户的要求,因而被认为是一种有前途的新方法。但是,在短时间内研发者快速构成系统并快速响应用户提出的修改,对其研发者技术水平和开发环境和工具都有较高要求,从而在一定程度上影响和制约了快速原型法的迅速推广。

快速原型法适合预先不能确切定于需求的软件系统的开发,也适用于处理业务过程明确、简单以及涉及面窄的小型软件系统。 不适合处理大型、复杂的系统。因为大型复杂的系统难以直接模拟,此外存在大量运算、逻辑性强的处理系统也不便于用原型表示;最后,如果管理基础工作不完善、处理过程不规范也会影响原型法发挥作用。

【软件测试基础理论知识】1.1.常见的软件开发模型之———瀑布模型、原型模型、快速原型模型相关推荐

  1. 软件开发模型(瀑布模型、敏捷模型)和软件测试模型(V模型、W模型、 H模型、X模型)

    软件开发模型和软件测试模型 软件开发模型 边写边改模型 瀑布模型 快速原型模型 螺旋模型 软件测试模型 V模型 W模型 H模型 X模型 测试阶段 1.单元测试 2.集成测试 3.系统测试(system ...

  2. 【软件测试基础理论知识】1.2.常见的软件开发模型之———增量模型(渐增模型)、螺旋模型

    增量模型(渐增模型).螺旋模型 一. 增量模型 1.1 增量模型的基本思想 1.2 增量模型的特点 1.3 增量模型的优点 1.3 增量模型的缺点 1.4 增量模型的适用范围 二. 螺旋模型 2.1 ...

  3. 软件测试——基础理论知识你都不一定看得懂

    目录 前言 软件测试(Software Testing)的定义 软件测试的分类 软件测试的常用种类 测试用例八大设计方法 结语 前言 入软件测试这一行至今已经10年多,承蒙领导们的照顾与重用,同事的支 ...

  4. 【软件测试基础理论知识】3.1软件测试模型——V模型、W模型、H模型总结

    软件测试模型 软件测试模型 1. V模型 2.W模型 3.H模型 总结 软件测试模型 软件测试根据不同的测试对象以及测试项目的背景可采用不同的测试模型实施测试活动.软件测试模型有:V模型.W模型.H模 ...

  5. 系统架构设计师-软件开发模型(瀑布模型)

    在计算机刚刚诞生的年代,计算机是一种只有天才才能掌握的工具.人们对软件的认知仅仅停留在程序的层面上,所谓的软件开发就是那些能够掌握计算机的天才们写的一些只有计算机才能理解的二进制序列.但随着技术的发展 ...

  6. 【软件测试基础理论知识】1.3软件开发模型之—敏捷开发(敏捷模型)

    敏捷开发 一. 什么是敏捷开发 1.1 敏捷开发的定义 1.2 敏捷开发的原则 1.3 敏捷开发的特点 1.4 传统的开发模式和敏捷开发模式的对比 1.5 敏捷开发的分类 1.5 Scrum 一. 什 ...

  7. 学习笔记之 软件测试基础理论知识

    目录 一.什么是软件测试 二.测试对象 三.测试原则 四.测试流程(功能) 1. 了解产品功能需求 2. 制定测试计划 3. 编写测试用例 3.1 需求文档分析 3.2 功能模块划分 3.3 编写测试 ...

  8. 【软件测试基础知识】性能测试常见指标有哪些

    性能测试指标一般可以划分为:业务指标和系统资源指标两大部分,对于一般用户而言,对于系统性能的要求主要是业务指标,而系统性能指标是系统性能的一个反应,它可以帮助分析系统性能瓶颈,优化系统或去发现一些隐形 ...

  9. 【软件测试基础理论知识】2.软件缺陷、软件缺陷与Bug的区别、PIE模型

    [软件测试基础]软件缺陷.软件缺陷与Bug的区别.PIE模型 1.软件缺陷的定义 2.软件缺陷的来源 3.软件缺陷与Bug的区别 4.如何发现软件缺陷:PIE模型 1.软件缺陷的定义 本文参考< ...

  10. 软件测试基础理论知识总结

        小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成 ...

最新文章

  1. 杀死本地80端口被占用的进程,还你一片宁静乐土
  2. linux rpm包解压到当前目录
  3. NA-NP-IE系列实验28:HDLC 和PPP 封装
  4. 编译html成qch,在应用程序编译过程中运行qcollectiongenerator
  5. python用%来处理字符串
  6. pytorch torch.nn.LSTM
  7. 什么是面向对象,为什么要面向对象
  8. nodejs如何实现ajax,nodejs + express怎么实现Ajax方式及其简单功能
  9. vs2015(激活密钥)
  10. 图灵测试 Alan Turning
  11. Halcon区域形状特征-area_center、area_holes、select_shape、inner_circle和smallest_rectangle2算子
  12. 让python pip使用国内镜像安装模块
  13. Banner实现图片轮播
  14. [Git[ 解决 git branch -M main error: refname refs/heads/master not found
  15. app pour android,Comment configurer Dell Mobile Connect pour Android
  16. volo拉丁语_拉丁语:Latin Quotes and Phrases (V)
  17. Jarvis-OJ WEB 多题writeup
  18. 调频广播如何发明的?
  19. Mongodb使用学习笔记(三)
  20. 【软件定义汽车】【操作系统篇】特斯拉–Version

热门文章

  1. WPF弹出取消确定框
  2. ROS智能车自主导航roslaunch racecar_gazebo racecar_runway_navigation.launch报错
  3. 海康威视、python环境下onvif安装,多通道摄像头获取rtsp视频流
  4. 标准偏差公式c语言,C语言 求标准偏差
  5. Nginx配置防盗链和内核参数优化
  6. 机器学习基础 集成学习进阶(XGBoost+LightGBM)
  7. 机器学习应用——导学part
  8. 中控指纹仪 后台比对小结
  9. 高效能人士的七个习惯-第二章-阅读
  10. 新昌中学2021高考成绩查询,新昌中学教育集团向2020年参加高考被第一批录取的553名学子表示热烈祝贺...