陈 文
摘 要:将未确知有理数理论应用于数据建模是常见的建模方法,为了使其更有效地应用于软件可靠性的建模,结合软件失效数据的特点,从样点及样点的可信度两方面,研究未确知理论应用于软件可靠性模型的方法,提出对样点补偿的观点,并给出用补偿后样点计算可信度的计算方法。为未确知理论应用于软件可靠性的建模提供了新思路和新方法,并结合实例说明这一方法的有效性。
关键词:未确知有理数;软件可靠性;可靠性模型;可信度
中图分类号:TP311文献标识码:A
文章编号:1004-373X(2009)20-103-04
Sample Reliability of Software Reliability Modeling
CHEN Wen
(Fuzhou Polytechnic College,Fuzhou,350108,China)
Abstract:Using the theory based on unascertained ration number to study the modeling is a common method.In order to make the theory more effectively applied to the software reliability modeling,a study from samples and its reliability according to the failure data′s characteristic is given.In this paper,a new opinion that the sample should be compensated,and a method which is using compensated value to calculate samples′ reliability are put forward.New thinking and new method in software reliability modeling based on unascertained ration number theory are proposed.It shows the feasibility of new method.
Keywords:unascertained rational number;software reliability;reliability model;reliability
基金项目:国家自然科学基金资助项目(60573088);河北省自然科学基金资助项目(603407)
软件可靠性模型的研究是利用已知失效数据预测下一失效时刻,并建立软件的可靠性模型。未确知理论给出一种从已知数据,推测或估计未知数据的方法,将已知数据的全部或部分数据作为样点,同时,计算出各样点的可信度,给合样点及样点的可信度,计算出未知数据。因此,可以将未确知理论的方法应用于软件可靠性模型的建立,然而,软件的失效数据具有时序特性[1],直接将未确知理论应用于软件可靠性的建模是不妥的。在此根据软件失效数据的特点,提出先对样点进行补偿,再用补偿后的数据计算其可信度的方法,扩展了将未确知有数理论应用于软件可靠性模型的思路和方法。
1 未确知理论相关概念
未确知数学信息处理方法最大的特点是保留所有已知信息,直接参与定量运算,可使积累误差减到最小,而且除了原始数据外,没有任何人为假定,可最大程度忠实于所给信息。未确知有理数是最简单、应用最广泛的表达未确知信息的方法,下面给出未确知有理数的数学定义[2]:
对任意闭区间[a,b],a=x1 φ(x)=αi, x=xi(i=1,2,…,n) 0,其他 且∑ni=1αi=α,0<α≤1,则称[a,b]和φ(x)构成一个n阶未确知有理数,记作[[a,b],φ(x)],称α,[a,b]和φ(x)分别为该未确知有理数的总可信度,取值区间和可信度分布函数。 设A为式(1)表达的未确知有理数,称一阶未确知有理数: E(A)={[1α∑ki=1xiαi,1α∑ki=1xiαi],φ(x)}(1) φ(x)=α,x=1α∑ki=1xiαi 0,其他 式中:E(A)为未确知有理数A的数学期望,也称为未确知期望,简称期望或均值。 2 基于未确知有理数的软件可靠性模型(UM模型[3]) 2.1 基本假设与数据要求 (1) 基本假设:程序测试环境与预期使用环境相同。这是软件可靠性建模中的标准假设,确保在某一特定环境下使用数据采集进行模型评价的正确性。也就是说,该假设应能保证数据采集得到的失效数据适用于软件可靠性的度量。 (2) 实现此模型的数据需求:软件失效间隔时间分别为:x1,x2,…,xn,失效时间分别为:t1,t2,…,tn,其中xi=ti-ti-1,i=1,2,…,n;t0=0。 2.2 基本公式 将第i-1次失效作为起点到第i次失效发生的时间是一个未确知有理数,记为: xi=[[xmin,xmax],φ(xi)] 式中: xmin=min(xi-1,xi-2,…,xi-m) xmax=max(xi-1,xi-2,…,xi-m) 式中:m为参与运算的失效数据个数,一待定常数,对确认测试可取i-1;对可靠性测试,这里认为早期数据对预测未来行为作用很小,现时失效间隔数据比许久之前观测的失效间隔数值更好地预测未来,m一般取8~10。φ(xi)是xi的可信度密度分布函数。定义φ(xi),xj邻域内xk多,则认为xi取值xj的可信度就大,反之取值xj的可信度就很小,其中j,k=i-m,…,i-1,且j≠k。具体定义为: φ(xi)=ξj/ξ,xi=xj 0,其他(2) 式中:ξj表示xj邻域xj-xk≤r中包含xk(j≠k)的个数;ξ=∑i-1j=i-mξj,r为xj的邻域半径,可凭经验由失效数据估得,应注意在此过程中r是不断调整的。 xi的数学期望E(xi)为时刻t的平均失效间隔时间[4]MTBF,其中t是第i-1次失效到第i次失效之间的任一时刻。在稳定使用软件、且不对软件做任何修改的情况下,软件的失效强度为一常数,其值为1/MTBF。因此,在两次失效间隔时间内失效强度是常数λ,其值为1/E(xi),即: λ=1/E(xi)(3) 式中: E(xi)=∑i-1j=i-mxjξjξ, ξ=∑i-1j=i-mξj(4) 以第i-1次失效为起点的时间xi的密度函数为: f(xi)=1E(xi)exp-1E(xi)xi(5) 其分布函数为: F(xi)=1-exp-1E(xi)xi(6) 其可靠性函数为: R(xi)=exp-1E(xi)xi(7) 式中: E(xi)=∑i-1j=i-mxjξjξ , ξ=∑i-1j=i-mξj 3 样点可信度分析 3.1 UM模型分析 UM模型将第i次失效间隔时间看作是一个未确知有理数xi,即时刻t的平均失效间隔时间为E(xi),其中t是第i-1次失效到第i次失效之间的任一时刻。由E(xi)=∑i-1j=i-mxjξjξ可知:
E(xi)≤∑i-1j=i-mxmaxξjξ=xmaxξ∑i-1j=i-mξj=xmax
这就说明,利用UM模型预测的失效间隔总比先前的失效间隔的最大值小。然而,对于软件可靠性而言,失效数据的逐渐增大恰恰说明软件可靠性呈增长特性[5],是正常的、可信的。如图1(a)所示,样点5与周围其他样点的偏离较大,但认定该样点可信度较低是不合适的[6],那么,如何克服这种不合理性呢?在此提出一种补偿样点的方法,将原始的失效数据按照时间的推移作线性补偿,用补偿后的数据代替原始数据,如图1(b)所示,这样计算出来的样点可信度就更合理。
图1 可信度计算示意图
3.2 补偿直线的确定
失效数据的失效时刻与预测点的间隔越大,补偿量也越大。补偿直线设为:
y=xi+ati
式中:xi为原始失效数据;ti为xi发生时刻与最后一个观测样点的时间间隔,xi,ti均为已知。当系数a为0时,带补偿的UM模型即为UM模型,因此,UM模型是带补偿的UM模型的特例。当系数a>0时,说明软件可靠性的增长特性明显;当系数a<0时,反映软件系统是非可靠性增长特征。引入补偿系数后,上式中的E(xi)改为:
E(xi)=∑i-1j=i-m(xj+aptj)ξjξ
式中,a为待定系数,ptj表示从tj到预测点的时间间隔,即:ptj=ti-1-tj,这样,E(xi)可进一步写成:
E(xi)=∑i-1j=i-m[xj+a(ti-1-tj)]ξjξ
可以用最小二乘法[7]推导比例系数a的求法,设UM模型的样点个数为m,失效数据个数为n。
首先,对x1,x2,…,xm样点,利用带补偿的UM模型,其表达式为:
E(xm+1)=∑mj=1(xjξjξ)+a∑mj=1(tm-tj)ξjξ
式中:a为待定系数,进一步改写为:E(xm+1)=p1+aq1,其中:
p1=∑mj=1xjξjξ,q1=∑mj=i(tm-tj)ξjξ
其次:对于x2,x3,…,xm+1样点,同样可利用带补偿的UM模型得表达:
E(xm+2)=∑m+1j=2(xjξjξ)+a∑m+1j=2(tm+1-tj)ξjξ
=p2+aq2
以此类推,得到最后表达式:
E(xm+k)=pk+aqk(m+k=n,k=n-m)
上述k个表达式中:
pi=∑m+i-1j=ixjξjξ
qi=∑m+i-1j=i(tm+i-1-tj)ξjξ
于是,问题转化为:求a的值使上述k个值最接近实际值,即:使∑ki=1[xm+i-E(xm+i)]2达到最小,也就是使∑ki=1(xm+i-pi-aqi)2最小。对a求导并令其等于0便得:
∑ki=1(xm+i-pi-aqi)qi=0
解得:
a=∑ki=1(xm+i-pi)qi∑ki = 1q2i(8)
3.3 可信度计算
3.3.1 利用参考模型
可以先给出参考模型如JM模型[8],用参考模型代替图1(b)中的直线,计算实际失效数据与参考模型的误差,利用误差的大小计算可信度:
样点数据:x1,x2,…,xm
参考模型:x′1,x′,…,x′m
误差量:d1,d2,…,dm
其中:
di=|xi-x′i|
E(xi)=∑i-1j=i-mxjξjξ
而式中,ξj表示dj邻域|dj-dk|≤r中包含dk(j≠k)的个数,ξ=∑i-1j=i-mξj。
可靠性函数为:
R(xi)=exp-1E(xi)xi
3.3.2 利用补偿的样点值
通过补偿系数a,可以得到补偿后的样点数据yi-m,yi-m+1,…,yi-1。利用补偿后的数据调整可信度,即:
φ(xi)=ξj/ξ,yi=yj
0,其他(9)
式中:ξj表示yj邻域|yj-yk|≤r中包含yk(j≠k)的个数;ξ=∑i-1j=i-mξj;r为xj的邻域半径,由于此时数据已经经过补偿,r值可适当加大。于是:
E(xi)=∑i-1j=i-myjξjξ(10)
其可靠性函数为:
R(xi)=exp-1E(xi)xi
3.4 领域半径r的自适应算法
寻找一种对任何软件可靠性都适用的模型是不现实的[9]。不同的软件具有不同的特征,对于某一特定的软件系统,究竟用哪一种样点可信度的计算方法要根本软件系统的失效数据特点来决定。对于失效数据量较多时,可以通过对历史失效数据的预测结果的均方差来确定。上述公式中r可以通过以下自适应算法来调整。
将参与运算的样点的最大值记为max,最小值记为min,将r的取值范围扩大到[0.2(max-min),0.8(max-min)]区间,即r=Cr(max-min),Cr从0.2逐渐变化到0.8,步长设为dCr。r的自适应算法的伪码[10]描述如下:
begin
i=0
For Cr=0.2 to 0.8 step=dCr
{ i=i+1
For预测点pm=m1 to m2
{ 计算样点m1-m,m1-m+1,…,m1-1的最大值及最小值max,min
r=Cr*(max-min)
利用公式(8)及公式(10),计算出样点pm的预测值
利用pm的预测值与实际失效值,计算出误差值d[pm]
}
利用d[m1],d[m1+1],…,d[m2]计算出均方差dv[i]
}
计算dv[1],dv[2],…的最小值,不妨设为dv[k]
领域半径r的系数Cr=0.2+(k-1)*dCr
end
通过上述算法求出Cr后,领域半径r=Cr(max-min)。
4 实例分析
以下给出具体实例计算样点的补偿值,再利用补偿后的样点计算其可信度,从而求出下一失效的预测值。
表1是装甲兵工程学院的某软件测试例子(只取前16个数据)。其中,xi=ti-ti-1, i=1,2,…,16。
表1 失效数据
i12345678
xi1115424614
ti123812364256
i910111213141516
xi33130221322777
ti8990120142155177254261
当m取8,r取5,利用求补偿系数式(8)可以得到:a=0.126 36,由a可以求出补偿后的样点值y9,y10,…,y16为:54.73,22.61,47.82,37.04,26.39,32.61,77.88,7.00。
代入式(10)便得到E(x17)(m仍取8, r取10):
E(x17)=∑16j=9yjξjξ=35.02
表2给出了各模型预测比较结果。
事实上,实测结果中第17个故障的出现时刻为300,可见,样点可信度的调整方法是可行的。
5 结 语
未确知理论为预测未知数据提供了新方法,但在实际应用中还应该结合具体应用领域的数据特征,才能使该理论得到更好的应用。本文用补偿后的数据计算可信度的方法,其目的就是使未确知理论更好地应用于软件可靠性的建模中,拓展了将未确知理论应用于软件可靠性建模的思路和方法。
表2 预测结果比较
评估模型平均故障间隔时间下一故障可能时间
指数模型74.309 8335.309 8
JM模型108.501 9369.501 9
GO模型63.474 2324.474 2
Moranda模型72.582 2333.582 2
UM模型26.75287.75
带补偿的UM模型35.02296.02
参考文献
[1]马飒飒,王光平,赵守伟.基于时间序列的软件可靠性预测模型研究[J].计算机工程与设计,2007,28(11):2 520-2 523.
[2]刘开第,曹庆奎,庞彦军.基于未确知集合的故障诊断方法[J].系统工程理论与实践,2004,30(5):747-756.
[3]张永强,孙胜娟.基于未确知理论的软件可靠性建模[J].软件学报,2006,17(8):1 681-1 687.
[4]张永强,孙胜娟.一种基于未确知数学计算软件MTBF的新方法[J].计算机工程与应用,2006,42(27):50-52.
[5]吴彩华,朱小冬,刘俊涛,等.基于可靠性增长模型的软件可靠性增长测试充分性准则[J].计算机科学,2008,35(11):281-283.
[6]Chen Wen,Sun Shengjuan,Wan Yajing.Apply Unascertained Theory to Study Software Reliability Modeling[A].The 3rd International Conference on Computer Science & Education[C].2005:918-922.
[7]李桂成.计算方法[M].北京:电子工业出版社,2005.
[8]何伟,凌能祥,许昌满.软件可靠性JM模型的改进[J].统计与决策,2007(2):150-151.
[9]邹丰忠,刘海青,王林.软件可靠性综合模型[J].武汉大学学报:工学版,2003,36(1):86-88.
[10]王晓东.计算机算法设计与分析[M].3版.北京:电子工业出版社,2007.