基于SRGM的可靠性分析
2021-02-11毛子剑
毛子剑
(北方民族大学 计算机科学与工程学院,宁夏 银川 750021)
0 引言
人们普遍认为,软件开发是很难预测的,在软件产品完成后,软件质量可能不容易提高。可靠性是软件应用的一个基本属性,具有较高可靠性的软件在交付给用户之后,在实际使用过程中出现故障的概率小,可避免因软件发生故障而给用户造成不必要的损失。因此,软件的性能和可靠性在各个领域都至关重要,若不能保证软件的可靠性,那么会给企业和用户带来巨大的损失。针对此问题,为了提高软件在发布前的可靠性程度,软件可靠性模型可以对软件的可靠性进行预测与评估,并通过软件可靠性增长测试这一方法来不断地提高软件产品的质量[1]。软件可靠性模型可以从已知或假定的条件,例如软件的历史故障数据,预测软件未来可能发生故障的行为并及时修复已发现的软件故障,软件的可靠性程度会随着软件错误的减少而呈现不断增长的趋势,从而有利于对软件的发布时间进行决策。在对软件进行测试的阶段所使用的可靠性模型称之为软件可靠性增长模型,进而应用SRGM对软件测试过程进行预测和评估[2]。
SRGM是评估软件产品质量和可靠性的工具,对可靠性的评测、保证和产品发布具有重要作用[3]。软件可靠性建模的基本方法是对软件过去发生失效的数据进行建模,并能预测未来的失效情况,达到可靠性增长分析的目的[4]。SRGM为软件的预测与评估提供了支持,并提高了软件可靠性,保障了用户的正常使用[5]。经过几十年的不断发展,SRGM已经成为用于软件可靠性分析的最为成熟的方法之一。软件可靠性模型可以分为随机过程模型和非随机过程模型[6],且可靠性模型的种类较多,不同模型评估可靠性的方法也不同。
1 SRGM研究
在软件测试阶段,软件故障定义为在测试过程中系统出现错误。在运用软件可靠性增长模型时,常见的假设有软件系统因发生错误而随机地出现故障行为,以及每次发生软件故障时,对出现的故障及时修复,并且在修复过程中不会额外引入新的软件错误。将SRGM应用到历史故障数据中,可以估计软件可靠性信息,比如软件中剩余的故障数、发现下一个故障的时间及可靠性函数等。
大多数的SRGM假设m(t)是一个满足非齐次泊松过程(Nonhomogeneous Poisson Process,NHPP)的均值函数,其利用在特定时间内检测到的故障数来评估软件失效信息。SRGMS中的m(t)表示实际测试过程的累积检测故障数的函数,它是求解软件可靠性的关键。设{N(t),t≥0}表示软件测试过程中发现故障的计数过程,且m(0)=0,可得
在软件测试阶段,x表示软件发生故障的间隔时间,在(t,t+x)内的软件可靠性R(x∣t)表示为
常用的软件可靠性模型主要有超几何分布模型、Jelinski Moranda(J-M)模型以及G-O模型等,不同可靠性模型含有不同的可靠性参数,在不同的测试环境下来预测和评估可靠性的准确度也各不相同。例如,J-M模型是软件可靠性模型的研究基础,该模型被认为是最早用于软件测试的可靠性模型之一[7],其假设一个软件系统中包含N个故障数且所有故障均具有相同概率,假定条件有:(1)发现故障的概率和当前检测到的故障数成正比;(2)故障检测率在故障发生的时间间隔内保持恒定;(3)在软件测试过程中检测出软件故障,则立即对故障进行修复,且不引入新故障。
J-M模型不需要引入人为错误,根据每次测试的失效间隔时间来预测软件中存在的总故障数N和测试强度φ。由于计算过程较为复杂,所以需要建立方程式并得到令方程两边近似相等的解值,则该数值表示预测软件中的总故障数。然后,建立N值和φ值的关系,由已知的估计值解得测试人员每次执行测试的强度,但J-M模型也存在参数估计误差大的不足。J-M模型应用操作简单且易于理解,所以很多SRGM对该模型的假设条件进行丰富与拓展,从而提出了更为完善的预测软件可靠性的方法。而超几何分布模型应用离散分布来分析软件可靠性[8],它以添加人为错误的方式排除软件中的固有错误,测试人员通过在发现人为错误的过程中发现并排除软件中的固有错误,以此提高软件可靠性。超几何分布模型假设如下:(1)软件中的固有错误数不超过N0,且N0大于0;(2)在测试开始之前,在软件系统中添加N1个人为错误;(3)执行测试,直到找出所有因N1引起的故障。根据每一测试阶段的N1值,运用极大似然法估计软件中N0的个数,从而达到预测软件可靠性的目的。由此可见,不同模型存在各自的优势,但也存在一些不足之处。
2 SRGM建模
在软件测试阶段发生故障行为具有随机性的特点,当遇到故障发生时将其记录下来并进行修复操作,而且还需要考虑是否产生了额外的故障,进而消除潜在的故障,这称为一个可靠性增长的过程。因此,应用SRGM对可靠性进行建模可以有效地评估软件可靠性,根据软件失效数据来预测可靠性程度,最终达到提高软件质量的目的。
使用SRGM对可靠性进行建模的主要步骤包括:(1)测试人员通过运行被测试软件,收集故障数据信息;(2)建立SRGM模型,对测试、修复过程进行建模;(3)进行参数估计并预测软件中剩余的故障总数;(4)根据分析结果评估软件可靠性程度。首先针对一个具体软件提出符合该测试过程的研究假设,然后在执行测试的过程中排除故障并建立排错过程的微分方程式,从而预测出当前测试时间内的累计故障数。最后,通过对估计的参数进行拟合,绘制该软件的可靠性函数图像,从而更好地对所建立的SRGM进行评估与分析。
3 结语
本文介绍了SRGM的基本概念、SRGM在可靠性分析中的应用以及使用SRGM对可靠性进行建模等内容,由此可知SRGM对与预测和评估软件可靠性具有重要作用。通过对比J-M模型和超几何分布模型在可靠性分析方面的应用可知,不同模型的假设条件和分析方法不同,但也存在一些不足之处。SRGM不仅提高了软件的可靠性和质量,而且还有助于开发人员和测试人员确定最佳的软件发布决策。