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

文章目录

    • 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.mzph.cn/bicheng/20131.shtml

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

相关文章

实物资产的市场主线将逐步回归

民生证券认为,投资者逐渐意识到长期趋势并没有发生变化,这或许正是本周最大的变化。在预期博弈重回冷静期后,去金融化背景下实物资源占优的市场主线也将逐步回归。 1 高低切换后的冷静期 从4月下旬至上周,A股市场呈现出由高位资产…

用windows server backup备份文件夹到网络共享文件夹并恢复

一、备份 开始 运行windows server backup,在右边的窗格中点击“备份计划” 选择备份配置 因为我们要备份的是一个文件夹,所以,选“自定义”,卷即为磁盘分区。 选择要备份的项 点击添加项目,可依次添加多个备份项目。 勾选需要…

汽车MCU虚拟化--对中断虚拟化的思考(2)

目录 1.引入 2.TC4xx如何实现中断虚拟化 3.小结 1.引入 其实不管内核怎么变,针对中断虚拟化无非就是上面两种,要么透传给VM,要么由Hypervisor统一分发。汽车MCU虚拟化--对中断虚拟化的思考(1)-CSDN博客 那么,作为车规MCU龙头…

MySQL 视图(2)

上一篇:MySQL视图(1) 基于其他视图 案例对 WITH [CASCADED | LOCAL] CHECK OPTION 进行释义 创建视图时,可以基于表 / 多个表,也可以使用 其他视图表 / 其他视图 其他视图 的方式进行组合。 总结 更新视图&#x…

【HTML】tabindex

当给 div 标签以 button 角色&#xff1a; <div role"button">这时要指定其 tabindex&#xff0c;因此正确的写法是&#xff1a; <div role"button" tabindex"0">索引值不应当大于0&#xff0c;见a11y-positive-tabindex

Open3D(C++) Ransac拟合多项式曲线

目录 一、算法原理一、代码实现三、结果展示本文由CSDN点云侠原创,Open3D(C++) Ransac拟合多项式曲线,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 RANSAC(Random Sample Consensus)是一种用于拟合模型的迭…

设计模式深度解析:分布式与中心化

设计模式在软件开发中扮演着至关重要的角色,它们提供了一套经过验证的解决方案,用于解决常见的设计问题。在分布式和中心化这两种不同的系统架构中,设计模式的应用也有所不同。以下是对这两种架构下设计模式的深度解析: 分布式系统设计模式 在分布式系统中,由于系统被拆…

004 仿muduo实现高性能服务器组件_Buffer模块与Socket模块的实现

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;仿muduo &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多知识 文章目录 前言Buffer模块Socket模块 小结 前言 这章将会向你介绍仿muduo高性能服务器组件的buffer模块与socket模块的实…

【Leetcode 706 】设计哈希映射——数组嵌套链表(限制哈希Key)

题目 不使用任何内建的哈希表库设计一个哈希映射&#xff08;HashMap&#xff09;。 实现 MyHashMap 类&#xff1a; MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中&#xff0c;则更新其…

MATLAB的plot3使用技巧|更改视角|例程分享链接

plot3命令 MATLAB的plot3函数是用来绘制3D图形的函数。它可以将三维数据可视化为线段、点、曲线等形式。plot3函数可以用于绘制三维空间中的曲线、曲面、散点图等。 plot3函数的基本用法是&#xff1a; plot3(X,Y,Z)&#xff1a;绘制三维线段&#xff0c;其中X、Y、Z分别是包…

两个双指针 的 “他“和“ 她“会相遇么? —— “双指针“算法 (Java版)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

MySQL入门学习-查询进阶.UNION

UNION操作符用于合并两个或多个SELECT语句的结果集。它可以将多个查询结果合并为一个结果集&#xff0c;这在需要从多个表中获取数据并将它们组合在一起时非常有用。下面是一个使用UNION的示例代码&#xff1a; SELECT column1, column2,...FROM table1UNIONSELECT column1, c…

springboot kafka 提高拉取数量

文章目录 背景问题复现解决问题原理分析fetch.min.bytesfetch.max.wait.ms源码分析ReplicaManager#fetchMessages 背景 开发过程中&#xff0c;使用kafka批量消费&#xff0c;发现拉取数量一直为1&#xff0c;如何提高批量拉取数量&#xff0c;记录下踩坑记录。 问题复现 ka…

攻防对抗少丢分,爱加密帮您筑起第二防线

应用程序通常处理和存储大量的敏感数据&#xff0c;如用户个人信息、财务信息、商业数据、国家数据等&#xff0c;用户量越大的应用程序&#xff0c;其需要存储和保护的用户数据越多。因此应用层长期是攻击方的核心目标&#xff0c;传统应用安全依靠防火墙(FireWall)、入侵检测…

1.7 协议层次和服务模型

协议层次 网络是一个复杂的系统!  网络功能繁杂&#xff1a;数字信号的物理信 号承载、点到点、路由、rdt、进程区分、应用等 现实来看&#xff0c;网络的许多构成元素和设备:  主机  路由器  各种媒体的链路  应用  协议  硬件, 软件 Q:如何组织和实现这个…

Linux上实现ssh免密通讯

Linux上实现ssh免密通讯 1.SSH互信原理2.SSH所需的RPM包3.两台机器实现互信4.常见问题及处理 1.SSH互信原理 SSH&#xff08;Secure Shell&#xff09;是一种安全的传输协议&#xff0c;它能让Linux系统中的服务器和客户端之间进行安全可靠的通讯。 SSH使用加密的传输方式&…

iOS组件化 方案 实现

iOS组件化 组件化的原因现在流行的组件化方案方案一、url-block &#xff08;基于 URL Router&#xff09;方案二、protocol调用方式解读 方案三、target-action调用方式解读 gitHub代码链接参考 组件化的原因 模块间解耦模块重用提高团队协作开发效率单元测试 当项目App处于…

网络原理-四

一、续 当窗口大小为0,意味着缓冲区满了,此时发送方,就因该暂停发送,发送方会周期性的除法 " 窗口探测包 " ,并不携带载荷,这样的包对于业务不产生影响,只是为了触发ACK,一旦查询出来的结果是非0,缓冲区右有空间了,发送方就可以继续发送. 二、拥塞控制 要限制发送方…

一步一步写线程之十三队列间的消息通知

一、线程和分布式的通信 随着技术的不断发展&#xff0c;多线程和分布式通信愈发的普及。那么在这种场景下的如何进行数据的通信&#xff0c;便成为了一个非常典型的问题。无论是多线程还是分布式&#xff0c;其实其抽象出来的通信机制都是类似的。或者说换句话&#xff0c;多…

java检测字符串是否包含数字和字母

在Java中&#xff0c;要检测一个字符串是否同时包含数字和字母&#xff0c;我们可以使用正则表达式&#xff08;regex&#xff09;或者通过遍历字符串并检查每个字符来实现。以下是两种方法的详细代码示例&#xff1a; 1.方法一&#xff1a;使用正则表达式 import java.util.…