文章目录
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 执行路径分析方法模型
- 概述:
- 计算程序各逻辑路径的执行概率和程序中错误路径的执行概率
- 综合出该软件的使用可靠性
具体模型:Shooman分解模型属于此类。
3.8.非齐次泊松过程模型(NHPP)
扩展:
泊松过程:一种累计随机事件发生次数的最基本的独立增量过程
如下文中,随着时间增长,软件失效次数的增长
- 概述:
- 输入变量:单位时间的失效
- 作用:预测软件某使用时间点的累计失效数
原文:以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数
具体模型
- Musa的指数模型。
- Goel和Okumoto的NHPP模型,
- S_型可靠性增长模型。
- 超指数增长模型。
- Pham改进的NHPP模型。
3.9 马尔可夫过程模型
- 完全改错的线性死亡模型
- 不完全改错的线性死亡模型
- 完全改错的非静态线性死亡模型
3.10 贝叶斯模型
- 概念:利用 失效率的试验前分布 和 当前的测试失效信息,来评估软件的可靠性
- 要求:
- 软件可靠性工程师对软件的开发过程有充分地了解
- 软件的继承性好
具体模型
- 连续时间的离散型马尔可夫链。
- Shock模型。
3.11 其他分类方式
依据模型的不同属性分类:
- 按时间域
- 自然或日历时间
- 执行 (CPU) 时间
- 按失效数类
- 无限时间内发生的失效数
- 有限时间内发生的失效数
- 失效数分布:相对于时间系统失效数的统计分布形式
- 泊松分布型
- 二项分布型
- 有限类:对有限失效数的类别适用,用时间表示的失效强度的函数形式。
- 无限类:对无限失效数的类别适用,用经验期望失效数表示的失效强度的函数形式。