本发明属于软件可靠性模型
技术领域:
:,具体涉及一种故障检测率下降变化的不完美调试软件可靠性模型。
背景技术:
::在软件发布之前,软件可靠性评估具有重要作用。因为使用者或客户总希望发布的软件能够一直无故障运行。一旦运行的软件发生故障,不仅会造成使用者或者客户的损失,还会造成软件发布公司名誉受损和后期要花费高昂的费用来修复故障。因此,当软件测试完成之前,项目经理或者管理者总希望能够预测将要发布的软件中还有多少故障没有被检测出来。即软件中还剩下多少故障。这看起来是一个简单的问题,但是除了先前在测试中记录的检测出故障数量以外,再没有更多关于软件中剩余故障有用信息。确定软件中剩余故障的数量是一个非常困难的问题。在软件测试过程中检测出故障的行为也是一个不确定的随机事件。如果能够根据软件测试的实际情况,针对故障检测率的变化规律来建立自适应和鲁棒性强的软件可靠性模型,并用建立的软件可靠性模型来预测软件中剩余故障的数量以及评估软件可靠性程度,则是一个可行的和好的方法。在过去四十年里,研究者已经开发出许多种基于非齐次泊松过程(nhpp)的软件可靠性增长模型。他们一般假设故障检测率(失效率)是常量,并且故障强度正比于剩余故障的数量。例如,jelinski和moranda(j-m)模型与g-o模型。或者故障检测率失效率是一个增长函数变量。例如,delays-shaped模型(dss)模型和inflections-shaped(iss)模型。但是在实际的软件测试过程中,故障检测率(失效率)不是常量或者随测试时间增长变化的变量,而是一个随测试时间下降变化的变量。因为在测试过程中每个故障失效发生率是不同的。大的故障比小的故障更容易在早期被检测出来,或者说,明显的失效发生在单元测试中被检测出来概率要大于在集成测试、验证测试和系统测试。故障在集成测试阶段比验证测试或者系统测试阶段更容易被检测出来;故障在验证测试阶段比系统测试阶段更容易被检测出来。从直觉和经验上来讲,在软件测试过程中后期检测出故障的数量会少于前期检测出故障的数量,而且检测出故障的数量会越来越少。此外,为了简化建模,已建立的软件可靠性模型大都假设软件测试为完美测试。即,当检测出故障被去除时,没有新的故障被引进。事实上,因为故障检测和去除是一个复杂的过程,受到多种测试和调试因素的影响。例如,测试资源、测试工具和测试技巧,以及调试者的心里变化等。在建立一个软件可靠性模型时,假设为完美调试,去除故障时没有引进新的故障的假设是不符合实际的故障检测过程的。因此,在开发一个软件可靠性模型时,考虑故障引进的不完美调试现象是一个符合实际和合理的假设。在不完美调试的软件可靠性模型中,yamada等人和p-z分别提出基于指数分布的不同故障内容函数(总数)的不完美调试软件可靠性模型。kapur等人假设故障内容(总数)函数是均值函数的线性函数,并且故障检测和去除是不同的分布函数,他们提出许多不同的不完美调试的软件可靠性模型。此外,文献中假设故障内容(总数)函数随测试时间线性变化。虽然这些不完美调试的软件可靠性模型能够有效地应用到一定的测试环境中,但是由于在软件调试过程中故障引进的复杂性,这些模型不能够完全应用到其他测试环境中。由于软件调试是一个复杂和随机的过程,故障引进随测试时间会表现为非线性变化。主要原因有,一是在软件调试过程中,当检测到的故障被去除时,会受到软件调试的主观和客观因素的影响。主观方面包括调试者的技术和调试者的心理因素等;客观方面包括调试的资源,调试的工具和调试调试的环境等。在这两方面的影响下,故障引进数量随测试时间会表现为非线性变化。二是去除软件中故障的难易程度不同。例如,单元测试很容易去除故障,但是在集成测试、系统测试和验证测试中,去除故障时就需要考虑更多方面的影响。去除故障较难,引进故障可能也会较多。因此,故障引进的数量在软件测试不同阶段会不同,总体来看,故障引进会随测试时间表现为非线性变化。三是由于软件中的故障间存在着不同程度的依赖关系。因此,在调试过程中,故障引进的数量会受到故障依赖性的影响,在软件调试过程中会表现为非线性变化。四是由于软件发布时间和测试进度的要求。调试者会因为软件调试的任务和调试问题的增加,会产生很大的心理压力、疲劳和厌倦的情况。当检测的故障被去除时,很可能会引进故障。在整个测试和调试过程中,由于不同的调试阶段产生的压力不同,在去除故障时,引进故障的数量也会不同。因此,引进故障的数量会随测试时间表现为非线性变化。因此,针对软件测试中的故障检测率的变化规律,结合故障引进非线性变化的现象,开发自适应强的软件可靠性模型更符合实际的软件测试中可靠性评估的要求。技术实现要素:本发明主要针对
背景技术:
:中的问题,提供一种故障检测率下降变化的不完美调试软件可靠性模型。本发明为解决上述问题而采取的技术方案为:一种故障检测率下降变化的不完美调试软件可靠性模型,包括以下步骤:(1)模型假设条件如下:①在软件测试过程中,故障检测和去除过程服从非齐次泊松过程;②软件失效发生是由软件中剩余故障造成;③故障检测率随测试时间逐渐下降变化;④每次检测出故障立即被去除,新的故障可能被引进;⑤故障总数函数随测试时间非线性变化;(2)根据步骤(1)中假设①的非齐次泊松过程可表示为:其中n(t)是一个计数过程,且{n(t),t>0},m(t)表示到时间t为止,期望累计检测出故障的数量;根据步骤(1)中假设②的微分方程可表示为:其中b(t)表示故障检测率函数,a(t)表示故障总数函数,公式(2)表示当前检测出故障的数量和软件中剩余的故障的数量相关;根据步骤(1)中假设③得出故障检测率函数可表示为:其中b表示故障检测率,t表示时间;根据步骤(1)中假设④和⑤,故障总数函数可以被表示为:a(t)=a(1+αtd)(4)其中a(t)故障总数函数,包括最初期望故障和最终引进故障;b为故障检测率,α为故障引进率,a为软件中最初期望检测出故障的数量,d是一个形状参数;把公式(3)和(4)代入(2),得到如下方程式:用初始条件,t=0,m(t)=0解微分方程(5)可以得出下列的表达式:公式(6)即故障检测率下降变化的不完美调试软件可靠性模型。本发明采用上述技术方案,假设在软件测试过程中,故障检测率随测试时间逐渐下降变化,故障引进随测试时间非线性变化,并提出相应的不完美调试的软件可靠性模型。故障检测率下降变化更符合实际的检测出故障的变化情况,因此,本申请模型在同其它的模型相比,有更好的拟合和预测性能。实验结果也指出,考虑在软件测试和调试过程中,故障检测率随测试时间具有下降变化特点,引进的故障也呈现出非线性变化现象。与现有技术相比,本发明具有以下有益效果:1、针对软件测试过程中故障检测率随测试时间逐渐下降变化,并且存在故障引进现象,提出了一种不完美调试的软件可靠性模型,实验结果表明该模型具有更好的故障拟合效果和故障预测性能;2、本发明提出故障内容(总数)函数是一个非线性变化的函数,并且故障引进数量具有非线性变化特征。建立高质量的软件可靠性模型需要考虑故障引进非线性变化特征;3、本发明提出的模型能够很好地被应用到实际的测试过程中软件可靠性评估,有更好的自适应性和鲁棒性。本发明方案中缩略语解释如下:nhpp表示非齐次泊松过程,mle表示最大似然估计,aicakaike表示信息标注,srgm表示软件可靠性增长模型,sse表示误差平方和,mvf表示均值函数;本发明方案中符号说明如下:a表示最初期望检测出故障的数量,b表示故障检测率,d表示形状参数,α表示故障引进率,n表示模型参数的数量,n(t)表示到t时刻为止,检测出故障的数量,m(ti)均值函数,表示到ti时刻为止,期望检测出故障的数量,b(t)表示故障检测率函数,a(t)表示故障内容(总数)函数(包括最初期望故障和最终引进故障),oti表示到ti时刻为止,实际观测到故障的数量。本发明方案中相关定义如下:定义1.软件故障(softwarefault)是指由于软件产品存在着设计和编写错误而带来的软件不能执行相应的功能而发生的情况;定义2.大的故障(bigfault)是指在软件测试过程中检测出的故障为明显的故障、容易去除的故障或者严重性级别高的故障;定义3.小的故障(smallfault)是指在软件测试过程中检测出的故障为不明显的故障、不容易去除的故障或者严重性级别低的故障;定义4.故障检测率(faultdetectionrate)是指在软件测试过程中检测出故障的概率;定义5.故障引进率(faultintroductionrate)是指在软件测试过程中检测到的故障被去除时引进故障的概率;定义6.严重性级别高的故障(afailurewithhighseverity)是指对软件运行和实现的功能有重要影响的故障;定义7.严重性级别低的故障(afailurewithlowseverity)是指对软件运行和实现的功能影响较小的故障。本发明中模型的推导过程如下:证明:假设那么exp(d(t))=1+bt。公式(2)两边乘以exp(d(t)),我们可以得到下式,上式两边积分,∫d(m(t)exp(d(t))=∫a(t)d(exp(d(t)))得出下式,把公式(4)代入公式(7),可以得到,其中,c为常量。当t=0,m(t)=0。我们可以得到,本发明方案中参数估计方法如下:本发明用最大似然估计方法来估计提出模型的参数,即,估计在公式(6)中未知参数a,b,d和α,考虑到非齐次泊松过程的概率分布,那么m(t)的联合概率分布函数可以表示为,p(t1,n1;t2,n2;…;tk,nk)=pr{m(t1)≤n1,m(t2)≤n2,…,m(tk)≤nk|m(t0)=n0}(10)其中,m(t)表示为均值函数。当t=0,m(t)=0。联合概率密度函数可以表示为,为了简化计算,我们可以把公式(11)表示为,l=log(p(t1,n1;t2,n2;…;tk,nk))(12)因此,我们可以联立解下面的微分方程,可求出我们提出模型参数(a,b,d和α)的估计参数值(a*,b*,d*和α*),附图说明图1是本发明模型的均值函数的95%置信区间,其中(a)表示在用故障数据1(ds1)情况下估计我们提出模型的95%置信区间;(b),(c),(d)和(e)表示在故障数据2(ds2)中分别用tandem发布1,发布2,发布3和发布4的故障数据来估计我们提出模型的95%置信区间。具体实施方式实施例1一种故障检测率下降变化的不完美调试软件可靠性模型,包括以下步骤:(1)模型假设条件如下:①在软件测试过程中,故障检测和去除过程服从非齐次泊松过程;②软件失效发生是由软件中剩余故障造成;③故障检测率随测试时间逐渐下降变化;④每次检测出故障立即被去除,新的故障可能被引进;⑤故障总数函数随测试时间非线性变化;(2)根据步骤(1)中假设①的非齐次泊松过程可表示为:其中n(t)是一个计数过程,且{n(t),t>0},m(t)表示到时间t为止,期望累计检测出故障的数量;根据步骤(1)中假设②的微分方程可表示为:其中b(t)表示故障检测率函数,a(t)表示故障总数函数,公式(2)表示当前检测出故障的数量和软件中剩余的故障的数量相关;根据步骤(1)中假设③得出故障检测率函数可表示为:其中b表示故障检测率,t表示时间;根据步骤(1)中假设④和⑤,故障总数函数可以被表示为:a(t)=a(1+αtd)(4)其中a(t)故障总数函数,包括最初期望故障和最终引进故障;b为故障检测率,α为故障引进率,a为软件中最初期望检测出故障的数量,d是一个形状参数;把公式(3)和(4)代入(2),得到如下方程式:用初始条件,t=0,m(t)=0解微分方程(5)可以得出下列的表达式:公式(6)即故障检测率下降变化的不完美调试软件可靠性模型。为进一步表明本实施例方案的性能,本发明作了如下验证:故障数据集本发明从软件项目中选择三个故障数据集来验证模型的性能。第一个故障数据集(ds1)是来自文献misrapn.softwarereliabilityanalysis.ibmsystemsjournal,1983,22(3):262-270航天飞机支援飞行软件;在38周的软件测试时间里,共用2456.9cpu小时,231个故障被检测和去除。在第一个故障数据集中,有重要故障(criticalerrors)、主要故障(majorerrors)和次要故障(minorerrors)。第二个故障数据集(ds2)主要用于比较模型的预测性能。第二个故障数据集获得于tandem计算机系统wooda.predictingsoftwarereliability.ieeecomputer,1996,11:69-77,包括四个主要软件发布产品。对于第二个故障数据集中的四个发布软件项目收集的故障数据集,每个故障数据集被划分为两部分。第一部分用于模型拟合和估计模型的参数;第二部分用于模型的预测比较。表3、4、5和6详细列出关于故障数据集2的四个发布软件项目的故障数据集。第三个故障数据集是由musa收集整理的贝尔电话实验室的实时命令和控制应用系统musajd.softwarereliabilitydata,cybersecurityandinformationsystemsinformationanalysiscenter,january1980。在92天的测试时间里,总共136个软件故障被检测出来。模型比较标准本发明用了两个公认的模型比较标准去评测模型的拟合和预测性能,即,评测模型拟合历史故障数据的能力,并且预测软件中剩余故障的数量。表1我们提出模型的参数估计值表2第一组数据集上不同软件可靠性增长模型的拟合和预测性能比较结果(63%故障数据集1)标准1.其中,n是总的观察出故障的数量。标准2.akaike信息标准(aic)是计算模型在拟合过程中最大化似然函数的能力。一般来说,用该标准来评价模型,如果模型参数越多,模型会受到更大的惩罚。aic=-2log(likelihoodfunctionatitsmaximumvalue)+2n(15)其中,n表示模型参数的数量。对于上面两个模型评价标准,越小的(sse和aic值),模型有更好的拟合或者预测性能。表3使用第二组数据集中tandem计算机发布软件1故障数据集进行g-o,p-z和我们提出模型的预测性能比较结果模型性能分析:为了比较模型的拟合和预测性能,本发明不但用了三个经典的故障数据集,而且还选择不同的软件可靠性模型进行比较。这些用于比较的软件可靠性模型既有完美调试软件可靠性模型,又有不完美调试的软件可靠性模型。本文中所有的模型是用最大似然估计方法进行模型参数估计的。在用故障数据集1、2和3进行以下软件可靠性模型比较实验中,表1给出了我们提出模型的参数估计值。用故障数据集1(ds1)进行模型性能比较:对于第一个故障数据集,本发明首先把24个故障数据点用于模型拟合和估计模型的参数值。另外用剩下的故障数据点用于模型的预测性能比较。从表2,我们能够看到在模型拟合性能比较上,提出的模型在同其它模型相比较时,我们提出模型的ssefitandaic值是最小的,它们分别是178.9和104.9。虽然从ssefitandaic值方面讲,yamada不完美调试模型1和kapur2模型的拟合效果也很好,它们的ssefitandaic值也和我们提出模型的拟合值接近,但是在预测方面,我们提出的模型明显有更好的预测性能。即,我们提出模型的ssepredict值是511.7,在同其它模型比较时,我们提出模型的ssepredict值是最小的。此外,从图1(a)中,我们可以清晰地看到我们提出模型的95%的置信区间情况,我们提出模型的估计值很好地落在了95%置信区间的上下界中。用故障数据集2(ds2)进行模型性能比较在文献musajd.softwarereliabilitydata,cybersecurityandinformationsystemsinformationanalysiscenter,january1980中,wood认为goel-okumoto(g-o)模型在同其它模型比较时,有最好的预测性能。但是在文献zhangx,phamh.comparisonsofnonhomogeneouspoissonprocesssoftwarereliabilitymodelsanditsapplications.int.j.systemsscience,2000,31(9):1115-1123中,zhang等人认为p-z模型在同其它模型比较时有最好的预测性能。为了比较我们提出模型的预测性能,我们用同文献zhangx,phamh.comparisonsofnonhomogeneouspoissonprocesssoftwarereliabilitymodelsanditsapplications.int.j.systemsscience,2000,31(9):1115-1123一样的故障数据集。从表3,4,5和6,能够看到我们提出的模型同g-o和p-z模型相比较时,提出的模型有更小的sse和aic值。而且,在表3中,g-o模型的sse和aic值是我们提出模型的2倍多。虽然p-z模型的sse值与提出的模型接近,但是p-z模型的aic值是我们提出模型约为3倍。在表4中,g-o模型的sse值约为我们提出模型的10倍,g-o模型的aic值约为我们提出模型的4倍。从表5中,能够看到g-o模型的sse值约为我们提出模型的5倍,g-o模型的aic值约为我们提出模型的2倍。p-z模型的sse和aic值至少为我们提出模型的2倍。在表6中,虽然g-o和p-z模型的aic值和我们提出模型的aic值很接近,但是g-o模型的sse值是我们提出模型的10倍以上,p-z模型的sse是我们提出模型至少2倍。图1(b),(c),(d)和(e)给出了我们提出模型的95%的置信区间,从图1(b),(c),(d)和(e)中,我们可以清晰地看到我们提出模型的估计值很好的落在我们提出模型的95%置信区间的上下界中。表4使用第二组数据集中tandem计算机发布软件2故障数据集进行g-o,p-z和提出的模型的预测性能比较结果用故障数据集3(ds3)进行模型性能比较对于第三个故障数据集,我们把故障数据集划分为两个子集。第一个子集是把故障数据集的75%用来拟合和估计模型的参数,第二个子集是用故障数据集的25%进行模型预测性能比较。从表7,我们能够看见提出模型在所有的模型中的ssefitandaic值是最小的。它们分别是731.8和253.1。虽然yamada不完美调试模型1有很好的拟合效果,但是它的预测值远远高于我们提出的模型。另外,在模型预测性能的比较上,提出的模型在同其它模型的相比时,有最好的预测性能。我们提出模型的ssepredict值为758.9。表5使用第二组数据集中tandem计算机发布软件3故障数据集进行g-o,p-z和我们提出模型的预测性能比较结果我们提出的模型估计值很好地回归和预测了实际软件故障发生行为。这说明我们提出的模型在同其它模型相比较时有更好地拟合和预测性能。我们提出模型的估计值很好地延续了实际故障发生的趋势和变化。因此,我们提出的模型会有更好的鲁棒性和自适应。本发明中提出的模型的性能优于其它模型的机制分析:提出的模型之所以性能优于其它模型的原因如下:⑴.提出的模型假设故障引进为非线性变化。在软件测试过程中,当检测到的故障被去除时,很可能引进新的故障。而且引进的故障会随着测试时间非线性变化。因此,考虑故障引进非线性变化的软件可靠性模型更符合实际的故障引进的情况。由于我们提出的模型是假设故障引进为非线性变化,所以和完美调试的软件可靠性模型与故障引进为常量和线性变化的不完美调试的软件可靠性模型相比,有更好的拟合和预测性能。⑵.提出的模型假设故障检测率随测试时间有下降的变化趋势。在故障检测过程中,大的故障和容易发现的故障首先被检测出来。随着测试进行,那些较复杂和深层的故障会被以后检测出来。而且到软件测试后期,检测出故障的数量会越来越少。因此,故障检测率会随测试时间有下降的变化特点。这一规律更符合实际的故障检测率的规律变化。由此建立的软件可靠性模型会有更好的性能。⑶.提出的模型整合了非线性变化的故障引进和下降变化趋势的故障检测率。考虑到故障引进的非线性变化和故障检测率的下降变化趋势,我们整合了两种因素来建立相应的软件可靠性模型。和其它模型相比,我们提出的模型能更好地捕获软件测试中故障被检测和去除的规律变化。因此,提出的模型会有更好的拟合和预测性能。总之本发明提出了一个考虑故障检测率具有下降变化的不完美调试的软件可靠性模型。我们假设故障引进随测试时间为非线性变化。用三个有代表性的故障数据集和两个模型比较标准来评测模型的性能。而且,给出了提出的模型的95%的置信区间来进一步考察提出的模型的稳定性及拟合和预测性能。实验结果也指出提出的模型有很好地拟合和预测效果,并且能够更准确地预测剩余故障的数量。假设具有下降趋势的故障检测率和非线性变化的故障引进更符合实际的故障检测和去除变化情况。因此,本文提出的模型能够更有效地被用于实际的软件测试中去预测软件中剩余故障的数量。表6使用第二组数据集中tandem计算机发布软件4故障数据集进行g-o,p-z和我们提出模型的预测性能比较结果表7第三组数据集上不同软件可靠增长模型的拟合和预测性能比较结果(75%故障数据集3)table7comparisonoffittingandpredictiveposerofsrgmusingds3(75%ofds3)当前第1页12当前第1页12