系统架构设计师【第9章】: 软件可靠性基础知识 (核心总结)

news2024/11/19 9:26:05

文章目录

    • 9.1 软件可靠性基本概念
      • 9.1.1 软件可靠性定义
      • 9.1.2 软件可靠性的定量描述
      • 9.1.3 可靠性目标
      • 9.1.4 可靠性测试的意义
      • 9.1.5 广义的可靠性测试与狭义的可靠性测试
    • 9.2 软件可靠性建模
      • 9.2.1 影响软件可靠性的因素
      • 9.2.2 软件可靠性的建模方法
      • 9.2.3 软件的可靠性模型分类
    • 9.3 软件可靠性管理
    • 9.4 软件可靠性设计
      • 9.4.1 容错设计技术
      • 9.4.2 检错技术
      • 9.4.3 降低复杂度设计
      • 9.4.4 系统配置技术
    • 9.5 软件可靠性测试
      • 9.5.1 软件可靠性测试概述
      • 9.5.2 定义软件运行剖面
      • 9.5.3 可靠性测试用例设计
      • 9.5.4 可靠性测试的实施
    • 9.6 软件可靠性评价
      • 9.6.1 软件可靠性评价概述
      • 9.6.2 怎样选择可靠性模型
      • 9.6.3 可靠性数据的收集
      • 9.6.4 软件可靠性的评估和预测

9.1 软件可靠性基本概念

9.1.1 软件可靠性定义

软件可靠性 (Software Reliability) 是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。即软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在的缺陷函数; 系统输入将确定是否会遇到已存在的缺陷。

9.1.2 软件可靠性的定量描述

软件的可靠性是在软件使用条件、在规定时间内、系统的输入/输出、系统使用等变量构成的数学表达式,如图:
在这里插入图片描述

9.1.3 可靠性目标

软件可靠性是指用户对所使用的软件的性能满意程度的期望。可以用可靠度、平均失效时间和故障强度等来描述。

9.1.4 可靠性测试的意义

可靠性测试的意义是:

  • (1)软件失效可能造成灾难性的后果。
  • (2)软件的失效在整个计算机系统失效中的比例较高。
  • (3)相比硬件可靠性技术,软件可靠性技术不成熟。
  • (4)软件可靠性问题会造成软件费用增长。
  • (5)系统对软件的依赖性强,对生产活动和社会生活影响日益增大。

可靠性测试的目的如图:
在这里插入图片描述

9.1.5 广义的可靠性测试与狭义的可靠性测试

(1)广义的可靠性测试是为了最终评价软件系统的可靠性而运用建模、统计、试验、分析和评价等一系列手段对软件系统实施的一种测试。

(2)狭义的可靠性测试指为了获取可靠性数据,按预先确定好的测试用例,在软件预期使用环境中,对软件实施的一种测试。

9.2 软件可靠性建模

9.2.1 影响软件可靠性的因素

软件可靠性模型 (Software Reliability Model) 是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型。 建立可靠性模型是为了将复杂系统的可靠性逐级分解为简单系统的可靠性,以便于定量预计、 分配、估算和评价复杂系统的可靠性。

(1)影响软件可靠性的因素包括:运行环境、软件规模、软件的内部结构、软件的开发方法和开发环境、软件的可靠性投入。

(2)软件可靠性模型的组成和特性,如图:
在这里插入图片描述

9.2.2 软件可靠性的建模方法

一个软件可靠性模型通常(但不是绝对)由以下几部分组成。

  • (1) 模型假设
  • (2) 性能度量
  • (3) 参数估计方法
  • (4) 数据要求

9.2.3 软件的可靠性模型分类

软件的可靠性模型大致可分为如下10类:

  • 种子法、
  • 失效率类、
  • 曲线拟合类、
  • 可靠性增长、
  • 程序结构分析、
  • 输入域分类、
  • 执行路径分析方法、
  • 非齐次泊松过程、
  • 马尔可夫过程、
  • 贝叶斯分析。

9.3 软件可靠性管理

软件可靠性管理的各阶段,如图:
在这里插入图片描述

9.4 软件可靠性设计

软件可靠性设计技术有: 容错设计技术、检错技术、降低复杂度设计、系统配置技术

9.4.1 容错设计技术

容错设计技术: 恢复块设计、N 版本程序设计、冗余设计

  • 1 ) 恢复块设计: 选择一组操作作为容错设计单元,把普通的程序块变成恢复块。
  • 2 ) N 版本程序设计: 通过设计多个模块或不同版本,对相同初始条件和相同输入的操作结果,实行多数表决,防止其中某一软件模块/版本的故障提供错误的服务。
    3 ) 冗余设计: 在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方式方法的模块或系统作为备份,在出现故障时可使用冗余部分进行替换。

9.4.2 检错技术

1)检错技术代价低于容错技术和冗余技术,但是不能自动解决故障,需要人工干预。

2)检错技术着重考虑 检测对象、检测延时、实现方式、处理方式 四个要素。

9.4.3 降低复杂度设计

降低复杂度设计思想是: 在保证实现软件功能基础上,简化软件结构、缩短程序代码长度、优化
软件数据流向、降低软件复杂度、提高软件可靠性。

9.4.4 系统配置技术

系统配置技术: 可以分为 双机热备技术和服务器集群技术

1)双机热备技术

  • 采用“心跳”方法保证主系统与备用系统的联系。
  • 根据两台服务器的工作方式分为双机热备模式(一台工作,一台后备)、双机互备模式(两台运行相对独立应用,互为后备)、双机双工模式(两台同时运行相同应用,互为后备)。

2)服务器集群技术。 集群内各节点服务器通过内部局域网相互通信,若某节点服务器发生故障,这台服务器运行的应用被另一节点服务器自动接管。

9.5 软件可靠性测试

9.5.1 软件可靠性测试概述

软件可靠性测试包括: 可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果分析等。

9.5.2 定义软件运行剖面

为软件的使用行为建模,开发使用模型,明确需测试内容。

9.5.3 可靠性测试用例设计

测试用例要能够反映实际的使用情况,优先测试最重要的和最频繁使用的功能。设计测试用例,针对组合功能或特定功能,编写成相关文档。测试用例组成如下图:
在这里插入图片描述

9.5.4 可靠性测试的实施

用时间定义的软件可靠性数据分为4 类: 失效时间数据、失效间隔时间数据、分组时间内的失效数、分组时间的累积失效数。测试记录与测试报告的组成如图 :
在这里插入图片描述

9.6 软件可靠性评价

9.6.1 软件可靠性评价概述

评估和预测软件可靠性过程包括:

  • (1) 选择可靠性模型。
  • (2) 收集可靠性数据。
  • (3) 可靠性评估和预测。

9.6.2 怎样选择可靠性模型

可以从以下几方面选择可靠性模型:

  • (1) 模型假设的适用性。
  • (2) 预测的能力与质量。
  • (3) 模型输出值能否满足可靠性的评价需求。
  • (4) 模型使用的简便性。

9.6.3 可靠性数据的收集

数据收集可行的办法有:

  • (1) 尽可能早地确定可靠性模型。
  • (2) 数据收集计划要有较强的可操作性。
  • (3) 重视测试数据的分析和整理。
  • (4) 充分利用技术手段(数据库技术)来完成分析和统计。

9.6.4 软件可靠性的评估和预测

(1)软件可靠性的评估和预测的目的是: 评估软件系统的可靠性状况和预测将来一段时间的可靠性水平

(2)软件可靠性的评估和预测以 软件可靠性模型分析为主,以失效数据的图形分析法和试探性数据分析技术等为辅

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

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

相关文章

CISCN 2023 初赛 被加密的生产流量

题目附件给了 modbus.pcap 存在多个协议 但是这道题多半是 考 modbus 会发现 每次的 Query 末尾的两个字符 存在规律 猜测是base家族 可以尝试提取流量中的数据 其中Word Count字段中的22871 是10进制转16进制在转ascii字符串 先提取 过滤器判断字段 tshark -r modbus.pcap …

java线程状态介绍

1.新建(New): 线程对象已创建,但还没有调用 start() 方法。 2.可运行(Runnable): 线程已启动,处于就绪状态,等待 JVM 的线程调度器分配CPU时间。 3.阻塞(Blocked): 线程…

自动化桌面整理新时代:Llama 3驱动的智能文件管理系统

在信息爆炸的时代,个人和企业用户的电脑桌面常常被海量文件占据,导致查找特定文件如同大海捞针。为了解决这一痛点,Llama 3应运而生——一个集成了先进多模态AI技术的智能文件管家,旨在将杂乱无章的文件世界变得井然有序。本文将深入探讨Llama 3如何利用其创新功能,不仅自…

上传RKP 证书签名请求息上传到 Google 的后端服务器

上传证书签名请求 1.准备环境:OK pip3 install google-auth2.13.0 requests2.28下载 device_info_uploader.py 。 没找到先跳过 选项 1:通过 GCP 帐户使用 device_info_uploader.py 运行脚本。 ./device_info_uploader.py --credentials /secure/s…

简要分析学习spring内存马,劫持马

简要分析学习spring内存马,劫持马 本文主要是通过SpringMemShell这个工程,来对spring内存马进行演示,利用。 写在前面: 参考的是大佬给的流程以及思路,其中的解释与分析非常详细 ----->>大佬的链接 这里的内存马文件取自gi…

python采集汽车价格数据

python采集汽车价格数据 一、项目简介二、完整代码一、项目简介 本次数据采集的目标是车主之家汽车价格数据,采集的流程包括寻找数据接口、发送请求获取响应、解析数据和持久化存储,先来看一下数据情况,完整代码附后: 二、完整代码 #输入请求页面url #返回html文档 imp…

Scikit-Learn 基础教程

目录 🐋Scikit-Learn 基础教程 🐋Scikit-Learn 简介 🐋 数据预处理 🦈数据集导入 🦈数据清洗 🦈特征选择 🦈特征标准化 🐋 模型选择 🦈分类模型 🦈回…

Resilience4j结合微服务出现的异常

Resilience4j结合微服务出现的异常 1、retry未生效 由于支持aop&#xff0c;所以要引入aop的依赖。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>2、circ…

解决:【无法安装“vue.volar“扩展,因为它与当前 VIsual Studio Code 版本不兼容(版本 1.80.0)】

目录 问题复现问题分析解决步骤1、进入VSCode插件市场&#xff0c;搜索Vue.volar2、点击搜索结果&#xff0c;进入详情页面3、下载.vsix文件完成后&#xff0c;用解压软件打开 4、复制package.json文件&#xff0c;修改vscode版本5、保存package.json文件&#xff0c;并更新.v…

2024 HN CTF WebMisc 部分 wp

Web ez_tp 判断是thinkphp 3.2 参考官方手册:https://www.kancloud.cn/manual/thinkphp/1697 判断路由模式 URL_CASE_INSENSITIVE > true, // 默认false 表示URL区分大小写 true则表示不区分大小写URL_MODEL > 1, // URL访问模式,可选参数0、1、…

cURL error 60: SSL certificate problem: unable to get local issuer certifica

本地小程序把接口换到本地的服务器接口&#xff0c;然后就报错了&#xff1a; cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) 经查询查到&#xff1a;此问题的出现是由于没有配…

第八十九周周报

学习目标&#xff1a; 论文 学习时间&#xff1a; 2024.05.25-2024.05.31 学习产出&#xff1a; 一、论文 SAN: INDUCING METRIZABILITY OF GAN WITH DISCRIMINATIVE NORMALIZED LINEAR LAYER 将GAN与切片最优输运联系起来&#xff0c;提出满足方向最优性、可分离性和单射…

数据资产价值如何评估?一文详解如何构建数据资产评估的综合框架

数据资产&#xff0c;如同其构成的数据本身&#xff0c;具备物理、存在和信息三重属性。数据资产的物理属性体现在其对存储空间的占用&#xff1b;其存在属性则体现在数据的可读取性上&#xff0c;若数据无法读取&#xff0c;则其作为资产的价值便无从体现。这两个属性共同构成…

LeetCode 算法: 字母异位词分组c++

原题链接&#x1f517;&#xff1a;字母异位词分组 难度&#xff1a;中等⭐️⭐️ 题目 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“e…

centos7.9离线安装mysql5.7

centos7.9离线安装mysql5.7 查询mysql查询组查询用户不存在创建即可&#xff0c;创建mysql用户组上传下载的安装包创建my.cnf文件修改配置文件修改mysql登陆密码 centos7.9 mysql5.7 查询mysql rpm -qa | grep mysql我这里查询是不存在&#xff0c;如果你的存在可以用rm -rf […

云原生架构相关技术_4.服务网格

1.技术特点 服务网格&#xff08;ServiceMesh&#xff09;是分布式应用在微服务软件架构之上发展起来的新技术&#xff0c;旨在将那些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施&#xff0c;实现应用与平台基础设施的解耦。这个解耦意味着开发者无需…

ROS2在RVIZ2中加载机器人urdf模型

参考ROS2-rviz2显示模型 我这边用的solid works生成的urdf以及meshes&#xff0c;比参考的方法多了meshes 问题一&#xff1a;Error retrieving file [package://rm_dcr_description/meshes/leftarm_link7.STL]: Package [rm_dcr_description] does not exist 这个是urdf模型中…

react 怎样配置ant design Pro 路由?

Ant Design Pro 是基于 umi 和 dva 的框架&#xff0c;umi 已经预置了路由功能&#xff0c;只需要在 config/router.config.js 中添加路由信息即可。 例如&#xff0c;假设你需要为 HelloWorld 组件创建一个路由&#xff0c;你可以将以下代码添加到 config/router.config.js 中…

AngularJS基础语法(2009版本)

jquery和AngularJS 数据绑定和获取对比&#xff1a; jquery&#xff0c;要操作DOM&#xff1a; angularJS&#xff0c;无需操作DOM就可以进行动态数据变化&#xff1a; 要使用Angularjs就需要在html页面先引入&#xff1a; ng-app&#xff1a; html页面中&#xff0c;需要给…

html期末复习速览

一.基础标签 1.段落标签<p></p> 特点&#xff1a;分段分割 2.标题标签<h1></h1>……<h6></h6> 特点&#xff1a;文字加粗&#xff0c;单独占一行 3.换行标签<br /> 特点&#xff1a;单标签&#xff0c;强制换行 二.文本格式化…