Jelinski 和 Moranda 模型

2025年3月17日 | 阅读 7 分钟

Jelinski-Moranda (JM) 模型,也称为马尔可夫过程模型,对许多后续模型产生了深远影响,而这些模型实际上是该简单模型的修改。

JM 模型特性

以下是 JM 模型的一些特性:

  1. 它是一个二项式模型。
  2. 它无疑是最早也是最知名的黑盒模型之一。
  3. J-M 模型始终给出过于乐观的可靠性预测。
  4. JM 模型遵循完美的调试步骤,即检测到的故障会被确定性地移除,这是一个简单的模型。
  5. J?M 模型在第 i 次故障间隔期间的恒定软件故障率由下式给出:

        λ(ti) = ϕ [N-(i-1)],     i=1, 2... N .........公式 1

其中

ϕ=比例常数,表示每个故障提供的故障率。

N=软件的初始错误数量。

ti=第 (i-1) 次和第 i 次故障之间的时间。

属于二项式类型的该模型的均值和故障强度方法可以通过将固有故障数分别乘以累积故障和概率密度函数 (pdf) 来获得。

            μ(ti )=N(1-e-ϕti)..............公式 2

            €(ti)=Nϕe-ϕti.............公式 3

这些特性加上 J-M 模型的另外四种特性总结在表中。

可靠性度量名称可靠性度量公式
概率密度函数f(ti)= ϕ[N-(i-1]e-ϕ[N-(i-1)]ti
软件可靠性函数R(ti)= e-ϕ[N-(i-1)]ti
故障率函数λ(ti)= ϕ[N-(i-1)]
平均故障时间函数Jelinski and Moranda Model
均值函数µ(ti )=N(1-e-ϕti)
故障强度函数€(ti )=Nϕe-ϕti
中位数m={ϕ[N-(i-1)]} -1 In2
累积分布函数f(ti)=1-e-ϕ[N-(i-1)]ti

假设

J-M 模型中做出的假设包括:

  1. 初始软件错误数量未知,但固定且恒定。
  2. 软件中的每个错误都是独立的,并且在测试期间引起故障的可能性均等。
  3. 故障发生之间的时间间隔是独立的、指数分布的随机变量。
  4. 软件故障率在两次故障发生之间的范围内保持恒定。
  5. 故障率对应于软件中剩余的故障数量。
  6. 检测到的错误会立即被移除,并且在移除检测到的缺陷时不会引入新错误。
  7. 每当出现故障时,相应的故障都会被确定性地移除。

JM 模型变体

JM 模型是第一个重要的软件可靠性模型。许多研究人员对此模型表现出兴趣并对其进行了修改,使用了不同的参数,如故障率、完美调试、不完美调试、故障数量等。现在,我们将讨论该模型的一些现有变体。

Jelinski and Moranda Model

1. Lipow 对 Jelinski-Moranda 几何模型的修改版本

它允许在某个时间间隔内多次移除错误。程序故障率变为:

            λ(ti)=DKni-1

其中 ni-1 是在第 (i-1) 个时间间隔之前找到的累积错误数量。

2. Sukert 对 Schick-Wolverton 模型的修改

Sukert 修改了 **S-W 模型**,允许在每个时间间隔内发生多次故障。程序故障率变为:

Jelinski and Moranda Model

其中 ni-1 是在第 (i-1) 次故障间隔期间的累积故障数。

3. Schick-Wolverton 模型

Schick 和 Wolverton 的 **(S-W) 模型** 与 **J-M 模型** 相似,不同之处在于它进一步考虑了在第 i 次时间间隔的故障率会随着自上次调试以来的时间而增加。

假设

  • 错误是偶然发生的。
  • 在定义的时间间隔内,错误检测率是恒定的。
  • 错误是相互独立的。
  • 不会产生新错误。
  • 错误在被检测到后会被纠正。

在该模型中,程序故障率方法为:

            λ (ti)= ϕ[N-(i-1)] ti

其中 ϕ 是比例常数,N 是程序中初始错误的数量,ti 是自第 **(i-1)** 次故障以来的测试时间。

4. Goel-Imperfect Debugging 模型

Goel 和 Okumoto 扩展了 J-M 模型,假设在出现故障时,错误以概率 p 被移除。第 i 次故障间隔的程序故障率为:

            λ (ti)= ϕ[N-p(i-1)]
            R(ti)=e-ϕ[N-p(i-1)]-ti)

5. Jelinski-Moranda 几何模型

该模型认为程序故障率函数最初是一个常数 D,并在故障时间呈几何级数衰减。第 i 次故障间隔的程序故障率和两次故障之间的时间可靠性方法是:

            λ (ti)=DKi-1
            R(ti)=e-DKi-1ti)

其中 k 是几何函数的参数,0<k<1

6. Little-Verrall 贝叶斯模型

该模型认为故障之间的时间是独立的指数分布随机变量,其参数 € i=1, 2 ....n,而 € 本身具有参数 **Ψ(i)** 和 **α**,它们反映了程序员的质量和功能的难度,并具有先验伽玛分布。

Jelinski and Moranda Model

其中 B 代表故障减少因子。

7. Shanthikumar 通用马尔可夫模型

该模型认为故障强度函数随着移除的故障数量的增加而变化,如下所示:

            λ SG(n, t) = Ψ(t) (N0-n)

其中 Ψ (t) 是比例常数。

8. 软件开发过程中使用的错误检测模型

这个新模型的主要特点是它能够适应不断增长的程序(大小可变),因此可以通过分析一个基本片段来预测程序的质量。

假设

该模型除了 JM 模型假设外,还包含以下假设:

  1. 程序已测试的初始部分能够描述整个程序的初始错误数量和性质。
  2. 错误的检测能力不受初始测试方法通过添加新代码而产生的“稀释”效应的影响。
  3. 任何时候存在的代码行数都是已知的。
  4. 增长函数和错误检测过程是独立的。

9. Langberg Singpurwalla 模型

该模型通过采用贝叶斯观点,展示了用于定义计算机软件可靠性的几种模型是如何被全面看待。

该模型使用震动模型(shock models)的概念,为常用模型提供了一种不同的解释。

10. Jewell 贝叶斯软件可靠性模型

Jewell 扩展了 Langberg 和 Singpurwalla (1985) 的一项成果,并对 Jelinski-Moranda 模型进行了扩展。

假设

  1. 测试协议允许在固定时间内运行,可能但不一定与故障时点重合。
  2. 未知短缺数量的分布被推广,从单参数泊松分布变为参数本身是具有 Beta 先验分布的随机量。
  3. 尽管参数后验分布的估计会导致复杂的表达式,但我们证明了未检测到的错误的预测分布的计算是直接的。
  4. 虽然现在已知可靠性和增长的最大似然估计 (MLE) 可能不稳定,但我们证明了,如果需要点估计量,预测模型可以轻松计算,而无需先获得完整分布。

11. 对 JM 模型进行量子修改

该模型用“不同类型的错误可能对软件的故障率产生不同影响”的新假设,取代了 JM 模型“每个错误对软件的不可靠性贡献相同”的假设。

故障率

Jelinski and Moranda Model

其中

Q = 软件固有的初始故障量子单位数。

Ψ = 单个故障量子单位对应的故障率。

wj= 第 i 个故障的故障量子单位数,即第 i 个故障量子的尺寸。

12. 基于马尔可夫软件可靠性模型的最佳软件发布

在该模型中,软件故障检测方法由具有吸收的马尔可夫出生过程来解释。本文修正了最优软件发布策略,考虑了软件测试时间的浪费。

13. 基于云模型理论对 Jelinski-Moranda 软件可靠性增长模型进行的修改

一个新的未知参数 θ 被包含在 JM 模型参数估计中,其中 θɛ [θL, θ]。置信度是与置信区间相关的概率值 (1-α)。一般来说,如果获得了软件可靠性指标 θ 的置信区间,我们可以估计虚拟云 C(Ex, En, He) 的数学特征,它可以根据 X 条件云生成器切换到系统定性评估。

14. 改进的 JM 模型,具有不完美的调试现象

改进的 JM 模型通过放宽完美的调试过程和不完全移除的类型等假设来扩展 J-M 模型。

  1. 故障未成功删除,但没有引入新故障。
  2. 故障未成功删除,同时由于诊断错误而产生了新故障。

假设

改进的 J-M 模型所做的假设包括:

  • 初始软件错误数量未知,但固定且恒定。
  • 软件中的每个错误都是独立的,在测试期间引起故障的可能性均等。
  • 故障发生之间的时间间隔是独立的、指数分布的随机变量。
  • 软件故障率在两次故障发生的时间间隔内保持恒定。
  • 故障率与软件中剩余的错误数量成正比。
  • 每当发生故障时,检测到的错误以概率 p 被移除,检测到的故障以概率 q 未完全移除,并以概率 r 生成新故障。因此,显而易见,p+q+r=1 并且 q≥r

具有不完美调试现象的改进 JM 模型的基本特征列表

可靠性度量名称可靠性度量公式
软件故障率λ(ti=ϕ[N-(i-1)(p-r)]
故障密度函数F(ti= ϕ[N-(i-1)(p-r)]exp(-ϕ[N-(i-1)(p-r)] ti)
分布函数Fi(ti)=1-exp(-ϕ[N-(i-1)(p-r)] ti)
第 i 次故障间隔的可靠性函数R(ti)=1-Fi (ti )=exp(-ϕ[N-(i-1)(p-r)] ti)
平均故障时间函数1/ ϕ[N-(i-1)(p-r)]