基于机器学习的软件缺陷预测方法研究与实现文献综述

 2022-11-30 14:40:25

文 献 综 述

【摘要】随着软件在日常生活中的作用提高,软件缺陷成为人们关注的问题。利用机器学习进行软件缺陷预测成为近些年来软件工程师们研究的重要方向。基于机器学习的软件缺陷预测技术成果丰硕。本文主要对近年来基于机器学习的软件缺陷预测技术进行回顾和评述。

【关键字】机器学习;深度学习;软件缺陷;缺陷预测

引言

软件缺陷是指没有满足预期或者规定的用途。随着社会信息化持续深入发展,软件在我们的日常生活中越来越普遍。但随着软件在生活中利用率的提高,软件缺陷导致的软件出错、失效、崩溃等质量问题层出不穷。并且软件缺陷无处不在,我们不可能排除所有的软件缺陷。这导致了人们对于软件的信赖程度降低,如何有效的预测软件缺陷一直是软件工程师研究的重要领域,在提高软件质量、降低维护成本等方面发挥着重要作用。近年来,软件预测领域逐渐受到国内外学者的广泛关注,而基于机器学习的软件缺陷预测技术是当今软件技术人员研究的热点内容[1]。软件缺陷预测是根据软件历史开发数据以及已发现的缺陷,借助机器学习等方法来预测软件项目中的缺陷数目和类型等[2]。本文主要收集了近几年来,有关利用机器学习进行软件缺陷预测的文献,并进行了简单分析比较。

国内外研究现状

软件缺陷预测技术大体上分为静态和动态两种缺陷预测技术[3]。静态预测技术,主要是指基于缺陷相关的度量数据,对缺陷的数量或者分布进行预测的技术;而动态技术则是基于缺陷或者失效产生的时间,对系统缺陷随时间的分布进行预测的技术。现在静态预测技术是我们主要的研究方向。

吴超、许建平、陈丽蓉等人将PCA-BP神经网络应用于软件缺陷预测[4],提出了一种利用PCA-BP模糊神经网络的软件缺陷预测方法。这种方法比运用BP神经网络的方法收敛速度更快、预测准确度更高。但是没有对缺陷进行分类处理。Dyana Rashid Ibrahim等人将特征选择和随机森林算法与软件缺陷预测结合起来[5],并将这种方法与原有的遗传搜索算法和蚁群算法进行了比较,发现随机森林算法和特征选择在软件缺陷预测方面的准确度较高、缺陷分类更准确。王科欣、王胜利研究基于贝叶斯网络的软件缺陷预测[6],发现贝叶斯算法在简单的网络结构中学习算法更简单,具有更好的适用性,但是需要确定合适的变量顺序。Tiejian Wang等人[7]提出基于多内核集成学习的软件缺陷预测技术,并将该方法与朴素贝叶斯法、压缩C4.5决策树等方法在NASA MDP数据集上做对比,发现该方法预测准确度更高。傅艺绮、董威等[8]人研究了贝叶斯网络、逻辑回归、决策树算法在软件缺陷预测不同评价指标上的优势,并结合stacking集成学习方法提出了将不同预测算法的预测结果作为软件度量并进行再次预测的基于组合机器学习算法的软件缺陷预测模型,并在Eclipse数据集上证明了其有效性。于巧等[9]研究发现数据集的分类不平衡也会对预测模型的预测结果产生影响。C4.5、RIPPER和SMO这3种预测模型的性能随着不平衡率的增大而下降,而代价敏感学习和集成学习能够有效提高它们在分类不平衡时的性能和性能稳定程度。与上述3种模型相比,逻辑回归、朴素贝叶斯和随机森林等模型的性能更加稳定。

以上所提到的方法都属于浅层机器学习,他们有一个共同的缺陷,那就是不能准确处理非结构化数据之间的复杂关系。当数据量达到一定程度时,浅层结构算法的学习能力不如深层结构算法[10]。目前常见的深度学习算法都是基于神经网络的[11]。Yang等人[12]进行了一个大规模的实时缺陷预测的实证研究并提出使用热门的深度学习方法建立一个预测模型Deeper。刘童[13]将Deeper用来生成高级特征的深度信念网络中最后一层的逻辑回归分类器改进为基于Sigmoid核函数的SVM分类器。经过实验和分析发现,改进后的方法在相同数据集上整体上比Deeper更有效,同时提出了用迁移成分分析(TCA)处理数据集不平衡的问题。周志华等[14]提出了一种新型的深度结构学习算法——深度森林,它是一种基于决策树的多层分类器,由多粒度扫描和级联森林两部分构成,每一层都是随机森林和完全随机树森林的组合。深度森林开辟了一条除深度神经网络之外的新道路。薛参观等人将深度森林应用于软件缺陷预测[15]。由于软件缺陷预测是一个二元分类问题,即有缺陷倾向和无缺陷倾向,如果将两个概率进行特征向量聚合将造成特征空间冗余,增加算法空间复杂度。同时对空间无关联的特征会丢失重要信息。针对这些问题,他们还提出了深度森林的改进方法——深度堆叠森林。

卷积神经网络(CNN)是一种带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量,也可以减少网络的参数个数,缓解模型的过拟合问题[16]。Szegedy 等人[17]大大增加了CNN的深度,提出了一个超过20层的CNN结构(GoogleNet)。在GoogleNet结构中采用了3种类型的卷积操作,该结构的主要特点是提升了计算资源的利用率,减少了参数,而且准确率更高。Simonyan等人[18]通过在现有的网络结构中不断增加具有3times;3卷积核的卷积层来增加网络的深度,发现当权值层数达到16~19时,模型的性能能够得到有效提升。

总结

现在国内外对基于机器学习的软件缺陷预测技术的研究发展迅速,为现实生活中利用机器学习进行软件缺陷预测提供了多种不同的选择,可以有效降低软件缺陷密度和软件维护成本。CNN与其他浅层学习模型相比,是深度学习的典型算法之一,可以应对大量关系复杂的数据,具有较强的适用性。他与其他深层学习模型相比,通过权值共享减少了需要训练的权值个数、降低了网络的计算复杂度,同时通过下采样操作使得网络对输入的局部变换具有一定的不变性,提升了网络的泛化能力。虽然CNN在一些方面有很大的优势,但是如何确定使用什么网络结构,使用多少层,每层多少个神经元是一个很大的问题。同时,如果训练测试集和测试数据集分布不同也会影响识别结果。

参考文献

  1. 马樱. 基于机器学习的软件缺陷预测技术研究[D]. 电子科技大学, 2012.
  2. 陈翔,顾庆,刘望舒, 等.静态软件缺陷预测方法研究[J].软件学报,2016,27(1):1-25. DOI:10.13328/j.cnki.jos.004923.
  3. 王青,WU Shu-Jian,李明树.软件缺陷预测技术[J].软件学报,2008,19(7):1565-1580. DOI:10.3724/SP.J.1001.2008.01565.
  4. 吴超,许建平,陈丽容.基于生命周期的软件缺陷预测技术[J].计算机工程与设计,2009,30(12):2956-2959.
  5. Ibrahim D , Ghnemat R , Hudaib A . Software Defect Prediction using Feature Selection and Random Forest Algorithm[C].International Conference on New Trends in Computing Sciences. IEEE Computer Society, 2017.
  6. 王科欣,王胜利.基于贝叶斯网络技术的软件缺陷预测与故障诊断[J].微型电脑应用,2009,25(11):31-33. DOI:10.3969/j.issn.1007-757X.2009.11.012.
  7. Wang T , Zhang Z , Jing X , et al. Multiple kernel ensemble learning for software defect prediction[J]. Automated Software Engineering, 2016, 23(4):569-590.
  8. 傅艺绮,董威,尹良泽, 等.基于组合机器学习算法的软件缺陷预测模型[J].计算机研究与发展,2017,54(3):633-641. DOI:10.7544/issn1000-1239.2017.20151052.
  9. 于巧,姜淑娟,张艳梅,王兴亚,高鹏飞,钱俊彦.分类不平衡对软件缺陷预测模型性能的影响研究[J].计算机学报,2018,41(04):809-824.
  10. 孙志军,薛磊, 许阳明, et al. 深度学习研究综述[J]. 计算机应用研究, 2012,29(8):2806-2810.
  11. Deng L,Yu D.Deep learning: methods and applications[J].Foundationsamp;Trends in Signal Processing,2014,7(3):197-387.
  12. Yang X,Lo D,Xia X,et al.Deep Learning for Just-in-Time Defect Prediction[C]//2015 IEEE International Conference on Software Quality,Reliability and Security.IEEE,2015.
  13. 刘童.基于机器学习算法的软件缺陷预测技术研究[D].华中师范大学,2018.
  14. ZHOU Z H,FENG J.Deep Forest:Towards An Alternative toDeep Neural Networks[C]∥IJCAI-17.2017:3553-3559.
  15. 薛参观,燕雪峰.基于改进深度森林算法的软件缺陷预测[J].计算机科学,2018,45(8):160-165. DOI:10.11896/j.issn.1002-137X.2018.08.029.
  16. 刘健,袁谦,吴广,等.卷积神经网络综述[J].计算机时代,2018,(11):19-23. DOI:10.16644/j.cnki.cn33-1094/tp.2018.11.005.
  17. Szegedy, Christian,Liu, Wei,Jia, Yangqing, et al.Going Deeper with Convolutions[J].,2014.
  18. Simonyan K , Zisserman A . Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. Computer Science, 2014:1-12.

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版