软件可靠性的定义

1983年美国IEEE计算机学会对软件可靠性做出了明确定义。软件可靠性的定义包括两个方面的含义:

  1. 在规定条件下,在规定时间内,软件不引起系统失效的概率。
  2. 在规定的时间周期内,所述条件下程序执行要求功能的能力。

软件可靠性三要素

根据软件可靠性的定义,软件可靠性主要包含了以下三个要素:

  1. 规定的条件
  • 运行环境:包括硬件,操作系统,输入数据的形式
  • 操作剖面:输入空间及其概率分布
  1. 规定的时间

有日历时间、时钟时间和执行时间等度量方式

  1. 规定的功能

对于同一个软件来说,要完成的功能不同,操作剖面就可能不同,调用的子模块也不同,可靠性也就不同

常见软件可靠性指标

可靠性指标是后续软件可靠性建模的先导知识,掌握定义和符号即可。

  1. 可靠度 R(t)
    设随机变量 T 表示软件从运行开始到系统失效所经历的时间,则在时刻 t 软件可靠度 R(t) 定义为:
R(t)=P\{T>t\}
  1. 不可靠度(累积失效概率、失效分布函数) F(t)
F(t)=P\{T<=t\}=1-R(t)
  1. 失效密度函数 f(t)
    即失效分布函数的导数
f(t)=\frac{dF(t)}{dt}
  1. 软件失效率 z(t)
    软件在 t 时刻尚未发生失效的条件下,在 t 时刻之后的 Δt 时间内发生失效的概率。是一种条件概率。
\begin{aligned} z(t)&=\lim_{Δt\rightarrow0}\frac{P(t+Δt\geq T|T>t)}{Δt}\\ &=\lim_{Δt\rightarrow0}\frac{P(t+Δt\geq T>t)}{Δt\cdot P(T>t)}\\ &=\lim_{Δt\rightarrow0}\frac{F(t+Δt)-F(t)}{Δt\cdot R(t)}\\ &=\frac{f(t)}{R(t)} \end{aligned}
  1. 失效强度 λ(t)
    失效强度指的是软件在时刻 t 瞬时发生失效的概率。
    设 N(t) 为软件从开始运行到时刻 t 的累计失效次数,显然 N 是一个随机变量。取 m(t) = E(N(t)),即取 N 的期望,失效强度 λ(t) 定义为:
λ(t)=\frac{dm(t)}{dt}
  1. MTTF (平均无故障时间 Mean Time To Falure)
    可以看到其实 MTTF 的定义式就是随机变量 T 的期望的定义式。
MTTF=\int_{0}^{\infty } tf(t)dt=\int_{0}^{\infty }R(t)dt

失效数据集

  1. 不完全数据:在软件测试过程中,记录下的错误数据是 错误的信息 和 一个接一个的时间段内发生失效的总数。失效出现的具体时间点并不明了。
  2. 完全数据:在软件测试过程中,错误的信息和发生的时间点皆被记录。由于失效出现的时间点都是已知的,它们之间的时间间隔也都是已知的,故这种数据也被称为失效时间间隔数据。如 Musa 的执行时间数据属于完全数据。

Musa 完全数据集:

序号失效时间(s)
15
225
338
454
......