可靠性增长模型
可靠性增长建模
可靠性增长模型是对系统可靠性如何在整个测试过程中随时间演变的模拟。当识别出系统故障时,会纠正产生这些故障的潜在缺陷,并通过系统测试和调试来提高系统的可靠性。接下来必须将概念可靠性增长模型转换为数学模型,以便预测可靠性。
可靠性增长建模需要将不同时间段观察到的可靠性与证明可靠性潜在变化的已知函数进行比较。例如,等阶函数意味着系统的可靠性随着每次发布而线性上升。通过将观察到的可靠性增加与这些功能之一进行比较,预测系统在未来某个时间点的可靠性是可行的。因此,可以利用可靠性增长模型来帮助进行项目规划。
可靠性增长模型组通过测试来衡量和预测可靠性程序的改进。增长模型将系统的可靠性或故障率描述为时间或测试用例数量的函数。下面列出了该类别中的模型。
库蒂尼奥模型
在日志文件中,库蒂尼奥绘制了已识别缺陷的累计数量和采取的纠正措施数量与累计测试周数的关系图。让N(t)代表失败的总数,t代表整个测试持续时间。模型的失效率 lambda (t) 可以表示为,
$$\mathrm{λ_{(t)} =\frac{ N(t)}{t}= β_{0}t^{-β1}}$$
其中 $β_{0}$是 $β_{1}$模型参数。可以使用最小二乘法来估计该模型的参数。
沃尔和弗格森模型
在时间 t, m(t),的总失败次数可以写成,
$$\mathrm{m_{(t)} = a_{0}[ b(t)]^{3}}$$
其中 alpha0: 和 alpha1: 为未识别参数 测试用例数或总测试时间可用于计算函数b(t)。类似地,在时间 t,失效率函数由下式给出,
$$\mathrm{λ_{(t)} = m^{'(t)} = a_{0}βb^{'(t)[ b(t)]^{β-1}}}$$
Wall 和 Ferguson 使用各种软件故障数据评估了他们的模型,发现故障数据与模型相关性很好。
可靠性和增长模型受到批评
可靠性增长建模领域似乎面临着与所谓的历史主义相同的基本问题,即哲学问题。根据波普尔的说法,长期预测不能应用于我们都纠缠其中的社会结构。并且“现在一个一个地解决最紧迫和最真实的社会问题是明智的”
当我第一次遇到可靠性增长模型时,我觉得有必要将波普尔的可证伪性、确证性和简单性原则应用于它们。以下是对可靠性增长模型的预测能力和实现错误学习的能力的评估。这是根据波普尔标准并使用统计分析完成的。必须解决以下问题: 非常复杂的可靠性增长模型的预测能力是多少?工作是否值得结果,还是可能具有欺骗性?可靠性增长模型可以教会我们什么?哪些方法(如果有)更适合软件工程师的工作?
可靠性增长模型的好处
经典的可靠性假设得到广泛支持:在收集、分类和分析硬件组件的故障率统计数据方面花费了大量时间和精力(Shooman,1990)。硬件组件的生命周期(第一次出现故障的时间)可以建模为特定条件下的指数分布随机变量。失效时间高于 t 的几率被定义为R(t)一个项目(组件或系统)的可靠性函数。该函数由R(t)=提供,故障率 l 恒定。
现在让我们考虑一个有某些错误的程序。假设一个恒定的操作曲线,可以预期一个恒定的故障率 l。可靠性函数看起来类似于上面显示的硬件故障的函数。
有一个显着区别:故障现在被视为不会导致永久性缺陷的易失性事件。漏洞从一开始就存在。
我们预计会进行一些故障排除工作。结果,出现了新的意外故障率。根据以往经验评估故障率似乎从一开始就无法实现。
有什么事情要做?我们可以尝试通过自己的引导程序将自己从这些束缚中解脱出来。每个所谓的可靠性增长模型 (RGM) 都基于某些关于故障率如何因故障消除而变化的假设。
这个假设是相应模型的核心。它旨在传达 RGM 的经验实质。
一个常见的假设是 Jelinski-Moranda 模型 (Lyu, 1996) 的假设:通过消除缺陷,所有故障的故障率将降低一个恒定值。
主要关注的是这些假设是否可以得到验证。
平凡可靠性的预测
“琐碎预测”是天气预报中使用的一种策略:明天的天气和现在一样。这个小小的预测具有一定的预测能力。我很好奇一个简单的可靠性增长模型是否可以与基于统计标准的更复杂的模型竞争。
下一个平凡可靠性预测 (TRP) 模型不对可靠性增长做出任何假设。它适用于具有固定故障率的系统。在此前提下,故障之间的平均时间,或其倒数,故障率,可以使用过去的故障之间的时间来计算:最近的 - 例如,五或十次 - 后续故障之间的执行时间的平均值是用于确定平均故障间隔时间。
TRP是硬件可靠性中常用的基本模型。它具有任何广为接受的理论应该具有的所有组件 -
这个概念很容易掌握,任何工程师都能够看到它的局限性。
模型的适用性假设很好理解。
使用泊松分布,可以轻松确定估计的精度 - 所谓的置信区间。
为什么我们在假设可靠性增加的情况下将 TRP 与更详细的模型进行竞争,知道它是基于可靠性不变的前提下的?我们不知道移除缺陷后故障率如何变化。系统可能会发生重大转变,无论好坏。然而,假设根本没有变化似乎经常是可以接受的,因为故障消除对系统可靠性的影响很小。
波普尔准则
可靠性增长模型旨在根据先前的经验预测软件行为。在这种情况下,以前的经验依赖于历史数据;预测无法通过试验验证。
知识是综合的(或经验的),因为它涉及一些先验无效且必须通过经验验证的假设。在那些完全依赖逻辑推理和数学的部分中,它是分析性的。Popper (1980) 对预测技术的合成或经验物质的标准 - 方法的预测强度 - 如下 -
可证伪性:无论预测值(或预测能力)如何,没有一种预测技术在所有情况下都是正确的。一定有失败的可能。诸如“明天这里会下雨还是不下雨”这样的陈述不被认为是经验性的,因为它没有争议。
确证- 当(可证伪的)预测技术在各种情况下显示其预测值时,它被认为是得到确证的。
客观性- 预测和断言是客观的,因为它们可以进行主体间的测试。
简单性- 预测技术不应依赖太多可以更改的变量。因为否则,它的造假规避太简单,其预测价值太低。
根据波普尔标准的可靠性增长模型
在公正性方面,RGM 并不逊色于其他预测方法。然而,在我看来,RGM 未能满足波普尔的所有标准。
波普尔的可证伪性标准不能用于可靠性增长模型。这主要是由于模型和参数的多样性,几乎很难不找到适合某些给定实验或现场数据的模型。
因此,这些模型无法满足简单性标准。在这种情况下,“简单”并不意味着“容易理解”。与某些平面点的(基本)直线拟合相比,这些点可以由高阶曲线(不简单)近似的事实更具说服力,并且具有更大的经验力量。
因此,这些模型无法得到证实(在波普尔的意义上)。到目前为止,在我看过的所有模型演示中,模型都是在事后选择并拟合数据的。基于这些模型,我不知道有任何可证伪的和非平凡的软件可靠性预测技术。
以上是 可靠性增长模型 的全部内容, 来源链接: utcz.com/z/358934.html