系统架构设计师 9:软件可靠性

一、软件可靠性

软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。

1 软件可靠性的定量描述

1. 规定时间。

    使用执行时间最为准确。

    执行时间:软件运行过程中,CPU执行程序指令所用的时间总和。

2. 失效概率。

    用 F(t) 表示,可以看作关于时间 t 的一个连续、可导的函数。

3. 可靠度。

    可靠度就是软件系统在规定的条件下、规定的时间内不发生失效的概率。

    用 R(t) 表示,R(t) = 1 - F(t)。

4. 失效强度。

    失效强度是指单位时间软件系统出现失效的概率。

    用 f(t) 表示,f(t) = F'(t)。

5. 平均失效前时间。

    MTTF,定义为从 t=0 时到故障发生时系统的持续运行时间的期望值。

    MTTF = R(t)在(0, ∞)上的积分。

6. 平均恢复前时间。

    MTTR,就是从出现故障到修复成功中间的这段时间。MTTR越小表示易恢复性越好。

7. 平均故障间隔时间。

    MTBF,失效或维护中所需的平均时间。

    对于可靠度服从指数分布的系统,从任一时刻 t₀ 到达故障的期望时间都是相等的,因此有 MTBF = MTTF + MTTR。

2 可靠性目标

2.1 失效严重程度类

失效严重程度类就是对用户具有相同程度影响的失效集合。

(通俗地讲,就是把失效分为致命、严重、一般 等级)

2.2 可靠性目标参考

失效严重程度类

可靠性要求/%

失效强度

平均无失效时间

1

99.9999

10⁻⁶

114年

2

99.99

10⁻⁴

417天

3

99

10⁻¹

4天

4

90

1

9小时

3 可靠性测试

1. 发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷。

2. 为软件的使用和维护提供可靠性数据。

3. 确认软件是否达到可靠性的定量要求。

二、软件可靠性模型

文献记载的软件可靠性统计分析模型有将近百种,这些模型大致可分为以下十类:

1. 种子法模型。

2. 失效率类模型。

3. 曲线拟合类模型。

4. 可靠性增长模型。

5. 程序结构分析模型。

6. 输入域分类模型。

7. 执行路径分析方法模型。

8. 非齐次泊松过程模型。

9. 马尔可夫过程模型。

10. 贝叶斯模型。

三、软件可靠性管理

软件可靠性管理的内容包括软件工程各个阶段的可靠性活动的目标、计划、进度、任务和修正措施等。

软件工程各个阶段可能进行的主要软件可靠性活动如下:

需求分析阶段

(1) 确定软件的可靠性目标。(2) 分析可能影响可靠性的因素。(3) 确定可靠性的验收标准。(4) 制定可靠性管理框架。(5) 制定可靠性文档编写规范。(6) 制订可靠性活动初步计划。(7) 确定可靠性数据收集规范。

概要设计阶段

(1) 确定可靠性度量。(2) 制定详细的可靠性验收方案。(3) 可靠性设计。(4) 收集可靠性数据。(5) 调整可靠性活动计划。(6) 明确后续阶段的可靠性活动的详细计划。(7) 编制可靠性文档。

详细设计阶段

(1) 可靠性设计。(2) 可靠性预测(确定可靠性度量估计值)。(3) 调整可靠性活动计划。(4) 收集可靠性数据。(5) 明确后续阶段的可靠性活动的详细计划。(6) 编制可靠性文档。

编码阶段

(1) 可靠性测试(含于单元测试)。(2) 排错。(3) 调整可靠性活动计划。(4) 收集可靠性数据。(5) 明确后续阶段的可靠性活动的详细计划。(6) 编制可靠性文档。

测试阶段

(1) 可靠性测试(含于集成测试、系统测试)。(2) 排错。(3) 可靠性建模。(4) 可靠性评价。(5) 调整可靠性活动计划。(6) 收集可靠性数据。(7) 明确后续阶段的可靠性活动的详细计划。(8) 编制可靠性文档。

实施阶段

(1) 可靠性测试(含于验收测试)。(2) 排错。(3) 收集可靠性数据。(4) 调整可靠性模型。(5) 可靠性评价。(6) 编制可靠性文档。

四、软件可靠性设计

实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。

一般来说,被认可的且具有应用前景的软件可靠性设计技术主要有容错设计、检错设计和降低复杂度设计等技术。

1 容错设计技术

对于软件失效后果特别严重的场合,可采用容错设计方法。

常用的软件容错技术主要有恢复块设计、N版本程序设计和冗余设计三种方法。

1.1 恢复块设计

程序的执行过程可以看成是由一系列操作构成的,这些操作又可由更小的操作构成。恢复块设计就是选择一组操作作为容错设计单元,从而把普通的程序块变成恢复块。被选择用来构造恢复块的程序块可以是模块、过程、子程序和程序段等。

1.2 N版本程序设计

N版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实行多数表决,防止其中某一软件模块/版本的故障提供错误的服务,以实现软件容错。

1.3 冗余设计

软件的冗余设计技术实现的原理是在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。

2 检错技术

在软件系统中,对无须在线容错的场景,一般采用检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。

采用检错设计技术要着重考虑几个要素:

1. 检测对象。

2. 检测延时。

3. 实现方式。

    判断返回结果、计算运行时间等。

4. 处理方式。

    查出故障-停止软件系统运行-报警。

3 降低复杂度设计

有研究表明,当软件的复杂度超过一定界限时,软件缺陷数会急剧上升,软件的可靠性急剧下降。因此,在设计时就应考虑降低软件的复杂性,使之处于一个合理的阈值之内,这是提高软件可靠性的有效方法。

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

4 系统配置技术

4.1 双机热备技术

双机热备技术是一种软硬件结合的较高容错应用方案。该方案是由两台服务器系统和一个外接共享磁盘阵列柜和相应的双机热备份软件组成。

在这个容错方案中,操作系统和应用程序安装在两台服务器的本地系统盘上,整个网络系统的数据是通过磁盘阵列集中管理和数据备份的。用户的数据存放在外接共享磁盘阵列中,在一台服务器出现故障时,备机主动替代主机工作,保证网络服务不间断。

双机热备方案中,根据两台服务器的工作方式可以有三种不同的工作模式,即:

1. 双机热备模式。

2. 双机互备模式。

3. 双机双工模式。

心跳机制

双机热备系统采用“心跳”方法保证主系统与备用系统的联系。所谓“心跳”,指的是主从系统之间相互按照一定的时间间隔发送通信信号,表明各自系统当前的运行状态。一旦“心跳”信号表明主机系统发生故障,或者备用系统无法收到主机系统的“心跳”信号,则系统的高可用性管理软件认为主机系统发生故障,立即将系统资源转移到备用系统上,备用系统替代主机工作,以保证系统正常运行和网络服务不间断。

4.2 服务器集群技术

集群技术是指一组相互独立的服务器在网络中组合成为单一的系统工作,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。

五、软件可靠性测试

1 可靠性测试用例设计

由于可靠性测试的主要目的是评估软件系统的可靠性,因此,除了常规的测试用例集仍然适用外,还要着重考虑和可靠性密切相关的一些特殊情况。在测试中,可以考虑进行“强化输入”,即比正常输入更恶劣(合理程度的恶劣)的输入。

序号

测试目的

描述

1

屏蔽用户操作错误

考虑对用户常见的误操作的提示和屏蔽情况

2

错误提示的准确性

对用户的错误提示准确描述

3

错误是否导致系统异常退出

有无操作错误引起系统异常退出的情况

4

数据可靠性

系统应对输入的数据进行有效性检查,对冗余的数据进行过滤、校验和清洗,保证数据的正确性和可靠性

5

异常情况的影响

考察数据和系统的受影响程度,若受损,是否提供补救工具、补救的情况如何。异常情况包括:

(1) 硬件效障

(2) 网络故障

(3) 部分软件模块失效

2 软件可靠性测试报告

测试活动结束后要编写《软件可靠性测试报告》,对测试用例及测试结果在测试报告中加以总结归纳。

测试报告应具备如下内容:

1. 软件产品标识。

2. 测试环境配置(硬件和软件)。

3. 测试依据。

4. 测试结果。

5. 测试问题。

6. 测试时间。

六、软件可靠性评价

1. 选择可靠性模型。

2. 收集可靠性数据。

3. 可靠性评估和预测。

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

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

相关文章

LeetCode·每日一题·1851. 包含每个查询的最小区间·优先队列(小顶堆)

题目 示例 思路 离线查询: 输入的结果数组queries[]是无序的。如果我们按照输入的queries[]本身的顺序逐个查看,时间复杂度会比较高。 于是,我们将queries[]数组按照数值大小,由小到大逐个查询,这种方法称之为离线查询…

Ceph 服务的运用

目录 一、资源池 pool 管理 1.创建一个 Pool 资源池 2.查看集群 Pool 信息 3.查看资源池副本的数量 4.查看 PG 和 PGP 数量 5.修改 pg_num 和 pgp_num 的数量为 128 6.修改 Pool 副本数量为 2 7.修改默认副本数为 2 8.删除 Pool 资源池 8.1修改配置文件 8.2推送 ceph…

word页码怎么从第二页开始

视频:https://product.pconline.com.cn/itbk/vedio/1810/11904520.html 1/15 本视频由Office2010进行演示,打开Word 2/15 点击“插入” 3/15 点击“页码” 4/15 选择自己需要的页码位置和格式 5/15 点击“页面布局” 6/15 点击“页面设置” 7/15 点击“…

TypeScript 1 - 小记

文章目录 关于 TypeScript 关于 TypeScript TypeScript is a superset of JavaScript that compiles to clean JavaScript output. 官网:https://www.typescriptlang.orggithub : https://github.com/microsoft/TypeScriptplayground : https://www.typescriptlan…

BTP Integration Suite学习笔记 - (Unit3) Developing with SAP Integration Suite

BTP Integration Suite学习笔记 - (Unit1) Developing with SAP Integration Suite BTP Integration Suite学习笔记 - (Unit2) Developing with SAP Integration Suite 带着一个问题去学:明明可以直接访问一个后端系统的OData服务,为什么还要再多绕一道C…

MACOS查找并解决端口占用

当在Mac上遇到端口占用问题时&#xff0c;可以通过以下步骤解决&#xff1a; 打开终端应用程序&#xff08;Terminal&#xff09;。使用以下命令查找占用特定端口的程序&#xff1a;sudo lsof -n -P | grep :<port>将 <port> 替换为要查找的端口号。例如&#xff…

C语言实现通讯录

今天分享一个通讯录的代码&#xff0c;代码可以正常运行&#xff0c;但是可能有一点点缺陷&#xff0c;完成的是我们的通讯录功能 contact.h #pragma once #include<string.h>#include<stdio.h> #include<assert.h> #define MAX 1000 #define NAME_MAX 20 #…

Linux5.16 Ceph集群

文章目录 计算机系统5G云计算第四章 LINUX Ceph集群一、Ceph1.存储基础1&#xff09;单机存储设备2&#xff09;单机存储的问题3&#xff09;商业存储解决方案4&#xff09;分布式存储&#xff08;软件定义的存储 SDS&#xff09;5&#xff09;分布式存储的类型 2.Ceph 简介3.C…

获得servlet相关API,获得请求头和cookie-spring23

后台能够成功打印 如何获得请求头 如何获得cookie 获取浏览器信息 把network下user Agent的值赋给他 这个值可以直接赋给Cookie 就是这个cookie 把cookie的值赋值给一边JasonId&#xff0c; 这里面的Value代表着名字,名字是cookie后面那一块&#xff1a;

spring-boot-2.2.13.RELEASE 升级 2.6.6 记录

一、版本升级 spring-boot-2.2.13.RELEASE 升级 2.6.6 <properties>...<spring.boot.version>2.6.6</spring.boot.version><spring-cloud.version>2021.0.1</spring-cloud.version><spring-cloud-alibaba.version>2021.0.1.0</spring-…

librdkafka的rdk:broker-1线程cpu百分百问题分析

问题调用栈&#xff1a; (gdb) bt #0 0x000000000068307c in rd_kafka_q_pop_serve (rkq0x1ff31a0, timeout_ms<optimized out>, versionversionentry0, cb_typecb_typeentryRD_KAFKA_Q_CB_RETURN, callbackcallbackentry0x0, opaqueopaqueentry0x0) at rdkafka_queue.…

nginx推流环境搭建

目录 1、创建安装文件夹2、安装编译 nginx 所需要的库3、下载 nginx-1.21.6.tar.gz下载 nginx-rtmp-module4、解压解压nginx文件解压rtmp模块5、编译6、安装7、启动nginx,检测nginx是否能成功运行8、配置nginx使用RTMP9、重启nginx服务器1、创建安装文件夹 cd ~ mkdir nginx …

React Hooks

React Hooks basic hooks useStateuseEffectuseContext useState useState接收一个参数&#xff0c;返回的是一个数组&#xff0c;参数表示初始值&#xff0c;数组的第1项就是定义的变量&#xff0c;第2项就是改变变量的方法。 参数可以是基本数据类型&#xff0c;如string…

Comparator.comparing()实现中文排序及空指针处理

一、 Comparator.comparing()的用法请详见以下上一篇文章的汇总介绍。 Comparator用法_乞力马扎罗の黎明的博客-CSDN博客 二、应用示例&#xff1a; 1、中文排序、空值处理 Collator instance Collator.getInstance(Locale.CHINA); checkItemVoList.stream().sorted(Compar…

每日科技分享-POE新增文件和链接发送功能

POE推出新功能 注意POE需要魔法上午才能进去。 实测 实测可以发送论文给chatgpt&#xff0c;然后和AI进行共享的对话。 POE网站链接&#xff1a; 也可以发送链接&#xff0c;实测了一下&#xff0c;似乎有时候并不准确&#xff0c;我发送了关于分层强化的文章&#xff0c;但是…

<数据结构>NO11.归并排序|递归|非递归|优化

文章目录 归并排序递归写法非递归写法修正方案1.归并一段拷贝一段修正方案2.修正区间 算法优化算法分析 归并排序的应用外排序和内排序 归并排序 递归写法 思路: 如果给出两个有序数组&#xff0c;我们很容易可以将它们合并为一个有序数组。因此当给出一个无序数组时&#xf…

http和https的区别(面试题)

概念 Http&#xff1a;HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写。HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同&#xff0c; 用于客户端和服务器之间的通信。从WWW服务器传输超文本到本地浏览器的传输协议&#xff0c;它可以…

一个月学通Python(二十):Python制作报表(Web开发)

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 文章目录 专栏介绍制作报表导出Excel报表导出PDF报表生成前端…

python 写个excle表格数据导入mysql数据的服务

下面是一个使用Python将Excel表格数据导入MySQL数据库的示例代码。需要使用pandas和MySQL Connector库。 pythonimport pandas as pd import mysql.connector# 读取Excel文件 df pd.read_excel(data.xlsx)# 连接MySQL数据库 cnx mysql.connector.connect(useryour_username, …

华为无线ac+ap旁挂二层组网常用配置案例

AC控制器理解配置步骤&#xff1a; capwap source interface Vlanif 100 //源IP回包地址 wlan ssid-profile name test //新建个模版名称为test ssid test //wifi名称 wlan security-profile name test //建立安全模版也叫test security wpa-wpa2 psk pass-phrase admin123 a…