当前位置:首页 > 软件可靠性模型综述
3 软件可靠性模型的特点
(1)与使用的程序设计语言无关。软件可靠性的应用与选用什么程序设计语言来编写软件之间没有什么直接关系。但对于根据同一个规格说明书,不管你用什么程序设计语言软件来编写软件,同一个软件可靠性模型应给出同样的估测结果。
(2)与具体用到的软件开发方法无关。软件开发是一个十分复杂的过程,涉及到许多的人为因素,从而使得对软件的质量难以进行预测。为了保证预测的精度,不妨假设待估测的软件系统是用最坏的软件开发方法开发出来的。
(3)测试方法的选择问题。实际上是无法通过彻底的测试来获得完全可靠的软件,所以不得不采用有限的测试,那么目标就是用最少的测试以求最大限度的软件可靠性。可以用例如边界值测试法、分类测试法、路径测试法等方法来达到。几乎所有的软件可靠性模型都假定测试环境就是将来软件的运行环境,这限制了高可靠性估计情况下的这些模型的可用性。
(4)改错过程。实际上改正老的错误时往往会引人新的错误。
(5)模型要表述的内容。模型应该指出测试的输入是否已足够地覆盖了输入域,测试的条件和数据是否已准确地模拟了操作系统、是否已足以查出那些类似的错误等。软件可靠性模型假定测试的条件和数据与操作环境有着同样的分布,也就简捷地假设了上述要表述的内容。
(6)输入的分布问题。可靠性估计紧密地依赖于模型假设的输入分布。作为一个极端的情况,如果输入是一个常数(比如说只用到一个输入),软件将或者出错或者成功的执行,于是就给出可靠性相应地为 0 或为 1。
(7)关于软件复杂性问题。大多数现有的软件可靠性模型都没有考虑这个问题。实际上,复杂的软件应该比简单的软件要求更多的测试。
(8)模型的验证问题。常常由于缺乏实际可用的足够数据,使得对模型的验证无法进行,
且在整个软件寿命周期内,软件几乎呈常数倍数地增加,导致可靠性也相应地变化,软件可靠性的验证工作也就更加复杂化。
(9)关于时间问题。在软件可靠性量测与硬件可靠性量测综合起来对一定的系统环境进行考核时,将 CPU 时间作为时间单位是必要的。
(10)考虑模型所要求的数据是否容易收集。否则,由于数据问题,将会限制软件可靠性的应用范围。
4 软件可靠性模型的分类
到目前为止,软件可靠性模型的研究已有 40 多年的历史,国内外已发表的软件可靠性模型有近百种,但由于对软件可靠性模型的研究还处在一个初步阶段,目前并没有一个完整、系统的科学分类方法。但是为了研究这些模型,又需要作些必要的分类。所以,不少专家学者提出了许多不同的分类。总的来说,模型可以按照它们的假设、测试空间、软件结构、处理的方式方法等进行分类,或者根据模型本身的数学结构及使用的参数估计方法进行分类。
一些常见的分类方法有:
? 按随机分类法:根据随机过程的假设,如过程的确定性和非确定性、马氏 过程、泊松过程等进行分类。
? 按软件出现的故障数进行分类:主要有错误计数模型和非计数模型,可数 性或不可数(无穷)模型。
? 按模型参数的估计方法进行分类:主要有 Bayes 方法或非 Bayes 方法,最 大似然估计或最小二乘法,另外还有线性模型等。
? 按模型使用的时间方式分类:主要有日历时间和执行时间模型。 ? 按修复过程分类:主要指对软件系统修复过程的一类模型,如完全修复型
和不完全修复型,完全排错型和不完全排错型。
? 按对软件的内部结构是否了解进行分类:可分为黑箱模型和白箱模型。对 它们的分类主要根据对软件的内部结构的了解程度以及对它们的结构能 加以利用的程度来区分。
根据 Shanthikumar 的观点,与软件可靠性有关的模型可分为四类: 第一类是软件可靠性模型。
第二类是软件释放时间模型。用于确定软件何时可以释放,交付用户使用。软件可靠性是其考虑因素之一。
第三类是软件可用性模型。用于确定软件处于正常状态的机会大小,模型不仅考虑软件可靠性,还要考虑软件维护性。
第四类是硬件/软件模型。用于确定混合硬件-软件系统的可靠性行为。
软件可靠性模型通常遵循以下四条准则之一进行分类,目的在于系统、深刻的理解软件可靠性模型。
(1)建模对象
建模对象指软件可靠性数据及软件其他有关信息,譬如与时间有关的信息(数据),与时间无关的信息(数据)等。依据建模对象软件可靠性模型总的来说分为两大类:静态模型和动态模型。
(2)模型建设 可假定软件原有软件缺陷为一确定的有限值,也可假定它是服从 Poisson 分布的随机变量,甚至假定它为无限量,这样可得到不同类型的模型。
(3)模型适用性
适用于测试阶段的模型称为增长模型,适用于确认阶段的模型称为确认模型。 (4)数学方法
采用概率方法的模型称为概率模型。采用模糊方法的模型称为模糊模型。另外还有 Bayes 模型与非 Bayes 模型等。
软件可靠性模型的分类方法很多,这里我们采用综合模型的假设、测试环境以及数理统计的分类方法,将模型大致分为:随机过程类模型和非随机过程类模型。具体分类如图: 软件可 靠性模型 时间序列分析理论
非随机过程模型型 随机过程模型 马尔可夫过程二项模型(以JM模型为代表) 非齐次泊松过程模型(以 GO 模型为代表) Musa 执行时间模型 运用贝叶斯估计的模型(以 LV 模型为代表) Seeding 模型 基于输入域的模型(以 Nerson 模型为代表) 非参数分析 其它方法结构化模型(以 T.Downs 模型为代表) Cox 比例风险函数模型表) 5 软件可靠性模型的建模过程
为了满足软件可靠性指标要求,需要对软件进行测试-可靠性分析 - 再测试 - 再分析 -修改的循环过程。软件可靠性建模的目标是为了对软件中失效趋势和可靠性进行有效预测,来判断软件是否达到发布要求。软件可靠性模型的建模过程如下图
定义失效 生成测试用例
共分享92篇相关文档