[发明专利]一种基于软件网络的缺陷高风险模块的识别方法有效
申请号: | 201910318037.1 | 申请日: | 2019-04-19 |
公开(公告)号: | CN110147321B | 公开(公告)日: | 2020-11-24 |
发明(设计)人: | 艾骏;杨益文;苏文翥;王飞;郭皓然;邹卓良 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06K9/62 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 祗志洁 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 软件 网络 缺陷 风险 模块 识别 方法 | ||
本发明提出一种基于软件网络的缺陷高风险模块识别方法,属于软件复杂网络领域。包括:步骤一,构建自适应分类器,自适应分类器中包含多个分类器;步骤二,进行自适应特征选择;步骤三,进行自适应阈值寻优;步骤四,进行自适应分类器内部参数调优;步骤五,进行自适应最优预测模型的选择,然后利用最优预测模型对待测软件网络进行缺陷高风险模块识别。本发明方法无论针对何种类型的缺陷数据集,都能根据数据集自身的特点完成自适应分类器的构建、自适应特征选择、自适应阈值寻优、自适应分类器内部参数调优、自适应最优预测模型的选择等五个方面的内容,取得最好的缺陷预测结果,识别出高风险软件模块。
技术领域
本发明应用于软件复杂网络领域,是一种基于软件网络的缺陷高风险模块识别方法。
背景技术
随着互联网的飞速发展,软件具备越来越丰富的功能,帮助人们开展各项生产活动。软件是否安全可靠得到更多的重视,如何尽早的识别出软件中的缺陷高风险模块已经成为热门的研究领域。准确识别具有缺陷高风险的模块可以提高软件的质量、降低开发的成本。
国内外大量的研究已经表明,软件80%的缺陷存在于20%的软件代码中。但是在实际的软件测试中,往往采用均匀覆盖的原则,要求需求和语句100%覆盖,实质上浪费了大量的测试资源。在一些软件三方测试中,测试用例的命中率往往不足1%,甚至更低。而随着软件工程化程度的不断提高和大数据技术的不断实用化,大量的企业和使用方已经积累了越来越多的历史产品缺陷案例,然后再有的放矢的开展测试工作已经成为了国内提高测试效率、发现更多实质性缺陷的一种趋势。国外的一些研究表明使用缺陷预测模型获得的缺陷检测概率(PD)可以达到71%,高于软件代码审查的检查概率(60%),更高于纯黑盒测试的检测率。通过研究大量的实例发现,依据机器学习中的分类器算法、关联规则等建立模型取得了很好的缺陷高风险预测效果,并且建立在缺陷预测之上的软件测试与普通的软件测试相比,显著的提高了缺陷检测率,减少了测试用例的数量,缩短了测试时间,对于提高软件可靠性有着显著的作用。
目前缺陷预测模型所使用的技术主要有单变量统计分析、多变量统计分析、统计分析联合专家分析、机器学习、以及机器学习联合统计分析等(参考文献[1])。单变量统计分析考虑特征较少,例如只关注代码行数与缺陷是否相关;多变量统计分析会分析多个特征与缺陷的相关性。机器学习方法主要有分类器算法、聚类算法、关联规则等。按照Catal的分析,基于机器学习算法的缺陷预测模型在2005年之后大规模显现,截止到2009年,基于机器学习方法的相关论文占总论文数量的66%。
根据缺陷预测目标的不同,采用的机器学习方法有所差异。陈翔,顾庆等在参考文献1中对机器学习的方法进行了很好的总结,他们指出,若程序模块设置为细粒度,例如类级别或文件级别,则以预测模块的缺陷倾向性为目标,常采用分类方法,包括Logistic回归、贝叶斯网络和决策树等;若设置为粗粒度,比如包级别或子系统级别,则以预测缺陷数或缺陷密度为目标,常使用回归分析方法。除了常用的机器学习方法外,例如半监督学习和主动学习等也开始逐渐应用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910318037.1/2.html,转载请声明来源钻瓜专利网。