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

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) 时间
  • 按失效数类
    • 无限时间内发生的失效数
    • 有限时间内发生的失效数
  • 失效数分布:相对于时间系统失效数的统计分布形式
    • 泊松分布型
    • 二项分布型
  • 有限类:对有限失效数的类别适用,用时间表示的失效强度的函数形式。
  • 无限类:对无限失效数的类别适用,用经验期望失效数表示的失效强度的函数形式。

在这里插入图片描述

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值