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

news2025/2/1 7:49:19

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

软件危机

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

软件工程

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

软件生命周期

软件生命周期模型

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

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

  • 瀑布模型

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

  • 迭代模型(喷泉模型)

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

  • 螺旋模型

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

  • 快速原型

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

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

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

    • 敏捷开发-Scrum

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

史上最详细的安装Kali-linux教程(附视频教程)

之前不少人问kali怎么安装,今天就发一篇利用VM虚拟机安装kali的详细教程,每一步都截图了,让大家尽可能的清楚每一步的操作。 1.2 使用 VM 虚拟机安装 Kali 1.2.1 官方下载 Kali Linux 官方网址:http://www.Kali.org 下载方式分…

跨域 —— 反向代理配置

跨域问题在讲Node.js学习中编写接口的时候就已经讲到了,由后端配置解决跨域问题,使用cors中间件解决跨域问题以及使用JSONP解决跨域(仅支持GET请求),具体可以看一下这篇文章的内容:十二、Express接口编写 —…

python面向对象操作3(速通版)

目录 一、多态和类名 1.标准多态 2.实例属性和实例方法 3.类对象和类属性 4.对象保存 二、方法 1.类方法 3.四种方法的区别 三、模块 1.导入模块 2.自动模块导入 3.模块导入的几种形式 3.1模块导入的两种方式和别名 3.2 from 模块 import 成员 4.两种方法的区别…

【运筹优化】最短路算法之A星算法 + Java代码实现

文章目录 一、A星算法简介二、A星算法思想三、A星算法 java代码四、测试 一、A星算法简介 A*算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。 二、A星算…

day52_Spring

今日内容 零、 复习昨日 一、Spring 零、 复习昨日 一、引言 以前 public class HelleServlet extends HttpServlet{UserService service new UsrServiceImpl();void doGet(){service.findUser();} }public interface UserService{User findUser(); } public class UserServ…

Tigase-Server 8.3.0在windows11下安装

一、JDK安装: tigase-server要求JDK 17,请先下载JDK17, 下载地址:https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe 配置环境变量:JAVA_HOME{JDK安装目录} 二、数据库安装:tigase-server8.3在windows下…

【算法系列 | 4】深入解析排序算法之——归并排序

序言 你只管努力,其他交给时间,时间会证明一切。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点 决定开一个算法专栏,希望能帮助大…

Chrome内核插件开发报错:Unchecked runtime.lastError:的原因及解决办法。

本篇文章主要讲解,chrome内核插件开发时报错:Unchecked runtime.lastError: Extensions using event pages or Service Workers must pass an id parameter to chrome.contextMenus.create 的原因及解决办法。 日期:2023年6月10日 作者:任聪聪 报错现象: 查看报错路径,在…

项目经理必备!这四个高效管理工具帮你实现项目管理目标

在项目管理中,图形工具可以帮助我们让项目信息可视化,让项目管理更加高效,对于项目经理而言,这些工具都是好帮手。让我们一起看看,项目经理常用的管理工具都有那些吧~ 1,甘特图 甘特图是计划和管理项目的好…

【Spring使用注解更简单的实现Bean对象的存取】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、前言: 二、储存Bean对象和使…

天黑的时候如果下雨了,会比平常更亮一些

目录 一、最近的感受 二、自我的审视 三、如何变得强大 1.保持善良 2.不过度追求公平 3.在痛苦中找到自己的意义 4.令人振奋的生命力 四、情绪调节中的个人见解及如何处理情绪后的学习 1.运动 2.散步 3.找好朋友倾诉 五、总结 一、最近的感受 天黑的时候如果下雨了…

设计模式(十一):结构型之组合模式

设计模式系列文章 设计模式(一):创建型之单例模式 设计模式(二、三):创建型之工厂方法和抽象工厂模式 设计模式(四):创建型之原型模式 设计模式(五):创建型之建造者模式 设计模式(六):结构型之代理模式 设计模式…

C语言:写一个代码,使用 试除法 打印100~200之间的素数(质数)

题目: 使用 试除法 打印100~200之间的素数。 素数(质数):一个数只能被写成一和本身的积。 如:7只能写成1*7,那就是素数(质数)了。 思路一:使用试除法 总体思路&#xff…

HTML5 介绍

目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> 文档类型声明 2.2 <html>标签 2.3 <meta>标签 设置字符编码 2.4 引用样式表 2.5 引用JavaScript文件 3. 完整页面示例 4. 资料网站 1. HTML5介绍 1.1 介绍 …

带你手撕一颗红黑树

红黑树&#xff08;C&#xff09; 红黑树简述红黑树的概念红黑树的性质红黑树结点定义 一&#xff0c;红黑树的插入插入调整插入代码 二&#xff0c;红黑树的验证三&#xff0c;红黑树的删除待删除的结点只有一个子树删除结点颜色为红色删除结点颜色为黑色 删除的结点为叶子节点…

直流稳压电源与信号产生电路(模电速成)

目录 一、直流稳压电源 1、直流稳压电路 2、串联型稳压电路 3、集成稳压电路 二、信号产生电路 1、振荡电路 2、波形发生器 一、直流稳压电源 1、直流稳压电路 直流电源由 变压器、整流、滤波、稳压 四部分组成 整流&#xff1a;将交流变为直流 滤波&#xff1a;减小…

AI人工智能之科研论文搜索集锦

AI人工智能之科研论文搜索集锦 前言1. Google学术搜索2. Google搜索3. Arxiv#Example&#xff1a; 4. Github#Example&#xff1a; 5. Paperwithcode6. Connectedpapers7. OpenReview 总结 前言 如今越来越多领域都会与计算机、人工智能方面进行跨领域融合&#xff0c;一个万物…

帮忙投票的链接怎么弄的微信怎么创建投票链接设置投票

近些年来&#xff0c;第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放&#xff0c;更多人选择微信投票小程序平台&#xff0c;因为它有非常大的优势。 1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…

EMC学习笔记(二)模块划分及特殊器件的布局

模块划分及特殊器件的布局 1.模块划分1.1 按功能划分1.2 按频率划分1.3 按信号类型划分1.4 综合布局 2.特殊器件的布局2.1 电源部分2.2 时钟部分2.3 电感线圈2.4 总线驱动部分2.5 滤波器件 谈PCB的EMC设计,不能不谈PCB的模块划分及关键器件的布局。这一方面是某些频率发生器件、…

day51_mybatis

今日内容 零、 复习昨日 一、缓存 二、单例设计模式 零、 复习昨日 多表联查的时候 扩展类写接口设计方法写sql语句 不能直接映射成实体类resultMap 一对一 axxxxxxx一对多 collection 一、$和#的区别 使用# 使用$ 总结: #{} 相当于是预处理语句,会将#换成占位符?,字符串等…