一、软件可靠性定义
软件可靠性使软件产品在规定的条件下和规定的时间区间内完成规定的功能的能力。是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统功能特性的基本能力。
规定的条件:直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件(软件运行时的外部输入条件)
规定的时间区间:软件的实际运行时间区间
规定功能:为提供给定能力,软件产品所必须具备的功能。
软件可靠性和硬件可靠性的区别:
1. 复杂性:软件内部逻辑高度复杂,硬件则相对简单。设计错误是导致软件失效的主要
原因。
2. 物理退化:硬件失效主要是因为物理退化,软件不存在物理退化
3. 唯一性:软件是唯一的,软件复制不改变本身,而任何两个硬件是不可能绝对相同。
4. 版本更新周期:软件更新较快,硬件更新较慢
二、关键可靠性的定量描述
规定时间的三种概念:
1. 自然时间:日历时间;
2. 运行时间:软件从启动开始,到运行结束的时间段
3. 执行时间:软件运行过程中,CPU执行程序指令所用时间总和(最准确,效果最好)
失效概率:
失效概率可以看作是一个随机函数F(t),有如下特征:
1. F(0) = 0;程序在运行初始时刻的失效概率为0
2. F(t)随时间的增加单调递增
3. F(+∞) = 1;失效概率随时间增长趋向于1
可靠度:
可靠性最为直接的表示方式,可靠度就是软件系统在规定的条件下、规定时间内不发生
失效的概率。可靠度R(t) = 1 - F(t)
串联系统可靠度:R = R1 x R2 x .... x Rn
串联系统是效率:F = F1 + F2 + ... + F3
并联系统可靠度:1 - (1-R1) x (1-R2) x .... x (1-Rn)
失效强度:
单位时间内软件系统出现失效的概率。F(t)的斜率.
平均失效前时间(MTTF):
平均失效前时间也被称为平均无故障时间:MTTF = 1/F(t)
平均故障间隔时间(MTTR):
失效或维护中所需要的平均时间
平均故障间隔时间(MTBF):
系统出现失效到下一次出现失效的平均时间。MTBF = MTTF + MTTR
系统可靠性=MTTF/(MTTF+MTTR)
影响软件可靠性的因素 :
1. 运行环境
2. 软件规模
3. 软件内部结构
4. 软件的开发方法和开发环境
5. 软件的可靠性投入
三、软件可靠度的建模方法和模型分类
可靠性模型的组成:
1. 模型假设:模型是实际情况的简化或规范化
2. 性能度量:软件可靠性模型的输出量
3. 参数估计方法:某些可靠性独立无法直接获得,需要间接确定可靠性度量的值
4. 数据要求:可靠性模型要求一定的输入数据,即可靠性数据
一个好的可靠性模型应该包含以下特性:
1. 基于可靠的假设; 2. 简单; 3. 计算一些有用的量;4. 给出未来失效行为的好的映
射;5. 可广泛应用
可靠性模型的三个假设:
1. 代表性假设:软件测试用例的选取代表软件实际的运行剖面
2. 独立性假设:软件的失效时独立发生的
3. 相同性假设:所有软件失效的后果相同
可靠性模型分类:
1. 种子法模型
种子法模型利用捕获一再捕获抽样技术估计程序中的错误数,在程序中预先有意播
种一些设定的错误种子,根据测试出的原始错误数和发现的诱导错误的比例来估算残余
错误数。优点:简单易行;缺点:诱导错误的种子与实际的原始错误之间的类比性估量
困难。
2. 失效率类模型:
用来研究程序的失效率
3. 曲线拟合类模型:
用回归分析的方法研究软件复杂性、缺陷型、失效率等,包括参数法和非参数法
4. 可靠性增长模型:
用增长函数来表述软件的改进过程。
5. 程序结构分析模型:
根据程序、子程序及其相互调用关系形成一个可靠性分析网络
6. 输入域分类模型:
从软件输入域中的某些样本的点运行程序,根据这些样本点在实际环境中的使用的
概率测试运行时的成功/失效率,推断软件的使用可靠性。
7. 执行路径分析方法模型:
先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件
的使用可靠性
8. 非齐次柏松过程模型
以软件测试过程中单位时间的失效从设计为独立柏松随机变量,来预测今后软件在
某使用时间点的累积失效数
9. 马尔可夫过程模型
完成改错的线性死亡模型
不完全改错的线性死亡模型
完全改错的非静态线性死亡模型
10.贝叶斯分析模型
利用失效率的实验前分布和当前的测试失效信息,来评估软件的可靠性
四、软件可靠性设计
五、软件可靠性评价