李 震,王 肖
(江苏科技大学 电子信息学院,江苏 镇江 212003)
软件可靠性是衡量软件质量的重要标准,无论是对软件可靠性的度量还是指导软件可靠性测试的进行都具有极其重要的作用。软件可靠性增长测试的目的是为了有效地发现程序中影响软件可靠性的缺陷,通过排除这些缺陷实现软件可靠性的增长;根据失效数据可以评估当前软件可靠性的水平,预测未来可能达到的水平,从而为软件开发管理提供决策依据[1]。
可靠性评估过程流程图表示如图1所示。图形法是在工程中粗略判断数据趋势的常用方法,被检测的数据可以是失效间隔时间,也可以是累积失效数或失效强度(单位时间内的失效数)[2]。当收集的是失效间隔时间θj时,可以通过逐步计算得到失效间隔时间的平均值τ(i)为然后画出τ(i)相对失效次数i的趋势图,根据趋势图就可以直观的看出软件可靠校性的增长趋势,如果趋势是下降的,此时要做的就是重新分析软件的编写过程,修改代码出错的地方之后再进行测试,否则测试也是徒劳的。例如,Android文件管理器软件的一组失效数据如表1所示。Ti为第i次失效发生的时刻,单位为小时。
通过计算得到平均失效时间间隔数据如图2所示。
表1 文件管理器失效数据Tab.1 Failure data of file manager
图1 可靠性评估过程流程图Fig.1 Reliability evaluation process flowchart
图2 软件失效间隔时间平均值Fig.2 The average time of interval software failure
由图2可以看出,此软件的可靠性整体是呈增长趋势的,可以进行进一步的可靠性评估。
不论是简单的短期预测还是较长时间段的预测中,各种模型所表现出来的可靠性度量的准确性差异很大,目前还无法给出一个普遍适应的模型[3]。本文选取常见的Jelinski-Moranda(J-M)模型和Musa-Okumoto(M-O)对数泊松执行时间模型作为比较对象,阐述选择合适的可靠性评估模型的方法和步骤。
由于论文的内容限制,本文在此不在赘述模型假设的基本内容和公式的推导过程。由J-M模型的假设,其分布函数为:
由分布函数可得软件系统中的累积错误数的评估函数为:
其中n(ti)为第ti时刻的软件错误数,ti为软件的失效时刻,N为软件的错误总数,φ为模型的参数[4]。
由(2)式可以推得失效时刻为:
通过极大似然估计可以推导出公式如下[5]:
其中xi为失效时间间隔,即:xi=ti-ti-1。
把前15个失效数据带入公式(4),通过方程迭代法求出N和φ估计值分别为33与0.007 92。
由模型的假设前提条件知均值函数为[6]:
其中λ0是初始失效密度,θ是失效强度递减参数。令β0=θ-1且 β1=λ0θ,于是:
用下列方程可求得参数的极大似然估计值:
通过MATLAB对J-M和M-0模型进行仿真,如图3所示。
图3 J-M、M-O模型预测值与实际测得值对比Fig.3 Comparison between the prediction value and experiment results
由图3,我们可以直观的看到M-O模型的预测值要明显好于J-M模型的预测值,M-O模型的预测更加贴合实际的测得值。在失效数是16时,模型的预测值偏差最大,但也不过只有23.08%。另外M-0模型曲线的斜率是逐步增大的,说明软件的失效时间间隔也是逐渐增大的,代表软件的可靠性也逐渐变好。
1)第30个失效之后的时间x内的可靠度:
当第30个失效发生后经过20小时,预计的可靠度为0.29。
2)第30个失效之后的时间x内的失效密度:
3)平均失效前时间(MTTF)
所以可以预计第31个失效的MTTF为16.42小时。
通过对失效数据的分析,可以直观的判断软件是否达到可靠性要求,并可以指导实际的测试过程,例如:
1)如果用户给出了软件的可靠度指标,根据当前的软件可靠度的估计值,就可以判断是否满足用户的需求,从而决定是否需要继续进行测试。
2)可以根据预测的软件残留的缺陷数和平均失效前时间,用于指导可靠性测试的进行。
本文针对具体的实例制定了软件增长测试中可靠性评估的方案,通过对收集的测试数据计算失效间隔时间的平均值来判断软件的可靠性是否增长,以及通过MATLAB仿真对常见的J-M模型和M-O模型的预测准确性进行比对,最后通过M-O模型对软件未来的可靠性进行了预测,用以指导以后的可靠性测试工作。
[1]陆民燕.软件可靠性参数研究[J].北京航空航天大学学报,2001(2):2-3.LUMin-yan.Study on software reliability parameters[J].Journal of Beijing University of Aeronautics and Astronautics,2001(2):2-3.
[2]于碧媛.软件可靠性模型及估值的介绍[J].导弹与航天运载技术,1994(1):1-2.YUBi-yuan.Introduction of the software reliability models and the value estimation methods[J].Missiles and Space Vehicles,1994(1):1-2.
[3]吴烨清,陈仲民.软件可靠性建模思想的比较研究[J].电脑知识与技术,2008(35):4-5.WU Hua-qing,CHEN Zhong-min.Comparison study on the thought of software reliability modeling[J].Computer Knowledge and Technology,2008(35):4-5.
[4]车清太.计算机软件产品可靠性的探讨与研究[J].山西电子技术,2003(5):2-5.CHE Qing-tai.Discuss and research for the reliability of computer software products[J].Shanxi Electronic Technology,2003(5):2-5.
[5]谢景燕,安金霞,朱纪洪.考虑不完美排错情况的NHPP类软件可靠性增长模型[J].软件学报,2010(5):4-8.XIE Jing-yan,AN Jin-xia,ZHU Ji-hong.Consider the case of imperfect debugging NHPPsoftware reliability growth models[J].Journal of Software,2010(5):4-8.
[6]刘丹.软件测试及可靠性研究[D].长春:长春理工大学,2009.