基于随机森林和SVM的软件缺陷预测方法研究
发布时间:2021-04-13 12:44
随着软件系统的规模和复杂度日益庞大,正确地找到有缺陷的软件模块需要消耗大量的人力、物力等资源。软件缺陷预测技术通过挖掘、分析软件项目中的历史开发数据来检测潜在有缺陷的软件模块,从而提高开发效率节省开发成本。目前在软件缺陷预测领域,研究者主要使用机器学习的理论来构建缺陷预测模型,这些模型在实际应用中存在软件缺陷数据集中会包含大量的冗余特征、数据集的分布不平衡等问题,这些因素在很大程度上会影响模型的预测性能。本文针对软件缺陷预测过程中存在的问题分别利用随机森林算法对特征进行选择从而删除数据集中的冗余特征,利用SMOTE过采样结合随机欠采样技术改善数据集的不平衡率。本文结合数据集特点选用SVM作为基础分类器,设计了基于随机森林和SVM的软件缺陷预测模型。论文的主要研究内容如下:(1)利用随机森林分类器的分类准确率作为特征可分性的依据通过选取最高分类准确率对应的特征子集实现对特征的选择。(2)结合SMOTE过采样和随机欠采样技术使样本中多数类和少数类的数目达到平衡,同时样本数量降到原来样本数量的一半,提升了分类速度。(3)对于特征选择和数据采样的先后顺序以及数据预处理后作用于采样后的数据集还是...
【文章来源】:浙江工业大学浙江省
【文章页数】:62 页
【学位级别】:硕士
【部分图文】:
软件缺陷预测技术分类示意图
基于随机森林和SVM的软件缺陷预测方法研究7的数目、缺陷密度或缺陷倾向性等。如今有大量研究者根据软件的静态代码特征结合机器学习算法来构建软件缺陷预测模型。通过对软件系统的分析得知,80%的缺陷集中分布于20%的软件模块内[25],为了预测这些缺陷模块研究人员按照预测的目的不同将模型分为基于缺陷分类的预测和基于缺陷数目的预测。基于缺陷分类的预测主要是预测软件模块中是否存在缺陷,从而引导软件测试人员合理安排测试资源。基于缺陷数目的预测主要是为了估计软件系统中存在缺陷模块的个数或缺陷的密度。当前缺陷预测技术主要的研究方向是利用机器学习中的分类算法构建预测模型,本文设计的基于随机森林和SVM的软件缺陷预测模型属于基于缺陷分类的静态预测技术。静态软件缺陷预测技术的工作流程如图2-2所示:图2-2静态软件缺陷预测技术的工作流程Figure2-2.Workflowofstaticsoftwaredefectpredictiontechnology对于缺陷分类的预测可以将缺陷预测简化一个二分类问题[26]。其目标就是预测软件模块内是否含有缺陷,若模块中的缺陷个数大于或等于1,则认为该模块含有缺陷,若模块中缺陷个数等于0,则认为该模块没有缺陷。一般静态软件缺陷预测包含如下四个步骤:(1):挖掘、分析软件仓库中的历史开发数据,选取与软件缺陷相关性较强的度量元,通常为了提高预测的准确性,所选取的度量元应该能够反映软件模块的内在复杂度和代码规模,进而构建软件缺陷数据集。(2):一般原始的缺陷数据集中会存在噪声数据和无关数据,所以需要对数据集进行预处理,然后选择有意义的度量元用于模型训练。(3):选择合适的学习算法从相关数据中学习,从而得到度量元与软件缺陷之间的映射关系,构建缺陷预测模型。
基于随机森林和SVM的软件缺陷预测方法研究9图2-3软件度量方法分类示意图Figure2-3.Schematicdiagramofsoftwaremeasurementmethods在本文中主要使用的是基于软件产品属性确定的度量元,即通过分析软件源代码来设计度量元,描述软件产品的特征,用于产品评估和决策。基于软件产品属性的度量元主要研究的是软件模块的代码规模和软件复杂度等属性。下面重点介绍几种常用的基于软件产品属性的面向过程度量:(1)规模度量软件的规模是较为直观的度量方式,早期的研究人员对程序中代码的具体的行数进行度量[33],例如,Akiyama发现了缺陷数(D)和代码总行数(L)的关系表达式:D=4.86+0.018L;除了代码总行数(LOC)之外,相关的度量元还包括注释行数(LOComment)、空代码行数(LOBlank)、方法行数等,但这些度量元还不能有效地去度量软件系统的规模。(2)复杂度度量软件的复杂度度量主要有面向过程的传统度量和面向对象的度量。面向过程的传统度量是对面向过程的程序设计的方法级别进行的度量,主要包括Halstead[34]以及McCabe度量[35]。Halstead度量主要关注的是程序中出现的可执行代码行的操作数和操作符的数量,代码中的操作数和操作符越多,则相应的程序结构复杂度越高。McCabe度量主要关注的是程序的控制流复杂度,将程序抽象为控制流程图并根据控制流的复杂性来计算程序的复杂性,顺序结构组成的程序在复杂度方面最为简单,而选择和循环构成的环路越多,则程序越复杂。程序复杂度越高,认为程序中存在缺陷的可能性也越高。随着开发方法的不断发展,面向过程的度量已经不能描述对象间的继承关系,研究者们依据代码结构中的继承、耦合、内聚等关系计算代码的复杂度,提出了面向对象度量。面向对象方法也逐渐成为主流开发方法,其特有
【参考文献】:
期刊论文
[1]软件缺陷预测技术研究进展[J]. 宫丽娜,姜淑娟,姜丽. 软件学报. 2019(10)
[2]SVM参数优化及其在储集层评价中的应用研究[J]. 任义丽,米兰,冯周. 信息系统工程. 2019(07)
[3]即时软件缺陷预测研究进展[J]. 蔡亮,范元瑞,鄢萌,夏鑫. 软件学报. 2019(05)
[4]改进的软件缺陷预测模型研究[J]. 刘恺,包月青,赵先锋. 浙江工业大学学报. 2019(02)
[5]孪生支持向量机综述[J]. 安悦瑄,丁世飞,胡继普. 计算机科学. 2018(11)
[6]基于多核字典学习的软件缺陷预测[J]. 王铁建,吴飞,荆晓远. 计算机科学. 2017(12)
[7]基于AUC统计量的随机森林变量重要性评分的研究[J]. 张晓凤,侯艳,李康. 中国卫生统计. 2016(03)
[8]静态软件缺陷预测方法研究[J]. 陈翔,顾庆,刘望舒,刘树龙,倪超. 软件学报. 2016(01)
[9]航天嵌入式软件可信性度量方法及应用研究[J]. 王婧,陈仪香,顾斌,郭向英,王保华,金晟毅,徐建,张居阳. 中国科学:技术科学. 2015(02)
[10]特征选择方法与算法的研究[J]. 李敏,卡米力·木依丁. 计算机技术与发展. 2013(12)
硕士论文
[1]基于动态代价敏感型贝叶斯网络的软件缺陷预测方法研究[D]. 张俊宇.华中师范大学 2016
[2]SVM核参数优化研究与应用[D]. 杨海.浙江大学 2014
[3]随机森林特征选择[D]. 王全才.大连理工大学 2011
[4]BOSS网管软件测试的管理与实践[D]. 梁焕青.北京邮电大学 2006
本文编号:3135321
【文章来源】:浙江工业大学浙江省
【文章页数】:62 页
【学位级别】:硕士
【部分图文】:
软件缺陷预测技术分类示意图
基于随机森林和SVM的软件缺陷预测方法研究7的数目、缺陷密度或缺陷倾向性等。如今有大量研究者根据软件的静态代码特征结合机器学习算法来构建软件缺陷预测模型。通过对软件系统的分析得知,80%的缺陷集中分布于20%的软件模块内[25],为了预测这些缺陷模块研究人员按照预测的目的不同将模型分为基于缺陷分类的预测和基于缺陷数目的预测。基于缺陷分类的预测主要是预测软件模块中是否存在缺陷,从而引导软件测试人员合理安排测试资源。基于缺陷数目的预测主要是为了估计软件系统中存在缺陷模块的个数或缺陷的密度。当前缺陷预测技术主要的研究方向是利用机器学习中的分类算法构建预测模型,本文设计的基于随机森林和SVM的软件缺陷预测模型属于基于缺陷分类的静态预测技术。静态软件缺陷预测技术的工作流程如图2-2所示:图2-2静态软件缺陷预测技术的工作流程Figure2-2.Workflowofstaticsoftwaredefectpredictiontechnology对于缺陷分类的预测可以将缺陷预测简化一个二分类问题[26]。其目标就是预测软件模块内是否含有缺陷,若模块中的缺陷个数大于或等于1,则认为该模块含有缺陷,若模块中缺陷个数等于0,则认为该模块没有缺陷。一般静态软件缺陷预测包含如下四个步骤:(1):挖掘、分析软件仓库中的历史开发数据,选取与软件缺陷相关性较强的度量元,通常为了提高预测的准确性,所选取的度量元应该能够反映软件模块的内在复杂度和代码规模,进而构建软件缺陷数据集。(2):一般原始的缺陷数据集中会存在噪声数据和无关数据,所以需要对数据集进行预处理,然后选择有意义的度量元用于模型训练。(3):选择合适的学习算法从相关数据中学习,从而得到度量元与软件缺陷之间的映射关系,构建缺陷预测模型。
基于随机森林和SVM的软件缺陷预测方法研究9图2-3软件度量方法分类示意图Figure2-3.Schematicdiagramofsoftwaremeasurementmethods在本文中主要使用的是基于软件产品属性确定的度量元,即通过分析软件源代码来设计度量元,描述软件产品的特征,用于产品评估和决策。基于软件产品属性的度量元主要研究的是软件模块的代码规模和软件复杂度等属性。下面重点介绍几种常用的基于软件产品属性的面向过程度量:(1)规模度量软件的规模是较为直观的度量方式,早期的研究人员对程序中代码的具体的行数进行度量[33],例如,Akiyama发现了缺陷数(D)和代码总行数(L)的关系表达式:D=4.86+0.018L;除了代码总行数(LOC)之外,相关的度量元还包括注释行数(LOComment)、空代码行数(LOBlank)、方法行数等,但这些度量元还不能有效地去度量软件系统的规模。(2)复杂度度量软件的复杂度度量主要有面向过程的传统度量和面向对象的度量。面向过程的传统度量是对面向过程的程序设计的方法级别进行的度量,主要包括Halstead[34]以及McCabe度量[35]。Halstead度量主要关注的是程序中出现的可执行代码行的操作数和操作符的数量,代码中的操作数和操作符越多,则相应的程序结构复杂度越高。McCabe度量主要关注的是程序的控制流复杂度,将程序抽象为控制流程图并根据控制流的复杂性来计算程序的复杂性,顺序结构组成的程序在复杂度方面最为简单,而选择和循环构成的环路越多,则程序越复杂。程序复杂度越高,认为程序中存在缺陷的可能性也越高。随着开发方法的不断发展,面向过程的度量已经不能描述对象间的继承关系,研究者们依据代码结构中的继承、耦合、内聚等关系计算代码的复杂度,提出了面向对象度量。面向对象方法也逐渐成为主流开发方法,其特有
【参考文献】:
期刊论文
[1]软件缺陷预测技术研究进展[J]. 宫丽娜,姜淑娟,姜丽. 软件学报. 2019(10)
[2]SVM参数优化及其在储集层评价中的应用研究[J]. 任义丽,米兰,冯周. 信息系统工程. 2019(07)
[3]即时软件缺陷预测研究进展[J]. 蔡亮,范元瑞,鄢萌,夏鑫. 软件学报. 2019(05)
[4]改进的软件缺陷预测模型研究[J]. 刘恺,包月青,赵先锋. 浙江工业大学学报. 2019(02)
[5]孪生支持向量机综述[J]. 安悦瑄,丁世飞,胡继普. 计算机科学. 2018(11)
[6]基于多核字典学习的软件缺陷预测[J]. 王铁建,吴飞,荆晓远. 计算机科学. 2017(12)
[7]基于AUC统计量的随机森林变量重要性评分的研究[J]. 张晓凤,侯艳,李康. 中国卫生统计. 2016(03)
[8]静态软件缺陷预测方法研究[J]. 陈翔,顾庆,刘望舒,刘树龙,倪超. 软件学报. 2016(01)
[9]航天嵌入式软件可信性度量方法及应用研究[J]. 王婧,陈仪香,顾斌,郭向英,王保华,金晟毅,徐建,张居阳. 中国科学:技术科学. 2015(02)
[10]特征选择方法与算法的研究[J]. 李敏,卡米力·木依丁. 计算机技术与发展. 2013(12)
硕士论文
[1]基于动态代价敏感型贝叶斯网络的软件缺陷预测方法研究[D]. 张俊宇.华中师范大学 2016
[2]SVM核参数优化研究与应用[D]. 杨海.浙江大学 2014
[3]随机森林特征选择[D]. 王全才.大连理工大学 2011
[4]BOSS网管软件测试的管理与实践[D]. 梁焕青.北京邮电大学 2006
本文编号:3135321
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3135321.html