杨彬 陈丽容
(中国航天科工集团第二研究院706所,北京100854)
摘要 研究了高可靠软件的可靠性评估技术,给出了失效数据稀少情况下的软件可靠性模型。假设高可靠软件的可靠性测试过程中发生失效是独立同分布的稀有事件,从理论上分析了极值统计理论用于软件可靠性评估的可行性,建立了软件可靠性极值统计模型,讨论了模型的参数估计方法和假设检验方法。
关键词 软件可靠性模型 高可靠软件 极值统计 失效数据
1 引言
关于软件可靠性的评估,从1972年出现第一个软件可靠性的评估模型以来,人们对软件可靠性评估方法和评估模型的研究就没有间断过。人们不断总结已有模型的优点和缺点,并在已有的评估理论的基础上,针对不同软件的特点和性能,不断地提出新的模型和方法。这些可靠性模型和评估方法都是基于系统运行期间的失效分析,事先假定软件可靠性失效数据服从一定的随机分布,并且要求一定量的软件可靠性失效数据。对大型商业系统来说,这些数据量可能还是足够的,但是对高可靠软件来说就往往不能产生符合要求的数据了。这有三方面的原因:一是高可靠软件一般功能比较单一,操作较少;二是高可靠软件开发过程中引入了大量软件可靠性分析与设计措施,例如容错、冗余和N-文本编程等,三是前期的软件测试比较充分,因此可靠性测试阶段确实很少发生失效。所以对于高可靠软件,难以决定选择哪个模型更合适,甚至就算选定了某一个模型,由于失效数据的稀少,模型也难以适用[1,2]。
本文分析了极值统计理论用于软件可靠性评估的可行性,建立了软件可靠性极值统计模型,讨论了模型的参数估计方法和假设检验方法,最后通过一个实例说明了该模型的应用。
2 极值统计简介
极值统计是专门研究很少发生、一旦发生却有巨大影响的随机变量极端变异性的建模及统计分析方法[9]。它以次序统计量为基础,研究极值事件分布的特性。极值事件常见于某种分布的尾部,用来拟合全部事件的分布有时不能精确地反映其尾部事件,这时母体分布尾部的分布可以由极值分布来精确拟合。
设 是独立同分布的随机变量序列,如果存在常数列 和 ,使得
成立,其中 是非退化的分布函数,那么 必属于下列三种类型之一[9]:
I型分布:
II型分布:
III型分布:
其中I型分布又称为Gumbel分布,II型分布又称为Fréchet分布,III型分布又称为Weibull分布,这三种分布统称为极值分布(extreme value distribution)。当 时, 和 分别称为标准Fréchet分布与标准Weibull分布。容易求得三种类型极值分布的密度函数分布为
如果引进位置参数(location parameter) 和尺度参数(scale parameter) ,则三种类型的极值分布函数为
。
3 软件可靠性极值统计模型
由于在高可靠性软件的测试过程中失效很少发生,我们可以认为高可靠性软件测试过程中失效的发生是稀有事件[5],从而可以用极值统计方法来分析采集到的失效数据。根据这个思想,可以建立软件可靠性极值统计模型(Software Reliability Model based on the Statistics of Extreme,SE-SRM),并从假设检验和参数估计这两个方面提高模型的准确度,那么用该模型进行失效数据分析能获得更真实的可靠度。
2.1 基本假设
高可靠软件一旦失效将造成灾难性的后果,因此高可靠软件质量要求较高,在其交付使用之前,一般会进行大量的测试以发现并排除可能存在的缺陷。在此前提下,对高可靠软件进行可靠性测试可能只能收集到有限的失效数据。另一方面,“软件总是有缺陷的”这一观点已经在学术界和实业界得到了共识,测试中发生很少失效并不能保证软件已经达到了预定的可靠度。因此利用这些有限的失效数据对软件可靠性进行评估,是软件发布前进行决策时的一个必须步骤。
假定软件失效服从母体分布 , 是收集的失效数据。则对高可靠软件而言, 很可能是位于母体分布 的尾部,而不是母体分布的中心。传统的软件可靠性模型提供与母体分布中心有关的信息,它预先假定失效数据服从某一个先验分布(例如G-O模型假定失效数据服从指数分布)。如果选择了一个错误的分布,则预测的结果会不正确。这种先验分布的选取除了需要软件可靠性工作者的经验外,还需要大量失效数据的统计特性支撑。在失效数据很少的情况下,选择一个分布会特别困难,因此用来对整个失效数据范围建模的母体分布函数可能不能正确反映尾部分布。如果单独对尾部分布进行分析,可能会得到比对母体分布进行分析更准确的结果[8,9]。
极值统计关注给定概率分布的尾部特征,提供了一种对尾部分布进行分析的方法。使用极值统计来分布失效数据,不需要对数据假设一个先验分布。为了更加客观地描述高可靠软件可靠性测试阶段可靠性的变化规律,根据高可靠软件测试的特点,可以做如下基本假设:
(1)软件的失效为稀有事件。由于高可靠软件可靠性测试过程中失效次数很少,可以认为其失效为稀有事件。
(2)软件失效是独立同分布的。由于失效为稀有事件,可以认为软件失效是独立的,各失效之间没有关联。又由于软件的可靠性已经很高,失效时缺陷的排除对可靠性的影响不大,因此可以认为软件失效是同分布的。本条件的前提是条件(1),如果条件(1)不成立,则本条件也值得怀疑。因此,本文的方法主要用于失效极少发生下的软件可靠性评估。
(3)软件的测试操作剖面与实际操作剖面一致。为了更准确地反映实际使用中软件的可靠性,在对软件进行测试时,其测试操作剖面应与实际操作剖面类似。
2.2 基本公式
基于以上假设,可以建立基于极值统计的软件可靠性模型SE-SRM。设 为来自测试阶段的 次失效时间,独立同分布,分布函数为 。由于高可靠软件的可靠性已经很高,软件所含的缺陷一般处于操作剖面出现概率极小的模块之中,只有软件多次运行时才可能被执行到。记软件失效时间 ,则 的分布为:
(1)
由于软件失效时间的分布函数 是连续型分布函数,是由操作剖面、执行任务的复杂程度等因素所决定的,在软件测试过程中 的确定十分困难。为便于评估高可靠软件的可靠性,可以采用极值分布作为 的分布函数。
由极值类型定理可知,当 时, 的渐近分布为三种分布形式之一。我们假设这组失效数据符合Gumbel-II型极大值分布:
(2)
通过参数估计得到上式中的参数的估计值 、 ,然后再进行对这组失效数据是否确实符合Gumbel-II型分布进行假设检验。经过参数估计和假设检验以后,可以利用分布函数 和估计值 、 求解各可靠性指标,从而对高可靠软件的可靠性进行评估。
母体分布为Gumbel-II型极值分布的可靠度函数为( 为失效时间):
(3)
母体分布为Gumbel-II型极值分布的失效率函数为:
(4)
2.3 参数估计
在统计学中对参数估计一般采用极大似然估计和最小二乘估计,但是两者的优良性质只有在样本量较大时才能体现。而高可靠软件的可靠性测试失效数据少而且离散性很强,这两种估计方法是否适用还没有定论。针对极值统计推断,本节引入最好线性无偏估计。
设分布函数 ,其中 是未知参数。从该总体中抽取一个随机样本 ,并构造一个统计量 来估计 ,若 满足下列条件:
(1) 是是样本 的线性函数;
(2) 是 的无偏估计,即 = ;
(3) 具有最小方差。
那么, 是 的最好线性无偏估计(Best Linear Unbiased Estimate,BLUE)。
由于 服从Gumbel-II型极大值分布,令 ,则 服从Gumbel-I型极小值分布,其分布函数为:
(5)
其中 ,于是对 的估计可以转换成对 的估计。
设失效数据 为来自分布函数为(3-2)的总体分布的样本,并且是次序统计量。由于 是单调函数,因而 也是次序统计量。
由中国电子技术标准研究所编制的《可靠性试验用表》,当 时,Gumel-I型极小值分布中参数 和 的BLUE是 的线性函数,即:
(6)
其中的 称为最好线性无偏估计系数,其值可以查表获得。
根据 和 的估计值 和 ,就可以求得参数 的估计值:
(7)
虽然 是 的无偏估计,但 不是 的无偏估计,为了得到 的无偏估计,可以作如下修正,即:
(8)
其中的 称为纠偏系数,其值可以查表获得。这样求得Gumbel-II型极大值分布中参数的最好线性无偏估计值 和 。
用BLUE进行参数估计具有相当高的精度,并且当 时查表方便。由于本文考虑的是失效数较少的情况,因此用BLUE来进行可靠性模型参数估计正合适。
2.4 假设检验
为了利用极值分布描述软件可靠性变化规律,我们需要对软件失效数据是否服从极值分布进行检验。设 为软件可靠性测试的失效时间数据,需要检验如下假设:
:失效时间 服从Gumbel-II型极大值分布。
即 。
其中
具体过程如下:
对 进行线性化:
(9)
令 , , ,则上式可化为:
(10)
上式中 是未知的,但当 较大时,经验分布函数 几乎处处收敛于 ,因此可以利用经验分布函数 代替 。为了检验式(10)是否成立,我们选择相关系数检验,即:
(3-18)
其中 。
当测试失效数据 是来自于Gumbel-II型极值分布的样本时,则相关系数应接近1。因此给定显著性水平 , 来自于母体分布为Gumbel-II型的拒绝区域为 ,其中 为临界值,其值可以通过查表获得。对于上述相关系数,其拒绝步骤为:
(1)计算线性相关系数 ;
(2)查相关系数临界值表得到 ;
(3)看是否接受假设 。
4 应用实例
这里给出一个应用基于极值统计的软件可靠性模型的实例,完整给出了参数估计和假设检验的过程,并与其它软件可靠性模型进行了比较。某程序测试总时间为528小时,其中共发生了7次失效,实际运行时间为2148小时,其中共发生了6次失效,各次失效发生的时间如表1所示。
表1 某软件失效时间
|
失效数 |
测试失效时间 |
运行失效时间 |
|
1 |
120 |
144 |
|
2 |
120 |
336 |
|
3 |
152 |
408 |
|
4 |
192 |
1128 |
|
5 |
296 |
1152 |
|
6 |
368 |
1680 |
|
7 |
488 |
|
(1)针对测试过程中的失效数据,用最好线性无偏估计进行参数估计,根据公式(3-13)和(3-14)得到参数估计值: 。
(2)用相关系数法检验测试过程中的这些数据是否符合极值分布,根据公式(3-18)得 。给定显著性水平 ,查表得 。由此可见,这些失效数据确实是符合极值分布的。
(3)算出软件可靠性测试结束后预计的可靠度函数和失效率函数为:
软件可靠性测试结束以后预计的软件平均失效时间,根据公式(3-8)有 。实际运行中的平均失效时间 用各失效时间间隔的均值来代替,有 。
G-O模型是常用的NHPP类软件可靠性模型,它假定检测出的累积错误数是一个独立增量过程,其期望函数服从非齐次Possion分布。针对上述测试失效数据,根据G-O模型可以算得其可靠度函数为 ,软件平均失效时间 。
,而 ,这反映了SE-SRM模型进行预计的结果要比G-O模型更准确。
(4)针对软件实际运行失效数据,用最好线性无偏估计进行参数估计,根据公式(3-13)和(3-14)得到参数估计值: 。根据公式(3-18)算得相关系数 ,给定显著性水平 ,查表得 。由此可见,实际运行中的失效数据是符合极值分布的。
软件实际运行中的可靠度函数和失效率函数为
将软件可靠度函数 、 和失效率函数 、 绘成图,如图1所示。
图1 SE-SRM模型应用
5 总结
本章分析了对高可靠软件而言将软件失效视为稀有事件的合理性。在此基础上,利用极值统计理论建立了软件可靠性模型SE-SRM,并提出了适合该模型的参数估计和假设检验方法。根据一个实际的例子,详细阐述了SE-SRM的使用过程。
参考文献
[1] Lori M.Kaufman, Joanne Bechta Dugan, Barry W.Johnson,Using Statistics of the Extremes for Software Reliability Analysis[J],IEEE TRANSACTIONS ON RELIABILITY,VOL 48,NO.3,1999 SEPTEMBER
[2] Lori.M.Kaufman,Ted C.Giras,Simulation of rare events in transportation systems,Proceedings of the 2001 Winter Simulation Conference[C]
[3]Uditha Balasooriya and C.K.Low,Competing causes of failure and reliability tests for Weibull lifetimes under type I progressive censoring[J],IEEE TRANSACTIONS ON RELIABILITY ,Vol.53, No.1 MARCH 2004
[4]Toshiyuki Shimokawa,Goodness-of-fit tests for type-I extreme-value and 2-parameter Weibull distributions[J],IEEE Transactions on Reliability,VOL 48,NO.1,1999 MARCH
[5]Yangyang Yu,Barry W.Johnson,The Quantitative Safety Assessment for Safety-Critical Software,Proceedings of the 29th Annual IEEE/NASA Software Engineering Workshop[C]
[6]Shepperd M.; Cartwright M.,Predicting with sparse data[J],IEEE Transactions on Software Engineering,VOL.27,NO.11,NOVEMBER 2001
[7]Nestoras E.Evmorfopoulos et al.,A Monte Carlo approach for maximum power estimation based on extreme value theory[J],IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS, VOL.21, NO.4, APRIL 2002
|