1. 引言
软件可靠性是衡量软件系统在指定时间段内无故障地执行其预期功能的能力的指标,这是软件开发和维护的一个关键方面,因为软件故障可能会产生严重的后果,例如经济损失、声誉损害,甚至安全隐患,可靠的软件可以一致和准确地执行其预期功能,而不会造成任何意外或不良结果。软件可靠性受各种因素的影响,例如软件的复杂性、代码的质量、测试和验证过程以及操作环境。随着软件系统变得越来越复杂和互联,研究其可靠性变得越来越具有挑战性。
所以对软件可靠性的模型选择以及预测其未来增长趋势显得尤为重要,过去已有很多软件可靠性模型被提出,绝大多数模型是基于非齐次泊松过程(NHPP)类的软件可靠性模型。Yang等 [1] 介绍了关于NHPP类开源软件可靠性增长模型的极大似然估计。Jelinski等 [2] 介绍了软件可靠性的研究。Zhang等 [3] 分析了影响软件可靠性的因素。最经典的模型为G-O模型,Jeske等 [4] 提出了关于G-O模型的极大似然估计。Lavanya等 [5] 研究了通过aco与mle的方法去估计G-O模型中的参数。同样用的很多的为ISS模型,对于SRGM没有透明的解释用于累积软件误差的方差估计,Lee等 [6] 提出了利用ISS来建立具有置信区间的SRGM。Erto等 [7] 提出了一种新的广义下的ISS模型,它的特点是允许对每个故障函数的非单调故障率建模。Sagar等 [8] 结合了威布尔分布方法和ISS模型。Pradhan等 [9] 提出将测量工作量函数(TFF)作为时间变化故障率参与到广义ISS模型中。Wang等 [10] 考虑将ISS模型引入开源软件可靠性模型。Shrivastava等 [11] 通过考虑变化点前后的不同分布函数,开发了一个框架,将变化点纳入混合软件可靠性增长模型的开发中。Yang等 [12] 提出一种考虑故障检测和纠错过程的屏蔽数据开源软件增长可靠性模型框架。
为了解决大规模复杂软甲的可靠性预测和分析问题,软件可靠性模型需要具备处理多个参数的能力,贝叶斯网络表现出很强的适应涉及复杂变异因素的问题的能力,Bai等 [13] 开发了一个扩展的马尔可夫贝叶斯网络,用于对具有操作配置文件的软件可靠性预测进行建模。Ruggeri等 [14] 对贝叶斯软件可靠性建模进展进行了介绍。Wiper等 [15] 分析了软件可靠性模型,其中软件度量形式的协变量信息可用性,使用神经网络回归,根据故障间隔时间或故障次数来估计模型中的故障率。Aktekin等 [16] 开发了一个在软件可靠性方面调试不完善的模型,用贝叶斯分析,获取模型参数。
机器学习(ML)技术在软件可靠性预测中的应用已经显示出细致而显着的结果,Jaiswal等 [17] 提出了使用ML技术进行软件可靠性预测,并根据选定的性能标准对其进行评估。Habtemariam等 [18] 介绍了利用机器学习技术预测软件可靠性的系统文献综述。Mohanty等 [19] 采用机器学习技术,来准确预测软件可靠性。
综上所述,本文的想法在于利用GPR模型来面对大规模复杂软件系统的可靠性预测和分析问题,增强预测的准确性,基于高斯过程回归的可靠性建模可以通过从历史数据中学习参数来计算复杂软件系统的初始可靠性。余下部分主要如下,第二章主要介绍了高斯过程回归的软件可靠性建模以及模型评价标准,第三章是案例分析,以及与G-O模型、ISS模型的对比。第四章是结论。
2. 基于高斯过程回归的软件可靠性模型
2.1. 高斯过程回归的软件可靠性建模
高斯过程回归是来自于贝叶斯方法的一种非参数模型,高斯过程定义了一个先验函数,该函数在观察到先验分布中的一些值后转换为后验函数。本文只对一维高斯回归进行解释,对于训练集
。
为输入数据,
为对应的输出数据。目的是通过样本来学习,经过训练后,得出
和
的函数关系,并用新的测试集
来预测
。
将训练集
。其中
为时间,
为t时刻的累计故障数,将
代到(1)式,对于给定S组训练样本
有回归方程如下:
(1)
其中,
为学习样本,
为对应输出数据;
是均值为0、协方差为K的高斯过程;
由于高斯回归不需要先验知识,所以是从数据中训练后得到先验分布:
(2)
而高斯回归中任意有限维的随机变量都服从高斯分布,所以对新输入的时间
以及对应预测故障数
也服从上述高斯分布,所以:
(3)
再取边缘分布,有:
(4)
其中,
的均值
(5)
协方差
(6)
又上述可知,由于讲高斯过程中的均值预设为0,所以完全由协方差函数决定,即可以通过(6)来算出预测值
以及其方差,所以协方差函数的选取尤为重要,本文选用的是径向基(RBF)核函数作协方差函数,RBF是使用的最多的一种核函数,用于机器学习中的各种任务,如分类、回归和聚类。
2.2. 模型评价标准
本文将提出的GPR模型与G-O模型、ISS模型进行对比。选用RMSE和MAE作为评价模型拟合程度的指标:
均方根误差(RMSE):预测值与实际值偏差的平方和与观察次数m比值的平方根:
(7)
其中
为实际值,
为预测值。RMSE更小说明效果更好。
平均绝对误差(MAE):
(8)
其中
为实际值,
为预测值。m为回归数据的个数,MAE越小表示模型的表现更好。
3. 案例分析
3.1. 数据介绍
3.1.1. 数据集1
本文选取两组数据进行研究,各数据均来自用户缺陷跟踪系统。数据集1为TOMCAT服务器软件,Apache Tomcat,通常简称为Tomcat,是由Apache软件基金会开发的开源Web服务器和servlet容器。它用于为Java应用程序提供服务,并为运行基于Java的Web应用程序(如JavaServer Pages (JSP)和Java Servlets)提供环境。本文从缺陷系统中提取了TOMCAT3-11的2000年8月到2023年5月共计274个月的数据,失效数据表如表1所示。其中第1~193月作为训练集,第194~274月作为预测集。

Table 1. Accumulated failure data of TOMCAT3-11
表1. TOMCAT3-11的累计失效数据
3.1.2. 数据集2
数据集2来源于Apache HTTP,它是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。本文从缺陷系统中提取了Apache httpd-2、Apache httpd-1.3、Apache httpd-test的2002年3月到2023年3月共计250个月的累计失效数据。失效数据表如表2所示。其中第1个月~176个月作为训练集,第177个月~第250个月作为预测集。

Table 2. Accumulated failure data of apache httpd
表2. Apache httpd的累计失效数据
3.2. 模型性能比较分析
3.2.1. 数据集1性能对比
通过使用2.1节提出的模型,并使用3.1的数据集进行训练.我们得到了G-O模型以及ISS模型的参数估计结果和模型比较结果,如表3所示,从表中可以得出,在训练集方面,GPR的RMSE要比G-O模型以及ISS模型的RMSE要低,并且GPR的MAE也比G-O模型以及ISS模型的MAE要低,说明GPR模型拟合效果较好,其次是ISS模型,最差的是G-O模型。在测试集方面,GPR的RMSE以及MAE要远低于G-O模型以及ISS模型的RMSE和MAE,说明GPR模型的预测效果更好,其次是ISS模型,预测效果最差是G-O模型。图1是数据集1的效果图,训练集用虚线表示,测试集用实线表示。

Table 3. Parameter estimation and model comparison results for training set 1
表3. 训练集1的参数估计和模型比较结果
3.2.2. 数据集2性能对比
如表4所示,在训练集中,GPR的RMSE和MAE都要低于G-O模型以及ISS模型的RMSE和MAE,说明GPR模型的拟合效果更好,在测试集中,GPR的RMSE和MAE也要远远低于G-O模型以及ISS模型的RMSE和MAE,说明GPR模型的预测效果更好,ISS模型预测效果也不错,最差的是G-O模型。图2是数据2的效果图。

Table 4. Parameter estimation and model comparison results for training set 2
表4. 训练集2的参数估计和模型比较结果
4. 结论
随着互联网的发展,软件的规模越来越大,传统可靠性模型预测方法去预测越来越难,拟合度也没有太好,基于现代软件的规模,利用基于贝叶斯框架的高斯过程回归去拟合累计故障数据,建立预测的模型,并与其他两种传统可靠性模型进行了比较,结果表明,本文提出的GPR在准确性和效率方面优于它们,是一种不错的可靠性预测方法,为软件可靠性预测领域提供了有价值的贡献。
基金项目
国家自然科学基金资助项目(71901078);贵州省电力大数据重点实验室(黔科合计Z字[2015] 4001)。
NOTES
*通讯作者。