APP下载

高可靠软件的可靠性评估技术综述

2018-01-06张威

电脑知识与技术 2017年35期
关键词:故障注入

张威

摘要:高可靠性软件的可靠性评估一直都是可靠性评估领域的一个难题,该文介绍了三种尝试解决该问题的方法。其中,极值统计模型强调失效数据母体分布的尾部信息以获取更好的评估准确度;基于BootStrap重抽样技术的软件可靠性模型可以对原失效数据样本进行重新抽样,然后对新失效数据集再进行可靠性分析;基于故障注入技术和加速寿命试验原理的软件可靠性评估模型使用故障注入技术对软件的运行环境进行劣化,可以有效加快软件可靠性测试的过程。

关键词:高可靠软件;可靠性评估;故障注入;加速寿命试验

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)35-0100-02

随着计算机使用的普及,越来越多的人类生产生活活动都已经离不开计算机软件的辅助。在一些安全性要求比较高的行业如核电行业中,其反应堆控制系统或其相关软件一旦失效,将会造成令人无法接受的灾难性后果。对于此类安全关键软件,需要对其进行软件可靠性测试,测试其可靠性水平如失效率是否达到可以上线运行的标准。

1 概述

软件可靠性测试与软件测试关注的重点有很大不同。软件测试倾向于快速有效地发现软件中存在的缺陷并进行修复;软件可靠性测试更倾向于在软件的真实使用情况下评估软件当前所达到的可靠性水平,发现缺陷并进行软件可靠性增长,直至软件的可靠性水平达到所要求的目标水平,再将软件投入使用。软件可靠性测试多应用于对可靠性有较高要求的安全关键软件,在如核电、航空、航天和铁道等领域应用较多。

2 软件可靠性度量指标

软件可靠性度量中最受关注的指标有三个:软件可靠度、软件失效强度和软件的平均失效前时间。

1) 软件可靠度

软件可靠度指的是系統在规定的工作条件下和规定的时间t内持续完成规定功能的概率(记作R(t))。

若随机变量t表示发生失效的时刻,函数f(t)为随机变量t的概率密度函数,F(t)为其分布函数;P(0≦t≦T)表示从初始时刻到T时刻程序发生失效的概率。所以有:

(1)

(2)

2) 软件失效强度

软件失效强度指的是已工作到时刻t尚未失效的系统,在时刻t后单位时间内发生失效的概率,记作λ(t)。

与失效强度函数、失效概率密度函数、可靠度函数之间的关系为:

(3)

3) 平均失效前时间(Mean Time to Failure, MTTF)

设N0个不可维修的系统在同样的条件下进行试验,测得其全部失效时间为t1,t2,…,tN0,其MTTF为:

(4)

当N0趋向于无穷时,MTTF为系统失效时间这一随机变量的数学期望,因此有:

(5)

3 一般的软件可靠性评估方法

现有的软件可靠性评估模型有很多,它们关注的重点有所不同,按进行软件可靠性评估或预测的阶段不同,可以分为面向软件开发生命周期过程的软件可靠性预测模型与测试阶段或运行阶段的软件可靠性评估模型。

3.1 面向软件开发生命周期过程的软件可靠性模型

面向软件开发生命周期过程的软件可靠性模型可以在软件开发的早期阶段对软件将来所能达到的可靠性水平进行预测,此类模型的依据大多为相似软件历史数据的归纳分析。

Rome试验室提出的Rome模型[1]可以在软件开发的需求分析阶段、设计阶段和编码阶段分别对软件缺陷密度进行早期预测;Keene的开发过程预计模型[2]可以根据软件开发组织和维护组织的能力成熟度模型(Capability Maturity Model for Software, 简称CMM)等级以及软件的源代码规模对软件的可靠性进行预测;雷利模型[2]可以在确定软件开发生命周期阶段总数并获取其中任意至少两个阶段中发现的缺陷数量后,对其他阶段的缺陷数进行预测,并可以在软件开发早期对软件的可靠性水平进行预测。

3.2 测试阶段或运行阶段的软件可靠性评估模型

测试阶段或运行阶段的软件可靠性评估模型较为成熟,模型的分类方式有很多。参照IEEE Std.1663标准[3]可以将软件可靠性评估模型分为3类:呈指数分布的非齐次泊松过程(Non-Homogeneous Poisson Process, NHHP)模型、非指数分布的NHPP模型和贝叶斯(Bayesian)模型。

1) 呈指数分布的NHPP模型

呈指数分布的NHPP模型一般认为累积缺陷数量是一个独立增量过程,可以用指数分布来描述缺陷的增长过程,代表模型有:Jelinski-Moranda模型、Schneidewind模型、通用指数模型、Shooman模型和Musa模型。

2) 非指数分布的NHPP模型

非指数分布的NHPP模型一般认为累积缺陷数量是一个独立增量过程,服从Poisson分布,使用非指数分布来描述缺陷的增长过程,相对于之后的缺陷排除,早期的缺陷排除对失效强度有更大的影响。代表模型有:Musa&Okumoto对数泊松执行时间模型、Duane模型、Yamada的S型模型和Brooks&Motley的二项式和泊松模型。

3) 贝叶斯模型

贝叶斯方法认为可以根据历史数据或专家经验对模型中的参数有一些先验性的认识,通过先验分布来描述先验知识与模型参数之间的关系,从而获得更为准确的评估结果,代表模型为Littlewood-Verrall模型(L-V模型)。

4 高可靠软件的可靠性评估方法

高可靠软件的可靠性评估目前存在的问题是,由于软件可能已经经过了严密的软件测试或是已经进行了容错设计,拥有较高的可靠性水平,要计算其可靠性需要在用户真实使用剖面下进行运行测试并收集失效数据,此时通常很难收集到充足的失效数据或只能获取少量的小样本失效数据。由于上述原因,传统的基于经典概率统计的软件可靠性模型很难得到准确的评估结果。

为解决上述问题,主要有两种思路,一种是如何在小样本失效数据情况下进行更加准确的可靠性评估,另一种是如何获取更多失效数据或扩充已有失效数据,然后再使用经典的软件可靠性模型进行评估。

第一种思路相关的模型有极值统计模型[4],第二种思路相关的模型有基于BootStrap重抽样技术的软件可靠性模型[5]和基于故障注入技术和加速寿命试验原理的软件可靠性评估模型[6]。

4.1 极值统计模型

假定软件失效时间服从母体分布F(x),X是收集的失效数据。对高可靠软件而言,X很可能是位于母体分布F(x)的尾部,而不是母体分布的中心;传统的软件可靠性模型提供与母体分布中心有关的信息,它预先假定失效数据服从某一个先验分布(例如G-O模型假定失效数据服从指数分布),如果选择了一个错误的分布,则预测的结果会有较大误差。极值模型更加关注母体分布的尾部信息,因此对于高可靠性软件来说可以取得更加准确的可靠性评估结果。

4.2 基于BootStrap重抽样技术的软件可靠性模型

BootStrap重抽样方法可以对原始的失效数据集进行N次有放回的重抽样从而产生多个新的失效数据集,在这些新的失效数据集上使用经典的软件可靠性模型分別进行模型参数估计,然后对这些参数的估计值取平均来作为最终结果,进而获取软件的可靠性度量值。实验证明,此方法在小样本失效数据的情况下很多时候可以取得更准确的可靠性评估结果。

4.3 基于故障注入技术和加速寿命试验原理的软件可靠性评估模型

基于故障注入技术和加速寿命试验原理的软件可靠性评估模型的基本思路是通过故障注入技术模拟软件运行环境(硬件、操作系统和支撑软件)的故障,劣化软件的运行环境从而加速被测软件的失效过程,最终可以使软件更快发生失效,这就可以加快软件可靠性测试的过程,更快地获取充足的失效时间数据来进行软件可靠性评估。

5 结束语

总体上高可靠性软件的可靠性评估技术仍不完善。其中,极值统计模型可以在一定程度上解决小样本可靠性评估的问题,但其理论的假设性较强,适用范围有限。基于BootStrap重抽样技术的软件可靠性模型在一些失效数据集上的测试结果较好,但与传统软件可靠性模型的结果差距不大。基于故障注入技术和加速寿命试验原理的软件可靠性评估模型在方法论上可以有效解决高可靠软件的评估问题,但模型方法仍不完善,还需要进一步研究改进。

参考文献:

[1] McCall J, Randell W, Dunham J, et al. Software reliability measurement and testing guidebook[Z]. Technical Report RL-TR-92-52, Rome Laboratory USAF, 1992.

[2] 陆民燕. 软件可靠性工程[M]. 北京: 国防工业出版社, 2011: 282-296.

[3] IEEE Std 1633-2008, Recommend practice on software reliability[S].

[4] Kaufman L M, Dugan J B, Johnson B W. Using statistics of the extremes for software reliability analysis[J]. IEEE Transactions on Reliability, 1999, 48(3):292-299.

[5] Kaneishi T, Dohi T. Parametric bootstrapping for assessing software reliability measures[C]//Proceedings of 17th IEEE Pacific Rim International Symposium on Dependable Computing. IEEE: Pasadena, CA, 2011: 1-9.

[6] 楼俊钢. 小样本情况下的软件可靠性建模研究[D]. 上海: 同济大学, 2010.

猜你喜欢

故障注入
基于软件故障注入的系统验证测试评估技术研究
模拟训练装备故障注入系统研究
嵌入式系统故障注入技术研究
新能源混合动力汽车功能安全台架测试硬件环境一般设计
SM4算法前四轮约减轮故障注入分析
一种多类型总线故障注入系统设计*
面向FPGA的故障注入测试技术研究*
采用修改-回放原理的1553B故障注入方法
某型自动装弹机故障注入系统研究
列车MVB总线故障注入研究