1.软件开发模型

  • 概念:软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。
  • 作用:软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。

1.1.边做边改型
许多产品都是使用"边做边改"模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改,直到用户满意为止。这是一种类似作坊的开发方式,对于小程序来说还算合适,但这种方法对任何规模的开发来说都是不能令人满意的,其主要缺点在于:

  • 缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改
  • 忽略需求环节,给软件开发带来很大的风险
  • 没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难

1.2.瀑布模型
瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要缺点在于:

  • 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;
  • 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;
  • 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

1.3.增量模型
又称演化模型。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:

  • 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构
  • 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。

注意:

  • 在使用增量模型时,第一个增量往往是实现基本需求的核心产品。
  • 核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品

1.4.快速原型模型
快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。

1.5.螺旋模型
将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:

  • 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件
  • 风险分析:分析评估所选方案,考虑如何识别和消除风险
  • 实施工程:实施软件开发和验证
  • 客户评估:评价开发工作,提出修正建议,制定下一步计划

螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制:

  • 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发
  • 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目
  • 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险

一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。

1.6.喷泉模型
也称面向对象的生存期模型或OO模型,喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

2.软件测试模型

软件测试和软件开发一样,都遵循软件工程原理,遵循管理学原理 。测试专家通过实践总结出了很多很好的测试模型。这些模型将测试活动进行了抽象,明确了测试与开发之间的关系,是测试管理的重要参考依据。

分类:v模型适合于中小企业,w模型适用于中大型企业(因为人员要求高),h模型人员要求非常高,很少有公司使用。

2.1.V模型
V模型目的是改进软件开发的效率和效果,是瀑布模型的变种:

  • V模型明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系
  • V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求

优点:包含了底层测试(单元测试)和高层测试(系统测试);清楚的标识了开发和测试的各个阶段;自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。

局限:自上而下的顺序导致了,测试工作在编码之后,就导致错误不能及时的进行修改;实际工作中,需求经常变化,导致v模型步骤,反复执行,返工量很大,灵活度较低。

改良:每个步骤都可以进行小的迭代工作。


2.2.W模型
W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。

  • 特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的
  • 优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度
  • 局限:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑

2.3.H模型

H模型贯穿于整个产品的生命周期,与其他流程并发进行。简单说:今早准备,尽早执行,只要测试达到了某个就绪点,就可以展开测试活动,并且不同的测试获得可以按照某个次序先后进行,也可以反复进行。

将软件测试活动完全独立,测试的准备和测试的执行分离开来,这样,有利于资源的调配,降低成本,提高效率,充分的体现了测试过程的复杂性。

  • 测试准备:需求分析,测试计划,测试设计,测试用例,测试验证
  • 测试执行:测试运行,测试报告,缺陷分析,回归报告

软件开发模型和软件测试模型相关推荐

  1. 软件开发模型和测试模型(瀑布模型,螺旋模型,增量、迭代,敏捷,敏捷中的测试,软件测试v模型,软件测试w模型)

    一.软件的生命周期 需求分析--计划--设计--编码--测试--运行维护 二.瀑布模型 是所有其他模型的基础框架,每个阶段只执行一次,是线性顺序进行的软件开发模式 · 优点:强调开发的阶段性: 强调早 ...

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

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

  3. 【测试】——软件测试的W模型和V模型

    V模型和W模型 一. 软件测试的W模型和V模型 二.V模型 2.1 V模型的框架 2.2 V模型的优缺点 三.W模型 3.1 W模型的框架 3.2 W模型的优缺点 三.V和W模型中测试类型的概念 一. ...

  4. 软件测试:V模型和W模型详解

      软件测试中有W模型和V模型,这是我们在测试过程中经常用到的两个模型,本篇博客我们就一起深入的学习了解这两个模型~ V模型 V模型最早是在20世纪80年代后期提出的,目的是改进软件开发的效率和结果, ...

  5. 测试基础【第二篇】软件测试模型

    V模型 在软件测试方面,V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型.V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到 ...

  6. 测试开发之软件测试模型

    1 为什么学习测试模型 指导测试过程. 2 常见的测试模型  V 模型  W 模型  H 模型  X 模型  前置模型  敏捷测试模型 2.1 V 模型 2.1.1 V 模型的提出和 过程 ...

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

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

  8. 软件测试模型汇总-V模型,W模型,X模型,H模型

    V模型 在软件测试方面,V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型.V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到 ...

  9. 软件测试模型比较(V模型、W模型、H模型、X模型、前置模型)

    软件测试和软件开发一样,都遵循软件工程原理,遵循管理学原理.测试专家通过实践总结出了很多很好的的软件测试模型,用于指导软件测试的实践,明确了测试与开发之间的关系,是测试管理的重要参考依据.软件测试模型 ...

最新文章

  1. 大学毕业没有实习经历_我是如何在大学毕业后没有实习的情况下获得第一份开发人员工作的...
  2. 使用npm打包后生成的package.json中重要字段含义
  3. 转:Tkinter教程之Text(2)篇
  4. yolov3 权重转换
  5. 北斗导航 | 高精度GNSS Correction Service国际标准化
  6. Po校园接入云信,多机位“有毒”直播燃爆LIVE
  7. 《Beginning C# Objcets》学习笔记
  8. (转)SQL 优化原则
  9. Python+OpenCV:ORB: An efficient alternative to SIFT or SURF
  10. Git/Repo/Gerrit区别
  11. android多线程中更新ui,Android 在子线程中更新UI
  12. erdas几何校正_ERDAS遥感图像的几何校正.docx
  13. 计算机音乐模式怎么设置,电脑开机时自启QQ音乐APP播放歌曲的功能在哪里设置...
  14. 齐齐哈尔计算机应用软件学校,齐齐哈尔职业学院计算机应用技术专业介绍
  15. 计算机分区gpt无法启动项,双系统引导失败怎么修复?用bcd编辑MBR/GPT教程
  16. DVD刻录机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 华为改变策略,出击超低端手机市场
  18. Riemannian geometry applied to BCI classification
  19. 步进频雷达的一维距离像matlab仿真
  20. 涂鸦三明治开发套件开箱及固件下载

热门文章

  1. 如何辨别二手房学位被占用? 4招绝对管用!
  2. sharepoint网站如何发布到外网
  3. 歪打正着之:免费杀毒软件和芝华士广告
  4. 学生信息统计与集合应用
  5. 世界上功能最强大的开源数据库-PostgreSQL
  6. Twitter如何去中心化?看看这十个SocialFi项目
  7. 《战胜华尔街》精华 - 彼得·林奇的25条投资法则
  8. 下载 | 《javascript速查表中文版》
  9. matlab画图程序整理
  10. 22081-11-16 鼠标双击事件和鼠标移动事件