《系统架构设计师教程(第2版)》第9章-软件可靠性基础知识-02-软件可靠性建模

news2025/6/18 22:06:50

文章目录

  • 1. 概述
    • 1.1 软件可靠性模型
    • 1.2 影响软件可靠性的因素
  • 2. 软件可靠性的建模方法
    • 2.1 模型组成
    • 2.2 模型假设
    • 2.3 参数估计
      • 1)确定参数的方法
      • 2)故障预测
    • 可靠性模型特性
  • 3. 软件的可靠性模型分类
    • 3.1 种子法模型
    • 3.2 失效率类模型
    • 3.3.曲线拟合类模型
    • 3.4.可靠性增长模型
    • 3.5.程序结构分析模型
    • 3.6.输入域分类模型
    • 3.7 执行路径分析方法模型
    • 3.8.非齐次泊松过程模型(NHPP)
    • 3.9 马尔可夫过程模型
    • 3.10 贝叶斯模型
    • 3.11 其他分类方式

1. 概述

1.1 软件可靠性模型

  • 概念
    • Software Reliability Mode
    • 为预计或估算软件的可靠性所建立的可靠性框图和数学模型
  • 目的:将复杂系统的可靠性逐级分解为简单系统的可靠性

1.2 影响软件可靠性的因素

  • 运行剖面(环境)

  • 软件规模

  • 软件内部结构

    内部结构越复杂的软件,所包含的软件缺陷数就可能越多。

  • 软件的开发方法和开发环境

    如,与非结构方法相比,结构化方法可以明显减少软件的缺陷数

  • 软件的可靠性投入

2. 软件可靠性的建模方法

2.1 模型组成

  • 模型假设

    2.2 中将详细说明

  • 性能度量

  • 参数估计方法

    • 估计对象:无法直接获得的可靠性度量值
  • 数据要求

    不同类型的软件可靠性模型,可能要求不同类型的软件可靠性数据

    • 软件可靠性数据:软件可靠性模型的输入数据

2.2 模型假设

  • 代表性假设
    • 认为软件测试用例的选取代表软件实际的运行剖面
    • 即,可以用测试产生的软件可靠性数据预测运行阶段的软件可靠性行为
  • 独立性假设
    • 认为软件失效是独立发生于不同时刻的
    • 且,一个软件失效的发生不影响另一个软件失效的发生
  • 相同性假设
    • 认为所有软件失效的后果(等级)相同
    • 即建模过程不区分软件的失效严重等级

2.3 参数估计

1)确定参数的方法

  • 估计:
    通过收集到的失效数据进行统计分析,利用一定的推导过程归纳出模型的参数
  • 预测:
    使用软件产品自身的属性和开发过程来确定模型的参数,这种方法可以在开始执行程序前完成

2)故障预测

  • 应保证模型参数的值不发生变化

如果在进行预测时发现引入了新的错误,或修复行为使新的故障不断发生,就应停止预测,并等足够多的故障出现后,再重新进行模型参数的估计。否则,这样的变化会因为增加问题的复杂程度而使模型的实用性降低。

  • 实际中,代码和运行剖面总是变化的
    • 采取分段处理方式

可靠性模型特性

一个好的软件可靠性模型应该具有如下重要特性:

  • 基于可靠的假设
  • 简单
  • 计算一些有用的量
  • 给出未来失效行为的好的映射
  • 可广泛应用

3. 软件的可靠性模型分类

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

3.1 种子法模型

  • 概述:
    • 利用捕获再捕获抽样技术估计程序中的错误数

    在程序中预先有意“播种”一些设定的错误“种子”,然后根据测试出的原始错误数和发现的诱导错误(即被测出的我们刚才故意加入的错误)的比例,来估计程序中残留的错误数

  • 优点:简便易行
  • 缺点:诱导错误的“种子”与实际的原始错误之间的类比性估量困难

3.2 失效率类模型

没有要记忆的内容

3.3.曲线拟合类模型

  • 使用方法:回归分析法
    • 参数方法
    • 非参数方法
  • 研究的质量属性: 软件复杂性、程序缺陷数、失效率、失效间隔时间等

3.4.可靠性增长模型

  • 概述:
    • 用来预测软件在检错过程中的可靠性改进
    • 用增长函数来描述软件的改进过程

具体模型有:(看一下,不考)

  • Duane模型。
  • Weibull模型。
  • Wagoner的Weibull改进模型。
  • Yamada和Osaki的逻辑增长曲线。
  • Gompertz的增长曲线。

3.5.程序结构分析模型

  • 概念:
    • 根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络
      • 网络中的每个结点代表一个子程序或一个模块
      • 网络中的每一有向弧代表模块间的程序执行顺序
  • 分析过程:
    • 假定各结点的可靠性是相互独立的
    • 通过对每个结点可靠性、结点间转换的可靠性、网络在结点间的转换概率,得出该整体可靠性

具体模型

  • Littewood马尔可夫结构模型。
  • Cheung的面向用户的马尔可夫模型。

3.6.输入域分类模型

  • 概述:
    • 选取软件输入域中的某些样本“点”运行程序
    • 根据样本点在测试运行时的成功/失效率,综合样本点在“实际”环境中的使用概率,推断软件的使用可靠性

    教材原话:根据样本点在“实际”使用环境中的使用概率的测试运行时的成功/失效率,推断软件的使用可靠性

  • 难点
    • 输入域的概率分布的确定
    • 对软件运行剖面的正确描述

具体模型

  • Nelson模型。
  • Bastani的基于输入域的随机过程模型。

3.7 执行路径分析方法模型

  • 概述:
    1. 计算程序各逻辑路径的执行概率和程序中错误路径的执行概率
    2. 综合出该软件的使用可靠性

具体模型:Shooman分解模型属于此类。

3.8.非齐次泊松过程模型(NHPP)

扩展:
泊松过程:一种累计随机事件发生次数的最基本的独立增量过程
如下文中,随着时间增长,软件失效次数的增长

  • 概述:
    • 输入变量:单位时间的失效
    • 作用:预测软件某使用时间点的累计失效数

    原文:以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数

具体模型

  • Musa的指数模型。
  • Goel和Okumoto的NHPP模型,
  • S_型可靠性增长模型。
  • 超指数增长模型。
  • Pham改进的NHPP模型。

3.9 马尔可夫过程模型

  • 完全改错的线性死亡模型
  • 不完全改错的线性死亡模型
  • 完全改错的非静态线性死亡模型

3.10 贝叶斯模型

  • 概念:利用 失效率的试验前分布 和 当前的测试失效信息,来评估软件的可靠性
  • 要求:
    • 软件可靠性工程师对软件的开发过程有充分地了解
    • 软件的继承性好

具体模型

  • 连续时间的离散型马尔可夫链。
  • Shock模型。

3.11 其他分类方式

依据模型的不同属性分类:

  • 按时间域
    • 自然或日历时间
    • 执行 (CPU) 时间
  • 按失效数类
    • 无限时间内发生的失效数
    • 有限时间内发生的失效数
  • 失效数分布:相对于时间系统失效数的统计分布形式
    • 泊松分布型
    • 二项分布型
  • 有限类:对有限失效数的类别适用,用时间表示的失效强度的函数形式。
  • 无限类:对无限失效数的类别适用,用经验期望失效数表示的失效强度的函数形式。

在这里插入图片描述

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

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

相关文章

吴恩达2022机器学习专项课程(一) 第二周课程实验:特征缩放和学习率(多元)(Lab_03)

备注:笔者只对个人认为的重点代码做笔记,其它详细内容请参考吴恩达老师实验里的笔记。 1.多元特征的训练集 调用load_house_data()函数,将训练集数据保存到数组中。 X,y分别存储所有训练样本的前四列,所有训练样本的…

Harmony鸿蒙南向驱动开发-PWM

PWM(Pulse Width Modulation)即脉冲宽度调制,是一种对模拟信号电平进行数字编码并将其转换为脉冲的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。通常情况下,在使用马达控制、背光亮度调节时会用到PWM模…

Java数据结构二叉树

概念 一棵二叉树是结点的一个有限集合,该集合: 1. 或者为空 2. 或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。 从上图可以看出: 1. 二叉树不存在度大于2的结点 2. 二叉树的子树有左右之分,次序不能颠倒&#x…

音乐界Sora隆重发布!效果炸裂,超越Suno!根据指令生成定制音乐,原创续歌样样行!前谷歌Deepmind人员创建

火爆!预热了一周的 Udio 终于发布了,可谓是吊足了网友们的胃口,从展示的效果来看,确实没让网友们白等! 分享几个网站 GPT-3.5研究测试: https://hujiaoai.cn GPT-4研究测试: https://higpt4.…

VirusTaxo:病毒物种注释

https://github.com/omics-lab/VirusTaxo 安装 git clone https://github.com/omics-lab/VirusTaxo mamba create -n VirusTaxo python3.10 mamba activate VirusTaxo cd VirusTaxo python3 -m venv environment source ./environment/bin/activate pip install -r require…

【电控笔记4】拉普拉斯-传递函数-pid

数据标幺化 拉普拉斯变换 欧拉公式 常见s变换 s变换性质 pid分析 p控制,存在稳态误差 可以求出p的取值范围p>-1,否则发散 pi消除稳态误差 把kp换成Gs 只用pi控制,不加微分的原因: 微分之后,噪声增大高频噪声频率…

计算机组成原理(存储器)

1、“821.2016T1(1)”,表示821真题,2016年的题,T1是 选择题/填空题/大题 的第一题,其他类似标记也是相通 2、个人小白总结自用,不一定适用于其他人,请自行甄别 3、有任何疑问,欢迎私信探讨&…

Python测试框架之pytest详解

前言 Python测试框架之前一直用的是unittestHTMLTestRunner,听到有人说pytest很好用,所以这段时间就看了看pytest文档,在这里做个记录。 官方文档介绍: Pytest is a framework that makes building simple and scalable tests e…

常见开关电源的特殊波形有哪些?测试方法是什么?

开关电源特殊波形 1. 毛刺输入测试波形 毛刺是比较常见的波形,一般是由于元器件损坏或老化、电源噪声、信号干扰等因素造成的。这种波形的特点是电网尖锋有过冲并会跌落到0v,过冲和跌落脉宽很窄,一般不会大于100ms,过冲幅度一般不…

FFmpeg: 简易ijkplayer播放器实现--04消息队列设计

文章目录 播放器状态转换图播放器状态对应的消息: 消息对象消息队列消息队列api插入消息获取消息初始化消息插入消息加锁初始化消息设置消息参数消息队列初始化清空消息销毁消息启动消息队列终止消息队列删除消息 消息队列,用于发送,设置播放…

Spring 如何组织项目-ApiHug准备-工具篇-007

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace ApiHug …

贪心算法|452.用最少数量的箭引爆气球

力扣题目链接 class Solution { private:static bool cmp(const vector<int>& a, const vector<int>& b) {return a[0] < b[0];} public:int findMinArrowShots(vector<vector<int>>& points) {if (points.size() 0) return 0;sort(p…

【JavaEE】_Spring MVC项目获取Session

目录 1. 使用servlet原生方法获取Session 1.1 错误获取方法 1.2 正确获取方法 2. 使用Spring注解获取Session 3. 使用Spring内置对象获取Session 1. 使用servlet原生方法获取Session .java文件内容如下&#xff1a; setSession方法用于设置Session对象的内容&#xff1b;…

文件输入/输出流(I/O)

文章目录 前言一、文件输入\输出流是什么&#xff1f;二、使用方法 1.FileInputStream与FileOutputStream类2.FileReader与FileWriter类总结 前言 对于文章I/O(输入/输出流的概述)&#xff0c;有了下文。这篇文章将具体详细展述如何向磁盘文件中输入数据&#xff0c;或者读取磁…

面试八股——数据库——事务

概述 事务的特性&#xff08;ACID&#xff09; 原子性&#xff1a;事务是不可分割的操作单元&#xff0c;要么全部成功&#xff0c;要么全部失败。 一致性&#xff1a;事务结束时&#xff0c;所有数据都必须保证一致状态。 隔离性&#xff1a;事务在独立环境运行&#xff0c;…

Burp Suite Professional 2024.3.1 for Windows x64 - 领先的 Web 渗透测试软件

Burp Suite Professional 2024.3.1 for Windows x64 - 领先的 Web 渗透测试软件 世界排名第一的 Web 渗透测试工具包 请访问原文链接&#xff1a;Burp Suite Professional 2024.3.1 for Windows x64 - 领先的 Web 渗透测试软件&#xff0c;查看最新版。原创作品&#xff0c;转…

OpenGL Assimp 加载3D模型介绍

OpenGL Assimp 加载3D模型介绍 Assimp对应模型结构体解说 所有的模型、场景数据都包含在scene对象中&#xff0c;如所有的材质和Mesh。同样&#xff0c;场景的根节点引用也包含在这个scene对象中 场景的Root node&#xff08;根节点&#xff09;可能也会包含很多子节点和一个…

微服务面试题一

1.SOA、分布式、微服务之间有什么关系和区别&#xff1f; 分布式架构是指将单体架构中的各个部分拆分&#xff0c;然后部署不同的机器或进程中去&#xff0c;SOA和微服务基 本上都是分布式架构的SOA是⼀种⾯向服务的架构&#xff0c;系统的所有服务都注册在总线上&#xff0c;…

“植物大战僵尸:机器学习引领游戏AI新革命“

上期回顾&#xff1a; 今天给大家推荐一个Gtihub开源项目&#xff1a;PythonPlantsVsZombies&#xff0c;翻译成中就是植物大战僵尸。 《植物大战僵尸》是一款极富策略性的小游戏。可怕的僵尸即将入侵&#xff0c;每种僵尸都有不同的特点&#xff0c;例如铁桶僵尸拥有极强的抗…

开源推荐榜【Casbin.NET 一个为.NET(C#)项目设计的高效且强大的访问控制库】

Casbin 是一个强大高效的开源访问控制库&#xff0c;支持各种 访问控制模型 , 如 ACL, RBAC, ABAC 等。 我们希望可以让指定的主体 subject&#xff0c;可以访问指定的资源 object&#xff0c;访问可以是读和写。这就是 Casbin 使用最广泛的方式。也称为 { subject, object, ac…