软件测试03:软件工程和软件生命周期

软件测试03:软件工程和软件生命周期

软件危机

  • 软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

软件工程

  • 基本软件危机对于计算机发展的阻碍,1968年,在联邦德国召开的国际会议,北大西洋公约组织的计算机科学家讨论软件危机问题。提出了软件工程这个名词,从此软件生产进入工程化时代。
  • 软件工程包括两方面的内容:
    • 软件开发技术:软件开发方法学、软件工具和软件工程环境
    • 软件项目管理:软件质量、项目估算、进度控制、人员组织、配置管理、项目计划
  • 引起软件危机的主要问题是软件质量问题
  • 软件工程主要结界的就是软件质量问题
  • 软件测试是软件质量管理体系中一个非常重要的手段

软件生命周期

软件生命周期模型

  • 软件生命周期模型是一个框架,描述从软件需求定义直至软件经使用后废弃为止,跨越整个生存期的软件开发、运行和维护所实施的全部过程、活动和任务,同时描述生命周期不同阶段产生的软件工件,明确活动的执行角色等。

  • 软件过程模型:从一个特定角度提出的对软件过程概括描述,是对软件开发实际过程抽象,包括构成软件过程的各种活动软件工件以及参与角色等。

  • 瀑布模型

    • 基本概念:最早提出的软件开发的过程模型,瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。
    • 核心思想:采用结构化的分析与设计方法将功能的实现与设计分开,便于分工合作。即将软件生命周期划分为可行性分析、需求分析、概要设计、详细设计、编码实现、测试与维护,六个基本阶段,并规定了他们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。
    • 实施过程:从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。
    • 缺点:
      • 强调时间顺序的严格执行,前阶段不完成,后阶段不开始,可能会浪费太多不必要的时间。
      • 将测试放在了编码之后。没有体现出测试贯穿软件生命周期的原则。可以避免需求类的问题一直延续到代码完成才暴露或者被发现。
      • 各种阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
      • 线性开发,用户等到整个过程的末期才能见到开发成果,从而增加了开发风险。
      • 瀑布模型不适应用户需求的变化
    • 优点:
      • 为项目提供了按阶段划分的检查点,能够逐步稳定的使项目向前发展
      • 当前一阶段完成后,只需要去关注后续阶段
    • 注意:要求会画出瀑布模型,易出现在面试题。

  • 迭代模型(喷泉模型)

    • 迭代包括产生产品发布(稳点、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他元素,强调开发的深入。
    • 在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。
    • 迭代过程具有以下优点:
      • 降低了在一个增量上的开支风险。
      • 降低了产品无法按照既定进度进入市场的风险。
      • 加快了整个开发工作的进度。
      • 迭代过程这种模式使适应需求的变化会更容易些。
      • 提高开发效率、缩短开发周期
    • 缺点:
      • 难于管理

  • 螺旋模型

    • 螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
      • 引入了其他模型不具备的风险分析,使软件在无法排出重大风险时有机会停止,以减小损失。
      • 螺旋模型主要针对大型软件项目开发周期长风险高的特点。
      • 螺旋模型的每一次迭代都包含了以下六个步骤
        1.决定目标,替代方案和约束
          2.识别和解决项目的风险
          3.评估技术方案和替代解决方案
          4.开发本次迭代的交付物和验证迭代产出的正确性.
          5.计划下一次迭代
          6.提交下一次迭代的步骤和方案
      • 四个象限:制定计划风险分析实施工程客户评价

  • 快速原型

    • 基本概念:快速原型模型需要迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。
    • 核心思想:在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。
    • 实施过程:第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
    • 优点:能够有效减少由于软件需求不明确带来的开发风险。
    • 缺点:快速建立起来的系统结构可能会在后续的持续更改中导致然简质量低下。
  • 增量模型

    • 增量模型首先对系统最核心或最清晰的需求进行分析、设计、实现、测试并集成到系统中,再按优先级逐步对后续的需求进行上述工作,逐步建设成一个完整系统的开发方法。结合了瀑布模型和演化模型的优点。
    • 缺点:
      • (1).增量粒度难以选择;
      • (2).确定所有的基本业务服务比较困难。
    • 优点:
      • (1).客户可以在第一次增量后就使用到系统的核心功能,增强了客户使用系统的信心;
      • (2).项目总体失败的风险较低,因为核心功能先开发出来,即使某一次增量失败,核心功能的产品客户仍然可以使用。
      • (3).由于增量是按照从高到低的优先级确定的,最高优先级的功能得到最多次的测试,保障了系统重要功能部分的可靠性。
      • (4).所有增量都是在同一个体系结构指导下进行集成的,提高了系统的稳定性和可维护性。
  • 敏感开发模型

    • 敏捷宣言,也叫做敏捷软件开发宣言,正式宣布了对四种核心价值和十二条原则,可以指导迭代的以人为中心的软件开发方法。

    • 敏捷开发-Scrum

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27381.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一分钟学一个 Linux 命令 - tar

前言 大家好,我是 god23bin。今天给大家带来的是 Linux 命令系列,每天只需一分钟,记住一个 Linux 命令不成问题。今天,我们要介绍的是一个常用且强大的命令:tar。 什么是 tar 命令? tar 是 tape archive…

SUSTechPOINTS三维点云标注工具使用

官方地址:SUSTechPOINTS 官方中文教程 相关文章: OpenPCDet安装、使用方式及自定义数据集训练 安装 git clone https://github.com/naurril/SUSTechPOINTS cd SUSTechPOINTS pip install -r requirement.txt wget https://github.com/naurril/SUSTec…

STL——string和vector容器

初识STL **STL的基本概念****vector容器存放内置数据类型****在vector容器中存放自定义数据类型****vector容器嵌套vector容器****string容器——构造函数****string容器——赋值操作****string容器——字符串拼接****string容器——字符串的查找和替换****string容器——字符串…

Midjourney竞品Leap免费试用; Google 刚刚发布10门独立AI课程

🦉 AI新闻 🚀 Midjourney竞品,免费试玩AI图片生成工具Leap,细节还需提升 摘要:Leap是一款免费试玩的AI图片生成工具,用户可以选择不同的生成模型和步长及数量。功能上尚需提高细节把握能力,但…

线段树算法(C++/C)

目录​​​​​​​ 一、线段树算法的概念 二、为什么需要线段树 三、线段树算法的实现 (1)建树 (2)查询 (3)修改 (4)综合代码,求区间和 (5&#xff…

Python暑假自律打卡学习班,免费,速来(2)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 很快就放暑假了,还有20多天吧! 猫妹对这个暑假相当期待啊, 想想今年的五一劳动节有多火爆…

Openharmony添加编译自己应用

介绍一下Openharmony如何在庞大的编译构建系统中,增添自己想编译的内容。不定期更新~🐸 gn官方文档: https://gn.googlesource.com/gn//main/docs/quick_start.md https://gn.googlesource.com/gn//master/docs/reference.md openharmony官…

Redis 消息队列 Stream

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 💕💕 推荐:体系化学习Java(Java面试专题&#…

C语言写网络爬虫总体思路

使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。 但是&#xf…

Redis学习总结(二)

AOF 为什么是在执行完命令之后记录日志? 关系型数据库(如 MySQL)通常都是执行命令之前记录日志(方便故障恢复),而 Redis AOF 持久化机制是在执行完命令之后再记录日志。AOF 记录日志过程为什么是在执行完命…

【LeetCode】HOT 100(7)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

chatgpt赋能python:Python创建SEO文章的指南

#Python创建SEO文章的指南 在当今数字化世界中,SEO(搜索引擎优化)对于拥有一个成功的在线业务至关重要。SEO文章不仅可以帮助提高网站的排名,还可以吸引更多的访问者并提高转化率。在本文中,我们将介绍如何使用Python…

数据分析第17课seaborn绘图

关系型绘图 seaborn.relplot() 这个函数功能非常强大,可以用来表示多个变量之间的关联关系。默认情况下是绘制散点图(散点图是看到变量与变量之间相关性最优的一个图形),也可以绘制线性图,具体绘制什么图形是通过kind参数来决定的。实际上以下两个函数就是relplot的特例…

2023网安面试题170道,轻松应对面试

最近有不少小伙伴跑来咨询: 想找网络安全工作,应该要怎么进行技术面试准备? 工作不到 2 年,想跳槽看下机会,有没有相关的面试题呢? 为了更好地帮助大家高薪就业,今天就给大家分享两份网络安全工…

(1Gbit)MT28EW01GABA1LPC-0SIT、MT28EW01GABA1HPC-0SIT FLASH - NOR 存储器

MT28EW01GABA1LPC-0SIT、MT28EW01GABA1HPC-0SIT 1Gbit并行NOR闪存器件具有较高的密度、就地执行 (XiP) 性能和架构灵活性,可满足汽车、消费类和移动产品的设计要求。该器件非常适合用于GPS/导航、汽车后视摄像头、手机、智能手机和电子阅读器。该器件还具有较宽的温…

使用OpenFlow和Ryu控制器实现网络交换机的软件定义网络(SDN)控制

使用OpenFlow和Ryu控制器实现网络交换机的软件定义网络(SDN)控制 (1)环境介绍 硬件环境:系统最低要求为2个CPU 、2 GB内存。 拓扑介绍:云平台具体安装拓扑如图5-4所示。 图5-4 云平台安装拓扑 搭建云平…

NodeJS MongoDB⑦

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言Node&MongoDB 第一步 连接数据库 第二步 创建User Mongodb模型 第三步 简单使用 Mongodb命令 第四步 规范使用 Mongodb命令 &#xff08…

解数独--难的一批

1题目 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数…

RHEL7同步ntp时间

RHEL7同步ntp时间 RHEL7同步ntp时间测试ntp服务器是否可用抓包分析ntp 查看NTP同步情况ntp服务器配置文件将ntp配置迁移到chronytimedatectl设置时区和时间设置UTC或RTC时间查看所有可用时区查看当前时区设置系统时区启用夏令时timedatectl时间同步timedatectl修改当前日期时间…

基于ADME的分子过滤和 lead-likeness标准

T002 基于ADME的分子过滤和 lead-likeness标准 项目来源于TeachOpenCADD 本文目标 在药物设计的背景下,重要的是通过例如它们的物理化学性质来过滤候选分子。 在这个教程中,从 ChEMBL ( Talktorial T001 )获得的化合物将按照 Lipinsik 的五法则进行…