系统架构设计师教程 第9章 9.1 软件可靠性基本概念 笔记

news2024/9/25 9:40:13

第 9 章 软件可靠性基础知识 ★★★★☆

9.1 软件可靠性基本概念

9.1.1 软件可靠性定义

软件可靠性 (Software Reliability) 是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。
规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件;
规定的时间区间是指软件的实际运行时间区间;
规定功能是指为提供给定的服务,软件产品所必须具备的功能。
4个不同点。
(1)复杂性。软件内部逻辑高度复杂,硬件相对简单。
(2)物理退化。软件不存在物理退化现象,硬件失效主要是物理退化所致。软件正确性与软件可靠性密切相关。
(3)唯一性。软件是唯一的,软件复制不改变软件本身,而任何两个硬件不可能绝对相同。
(4)版本更新较快。硬件更新周期通常较慢,定型后一般不会更改,而软件产品通常受需求变更、软件缺陷修复的影响,软件版本更新较快,这给软件可靠性评估带来较大的难度。

对于软件可靠性,国家标准GB/T-11457采用的定义:在规定的条件下,在规定的时间内,软件不引起系统失效的概率。

软件可靠性的框架性定义
(1)规定的时间。
软件可靠性体现在运行阶段,所以将“运行时间”作为“规定的时间”的度量。“运行时间”包括软件系统运行后工作与挂起(开启但空闲)的累计时间。由于软件运行的环境与程序路径选取的随机性,软件的失效为随机事件,所以运行时间属于随机变量。

(2)规定的条件。
规定的条件主要指软件的运行环境,涉及软件系统运行时所需的各种支持要素,如支持硬件平台(服务器、台式机和网络平台等)、操作系统、数据库管理系统、中间件,以及其他支 持软件、输入数据格式和范围及操作规程等。具体地说,规定的环境条件主要是描述软件系统运行时计算机的配置情况及对输入数据的要求,并假定其他一切因素都是理想的。

(3)所要求的功能。
软件可靠性还与规定的任务和功能有关。由于要完成的任务不同,调用的子模块就不同(包括程序选择路径不同),其可靠性也就可能不同。要准确度量软件系统的可靠性,必须先明确它的任务和功能。

(4)“软件可靠性”定义具有以下特点。
①用内在的“缺陷”和外在的“失效”关系来描述可靠性,更能深刻地体现软件的本质特点。
②定义使人们对软件可靠性进行量化评估成为可能。依据这个定义,可以通过分析影响可靠性的因素, 用函数的形式,按照不同的目的建立各种数学模型去分析软件可靠性。
③用概率的方法去描述可靠性是比较科学的。定义用规定时间内其操作不出现软件失效的概率来描述可靠性,用概率来描述随机事件,是比较合理的,也是可行的。

9.1.2 软件可靠性的定量描述

软件的可靠性可以基于使用条件、规定时间、系统输入、 系统使用和软件缺陷等变量构建的数学表达式。
1.规定时间
对于“规定时间”有3种概念:
自然时间,也就是日历时间,指日常计时用的 年、月、周、日等自然流逝的时间段;
运行时间,指软件从启动开始,到运行结束的时间段;
执行时间,指软件运行过程中,中央处理器 (CPU) 执行程序指令所用的时间总和。
使用执行时间来度量软件的可靠性最为准确,效果最好

2.失效概率
从软件运行开始,到某一时刻 t 为止,出现失效的概率可以看作是关于软件运行时间的一个随机函数,用F ( t ) 表示。

3.可靠度
根据可靠性的定义,可靠度就是软件系 统在规定的条件下、规定的时间内不发生失效的概率。如果用F ( t ) 来表示到t 时刻止,软件不出现失效的概率,则可靠度的公式为R(t)=1 -F(t)

4.失效强度
失效强度 (Failure Intensity) 的是单位时间软件系统出现失效的概率。

5.平均失效前时间
可靠度为R(t) 的系统平均失效前时间 (Mean Time To Failure,MTTF) 定义为从t=0 时到故障发生时系统的持续运行时间的期望值

6.平均恢复前时间
平均恢复前时间 (Mean Time To Restoration,MTTR) 是随机变量恢复时间的期望值,是从出现故障到修复成功中间的这段时间。MTTR越短表示易恢复性越好。

7.平均故障间隔时间
MTBF(Mean Time Between Failures, 平均故障间隔时间)定义为:失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间。
MTBF = MTTF + MTTR

9.1.3 可靠性目标

失效严重程度类 (Failure Severity Class)就是对用户具有相同程度影响的失效集合。可以按不同标准进行分级,常见的是按对成本影响、对系统能力的影响等标准划分软件失效的严重程度类,常用数量级去表示等级,数值越小越严重。
可靠性目标是指客户对软件性能满意程度的期望。通常用可靠度、故障强度和平均失效时 间 (MTTF) 等指标来描述,根据不同项目的不同需要而定。为了定义系统的可靠性指标,必须确定系统的运行模式,定义 故障的严重性等级,确定故障强度目标。

9.1.4 可靠性测试的意义

(1)软件失效可能造成灾难性的后果。
(2)软件的失效在整个计算机系统失效中的比例较高。
(3)软件可靠性技术很不成熟。
(4)软件费用呈有增无减的势头,而软件可靠性问题是造成费用增长的主要原因之一。
(5)软件对生产活动和社会生活的影响越来越大,增加了软件可靠性问题在软件工程领域乃至整个计算机工程领域的重要性。

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

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

狭义的软件可靠性测试是指为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。狭义的软件可靠性测试也叫“软件可靠性试验” (Software Reliability Test), 它是面向缺陷的测试,以用户的角度来测试软件。
可靠性测试的目的可归纳为以下3个方面。
(1)发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷。
(2)为软件的使用和维护提供可靠性数据。
(3)确认软件是否达到可靠性的定量要求。

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

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

相关文章

scrapy 爬取微博(四)【最新超详细解析】: 设计篇

一、功能设计 开始开发之前我们先对本文的scrapy微博爬虫工程进行一个功能的设计,包含的功能模块如下: 功能模块具体描述微博文章爬取根据关键词、时间范围等参数爬取微博文章,获取用户名、ID、微博mid、微博内容、点赞、转发、评论等数据微…

全国各省市生产总值指数-工业增加值指数(1999-2020年)

工业增加值指的是工业企业在一定时期内通过生产活动创造的新增价值,它等于工业总产值减去工业中间投入的差额。这一指标的计算可以采用生产法和收入法两种方式。生产法通过计算工业总产值与中间消耗的差额来得到,而收入法则将工业增加值视为固定资产折旧…

HarmonyOS Next(纯血鸿蒙)它到底像谁

前言 24年的第1天有写过一篇关于鸿蒙的文章:不吹不黑,辩证看待开发者是否需要入坑鸿蒙 后续再也没有写关于鸿蒙的文章。 没错,我确实入坑了鸿蒙,并且成功上架了几款App和元服务,虽然当前的用户量还比较少&#xff0c…

微信小程序——引入 iconfont 矢量图标,如何使用引用阿里巴巴矢量图标

本文介绍如何在小程序中加入图标,效果如下图: 1、访部iconfont-阿里巴巴矢量图标库 找到需要的图标,然后添加入库 将增加好的图标添加到项目中 2、点击更新生成代码 生成后如下图 3、打开生成的css样式文件 4、在小程序中新建/static/iconfon…

利士策分享,如何在有限的时间内过上富足的生活?

利士策分享,如何在有限的时间内过上富足的生活? 在快节奏的现代生活中,追求富足不仅仅是物质上的丰盈,更是心灵的满足与生活的平衡。 如何在有限的时间内实现这一目标,是许多人心中的疑问。 以下是一些实用建议&#…

Ubuntu 20.04 内核升级后网络丢失问题的解决过程

在 Ubuntu 系统中,内核升级是一个常见的操作,旨在提升系统性能、安全性和兼容性。然而,有时这一操作可能会带来一些意外的副作用,比如导致网络功能的丧失。 本人本来是想更新 Nvidia 显卡的驱动,使用 ubuntu-drivers …

postman中使用Pre-request Script

一、get方法 get请求时 ,有多个params,并且有一个参数为sign,这个参数是有其他params拼接之后md5加密得到的,如何通过js语句获取params参数并生成sign。 const CryptoJS require(crypto-js); // 引入 CryptoJS 库进行 MD5 加密…

安卓数据存储——SQLite

一、SQLite数据库 创建表 CREATE TABLE IF NOT EXISTS user_info (_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,name VARCHAR NOT NULL,age INTEGER NOT NULL,height LONG NOT NULL,weight FLOAT NOT NULL);注: IF NOT EXISTS:如果该表不存在则创…

Docker更换阿里容器镜像源

以Mac为例, 一、获取阿里容器镜像加速器地址 访问阿里云官网https://cn.aliyun.com/ 登录阿里云,没有账号就注册一个 登录完成后在搜索框搜索,容器镜像服务,并打开 点击管理控制台,进入管理控制台 左侧点击镜像加速…

ubuntu重新安装clickhouse

1.卸载clickhouse 关闭原来的clickhouse sudo systemctl stop clickhouse-server 查看关闭clickhouse是否成功 sudo systemctl status clickhouse-server 备份配置文件 /etc/clickhouse-server/user.xml /etc/clickhouse-server/config.d/metrika.xml /etc/clickhouse…

蚂蚁Raft一致性算法库SOFAJRaft深入分析

大家好,我是 V 哥,SOFAJRaft 是蚂蚁金服开源的一个基于 Raft 共识算法的 Java 实现,它特别适合高负载、低延迟的分布式系统场景。SOFAJRaft 支持 Multi-Raft-Group,能够同时处理多个 Raft 集群,具有扩展性和强一致性保…

实验室ICPR 2024论文分享┆FPMT: 基于增强型半监督模型的交通事件检测(含详细视频解读)

目录 论文分享简介 1. 会议介绍 2. 研究背景及主要贡献 3. 方法 4. 实验 5. 结论 6. 论文介绍视频 论文分享简介 本推文详细介绍了一篇实验室的最新论文成果《FPMT: Enhanced Semi-Supervised Model for Traffic Incident Detection》,该论文已被第27届国际…

尚硅谷———-乐(智)尚代驾~~--------Day5----司机认证篇~

前言: Hello亲爱的uu们,在读过了一个愉快的周末后(摸鱼了一会),我又回来更新啦,感谢uu们的阅读,话不多说~ 司机认证 当司机点击开始接单的时候,会先判断该司机有没有通过认证&…

关于PCA的一份介绍

在这篇文章中,我将介绍机器学习中的一种无监督学习算法——PCA,因为它主要有两种用途,即降维与特征提取,所以我将将围绕这两种用途来介绍它,包括基本概念,应用与代码实践。 一、 PCA 1.1 概念 PCA&#…

dev containers plugins for vscode构建虚拟开发环境

0. 需求说明 自用笔记本构建一套开发环境,用docker 虚拟插件 dev containers,实现开发环境的构建,我想构建一套LLMs的环境,由于环境配置太多,不想污染本地环境,所以选择隔离技术 1. 环境准备 vscodedocker 2. 步骤…

任意长度并行前缀和 扫描算法 《PMPP》笔记

下面的算法针对于任意长度输入 对于大数据集,首先将输入分为几段,每一段放进共享内存并用一个线程块处理,比如一个线程块使用1024个线程的话,每个块最多能处理2048个元素。 在前面代码中,一个块最后的执行结果保存到了…

桥接模式和NET模式的区别

桥接模式和NET模式的区别 NAT模式: NAT:网络地址转换(模式):借助宿主机来上网,没桥接那么麻烦,只用配置DNS即可。 缺点:扎根于宿主机,不能和局域网内其它真实的主机进行…

用Python实现运筹学——Day 2: 线性规划的基本概念

一、学习内容 线性规划的定义: 线性规划(Linear Programming, LP)是一种用于求解约束条件下线性目标函数最优解的方法。线性规划问题通常涉及最大化或最小化一个线性目标函数,目标函数的变量受一组线性不等式或等式的约束。 目标…

C语言 | Leetcode C语言题解之第435题无重叠区间

题目: 题解: int cmp(int** a, int** b) {return (*a)[1] - (*b)[1]; }int eraseOverlapIntervals(int** intervals, int intervalsSize, int* intervalsColSize) {if (intervalsSize 0) {return 0;}qsort(intervals, intervalsSize, sizeof(int*), cm…

【React】Ant Design 5.x版本drawer抽屉黑边问题

环境 antd: ^5.14.1react: ^18 问题情况 <Drawer open{open} closable{false} mask{false} width{680}getContainer{props.getContainer || undefined}><p>Some contents...</p><p>Some contents...</p><p>Some contents...</p> …