本发明涉及软件可靠性预测领域,特别是涉及一种软件可靠性预测方法、设备、计算机可读存储介质及产品。
背景技术:
1、随着软件应用的快速发展,准确地预测软件可靠性的增长趋势对于确保软件产品的可靠性至关重要。软件可靠性增长模型(software reliability growth model,srgm)对于准确评估和预测软件可靠性具有无可替代的作用,其不仅为量化控制软件开发和测试成本提供重要的参考,而且是确定软件最优发布时间的重要依据。
2、为了确保软件的可靠性,软件在发布前需要进行测试。软件测试过程中,故障首先被检测,继而被纠正,故障检测过程(fault detection process,fdp)和故障纠正过程(fault correction process,fcp)都是提升软件可靠性的关键过程。在仅考虑fdp的软件可靠性增长建模中,通常假设故障一旦被检测立即被消除,且不会引入新的故障,同时,故障的纠正只需微不足道的时间,但这种假设过于理想化,与实际情况相差甚远。实际上,由于故障的纠正时间取决于故障的复杂性、调试团队的技术水平、可用的人力、软件开发环境等资源条件,因此可能存在故障报告的延迟、故障定位的延迟、故障纠正的延迟等情况,即故障检测后并不会被立即排除或者快速纠正,故障纠正往往是非瞬时的,并且故障纠正的过程中常常会引入新的故障。因此,fdp和fcp并不相同但又彼此相关,对于准确评估和预测软件可靠性来说,需要获得同等的重视。
3、随着人工智能的快速发展,深度学习慢慢渗透到软件可靠性建模领域。考虑到软件失效数据具有显著的时间依赖性,因此时间序列建模方法,如循环神经网络(rerrentneural network,rnn)、长短期记忆网络(long short-term memory,lstm)和门控循环单元(gated recurrent unit,gru)等在捕捉时间特性方面具有优异表现的神经网络模型被率先引入到软件可靠性建模领域。然而,上述循环神经网络及其变体的一些不足,如梯度爆炸、梯度消失以及难以捕捉长期依赖性等问题,又阻碍了上述模型的进一步应用。并且,目前少量已有的、基于深度学习的软件可靠性增长模型仅仅关注到软件故障检测过程,而忽略了软件故障纠正过程,或者虽关注了软件故障纠正过程,但却未能充分考虑两个过程之间的相关性,无法有效支持并行输入处理,导致模型精度、训练时间和成本效率的损失等等。
4、因此,现有的软件可靠性预测模型存在下述不足:
5、第一,基于深度学习的软件可靠性预测模型大多基于循环结构,在梯度消失、梯度爆炸、捕捉长期依赖及训练效率等方面存在不足;
6、第二,大多数基于深度学习的软件可靠性预测模型只考虑了软件故障检测过程,忽略了软件故障纠正过程,或者虽考虑了软件故障纠正过程,但未能充分考虑软件故障检测过程和软件故障纠正过程之间的相关性,并且不支持并行输入处理。
技术实现思路
1、为解决现有技术存在的上述不足,本发明提供了一种软件可靠性预测方法、设备、计算机可读存储介质及产品。
2、为实现上述目的,本发明提供了如下方案:
3、一种软件可靠性预测方法,所述方法为一种基于多任务学习和注意力机制的面向软件故障检测和纠正双过程的软件可靠性预测方法;所述方法包括:
4、对数据集进行归一化和滑动窗口处理,得到训练集和测试集;所述数据集为由软件故障检测数据集和软件故障纠正数据集组成的双过程数据集;
5、构建基于多任务学习和注意力机制的multi-setcn网络;
6、采用所述训练集训练所述multi-setcn网络得到训练误差;
7、采用所述测试集确定训练后的所述multi-setcn网络的测试误差;
8、对比所述训练误差和所述测试误差确定训练后的所述multi-setcn网络是否存在欠拟合问题或过拟合问题;
9、如果存在欠拟合问题或过拟合问题,则调整multi-setcn网络的超参数;如果不存在欠拟合问题或过拟合问题,则将不存在欠拟合问题或过拟合问题的multi-setcn网络作为软件可靠性预测模型;
10、获取待预测软件运行过程数据,并将待预测软件运行过程数据输入至所述软件可靠性预测模型得到可靠性预测结果。
11、可选地,对数据集进行归一化和滑动窗口处理,得到训练集和测试集,具体包括:
12、采用最小-最大归一化方法,将数据集中每个维度的数据映射到0到1区间;
13、使用滑动窗口方法对归一化处理后的数据集进行处理,以划分得到所述训练集和所述测试集。
14、可选地,构建基于多任务学习和注意力机制的multi-setcn网络,具体包括:
15、在时间序列卷积神经网络中引入se注意力机制得到基本模块;
16、复制所述基本模块,以形成包含两个所述基本模块的专家网络;
17、将所述专家网络作为基本单元,利用基本单元形成基础网络层,以构建得到所述multi-setcn网络;每一所述基础网络层包括1个fdp专家网络、1个fcp专家网络、1个共享专家网络以及多个门机制。
18、可选地,多个门机制通过共享专家网络完成multi-setcn网络中各子任务间的信息共享,并利用软参数共享方法控制子任务间的信息共享程度;fdp专家网络和fcp专家网络用于降低multi-setcn网络学到的共享信息和特有场景信息之间的参数干扰。
19、可选地,所述基本模块包括:膨胀因果卷积层、relu激活函数层、se层以及dropout正则化层。
20、可选地,所述基础网络层包括普通层和顶层;所述普通层包含2个子任务门机制和1个共享门机制;所述顶层包含2个子任务门机制。
21、可选地,所述multi-setcn网络采用的损失函数为:
22、
23、其中,mdi表示到时间ti为止收集到的累计失效检测数的观测值,mci表示到时间ti为止收集到的累计失效纠正数的观测值,表示时间点ti的累计失效检测数的预测值,表示时间点ti的累计失效纠正数的预测值,i为时间点,m为第一个训练数据或测试数据的目标值的时间点,n为训练集或测试集最后一个数据的目标值的时间点,loss表示损失函数值,max(*)表示取最大值。
24、一种计算机设备,包括:存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现上述方法的步骤。
25、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
26、一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
27、根据本发明提供的具体实施例,本发明公开了以下技术效果:
28、本发明通过将多任务学习(multi-task learning,mtl)和se(squeeze-and-excitation module)注意力机制集成到时间序列卷积神经网络(temporal convolutionalnetwork,tcn)框架中,提出了multi-setcn网络,并采用由包含软件故障检测数据集和软件故障纠正数据集组成的双过程数据集划分得到的训练集和测试集对所述multi-setcn网络进行训练和测试,以确定其是否存在欠拟合问题或过拟合问题;当multi-setcn网络不存在欠拟合问题或过拟合问题时,将对应的multi-setcn网络作为软件可靠性预测模型,以实现对软件故障检测和软件故障纠正双过程的评估和预测,进而提高模型的预测精度。