Jelinski-Moranda(JM)模型图文详解

本文概述

  • JM模型的特征
  • 假设条件
  • JM模型的变化
Jelinski-Moranda(JM)模型也是一个马尔可夫过程模型, 已严重影响了许多后来的模型, 这些模型实际上是对该简单模型的修改。
JM模型的特征 以下是JM模型的特征:
  1. 是二项式模型
  2. 它肯定是最早的, 当然也是最著名的黑匣子模型之一。
  3. J-M模型始终会产生过分乐观的可靠性预测。
  4. JM模型遵循完善的调试步骤, 即以确定的简单模型消除检测到的故障。
  5. 在第i个故障间隔内J?M模型的恒定软件故障率由下式给出:
λ(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)]
平均故障时间功能
平均值功能 μ(ti )=N(1-e-?ti)
失效强度功能 €(你)= N?e-?ti
Median 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-Moranda(JM)模型图文详解

文章图片
1. Jelinski-Moranda几何模型的Lipow修改版本
它允许在一个时间间隔内清除多个错误。程序失败率变为
λ(ti)= DKni-1
其中ni-1是直到第(i-1)个时间间隔为止发现的错误的累积数量。
2. Sukert修正的Schick-Wolverton模型
Sukert修改了S-W模型, 以在每个时间间隔允许多个故障。程序失败率变为
Jelinski-Moranda(JM)模型图文详解

文章图片
其中ni-1是第(i-1)个故障间隔的累积故障数。
3.希克·沃尔弗顿模型
Schick和Wolverton(S-W)模型与J-M模型相似, 不同之处在于它进一步考虑到自上次调试以来, 第i个时间间隔的故障率随时间增加。
假设条件
  • 错误是偶然发生的。
  • 在定义的时间间隔内, 错误检测率是恒定的。
  • 错误是相互独立的。
  • 没有开发新的错误。
  • 检测到错误后, 将对其进行纠正。
在该模型中, 程序失败率方法是:
λ(你)= ? [N-(i-1)]你
其中?是比例常数, N是程序中错误的初始数量, ti是自第i-1次故障以来的测试时间。
4. GO-不完美调试模型
Goel和Okumoto假设每次出现故障时都以概率p消除了错误, 从而扩展了J-M模型。第i个故障间隔的程序故障率是
λ(ti)= ? [N-p(i-1)]
R(T I)= E-φ[P-N(I-1)] – th)的
5. Jelinski-Moranda几何模型
该模型认为程序故障率函数最初是常数D, 并且在故障时会几何减小。第i个故障间隔的程序故障率和故障间隔时间的可靠性方法为
λ(ti)= DKi-1
R(T I)= E-DKI-提摩太前)
其中k是几何函数的参数, 0 < k < 1
6. Little-Verrall贝叶斯模型
该模型认为故障之间的时间是参数i = 1, 2 … . n的独立指数随机变量, 其本身具有参数Ψ(i)和α, 反映了编程人员的素质和功能难度, 具有先验的伽马分布。
Jelinski-Moranda(JM)模型图文详解

文章图片
其中B代表故障减少因子
7. Shanthikumar通用马尔可夫模型
该模型认为故障强度随消除的故障数而变化, 如下所示
【Jelinski-Moranda(JM)模型图文详解】λSG(n, t)=Ψ(t)(N0-n)
Ψ(t)是比例常数。
8.在软件开发过程中的应用程序错误检测模型
这种新模型的主要特征是可以适应正在开发的程序的可变(增长)大小, 以便可以通过分析基本段来预测程序的质量。
假设条件
该模型具有以下假设以及JM模型假设:
  1. 该程序的任何经过测试的初始部分均会针对其初始错误的数量和性质来描述整个程序。
  2. 错误的可检测性不受新代码扩展最初测试的方法时产生的” 稀释” 的影响。
  3. 随时存在的代码行数是已知的。
  4. 增长功能和错误检测过程是独立的。
9. Langberg Singpurwalla模型
该模型显示了如何通过采用贝叶斯的观点来全面查看用于定义计算机软件可靠性的几种模型。
该模型使用冲击模型中的概念为常用模型提供了不同的动机。
10. Jewell贝叶斯软件可靠性模型
Jewell扩展了Langberg和Singpurwalla(1985)的结果, 并扩展了Jelinski-Moranda模型。
假设条件
  1. 已授权测试协议运行固定的时间长度, 但不一定可以与故障时期一致。
  2. 通过考虑参数本身是具有Beta先验分布的随机量, 可以从一参数泊松分布中推广未知短缺数量的分布。
  3. 尽管对参数的后验分布的估计会导致复杂的表达式, 但我们表明未发现的bug的预测分布的计算很简单。
  4. 尽管现在已经确定可靠性, 增长的MLE可能是不稳定的, 但我们表明, 如果需要点估计量, 则可以轻松计算预测模型, 而无需先获取完整的分布。
11.对JM模型的量子修改
该模型取代了JM模型的假设, 每个错误对软件的不可靠性都有相同的贡献, 而新的假设是不同类型的错误可能对软件的故障率产生不同的影响。
失败率:
Jelinski-Moranda(JM)模型图文详解

文章图片
其中
Q =软件固有的故障量子单位的初始数量
Ψ=与单个故障量子单位相对应的故障率
wj =第i个故障的故障量子单元的数量, 即第i个故障量子的大小
12.基于马尔可夫软件可靠性模型的最优软件发布
在此模型中, 通过吸收的马尔可夫出生过程解释了一种软件故障检测方法。本文通过考虑浪费软件测试时间来修改最佳软件发布策略。
13.基于云模型理论的Jelinski-Moranda软件可靠性增长模型的修正
在JM模型参数估计中包含新的未知参数θ, 使得θthat [θ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)] exp)
Distribution Function 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)]

    推荐阅读