CN107943704A - 一种基于深度森林网络的软件缺陷预测方法 - Google Patents
一种基于深度森林网络的软件缺陷预测方法 Download PDFInfo
- Publication number
- CN107943704A CN107943704A CN201711290710.2A CN201711290710A CN107943704A CN 107943704 A CN107943704 A CN 107943704A CN 201711290710 A CN201711290710 A CN 201711290710A CN 107943704 A CN107943704 A CN 107943704A
- Authority
- CN
- China
- Prior art keywords
- defects
- grader
- failure prediction
- network
- forest
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2415—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于深度森林网络的软件缺陷预测方法。本发明对程序模块按照设定好的度量进行相关代码特征数据提取,筛选出与缺陷相关度高的代码特征,构建多个随机森林和完全随机森林模型,联成缺陷预测网络,将缺陷特征向量随机切片到缺陷预测网络进行训练,形成缺陷预测的分类器,与真实标记的数据进行对比得到最终的缺陷预测分类器。本发明克服了过去整体的缺陷预测精度不高的缺陷。本发明从深度森林网络的角度,结合多粒度扫描,级联森林等技术来构建缺陷预测分类器,提供有效的代码缺陷预测,帮助开发者合理使用测试资源,大大缩短了软件开发周期。
Description
技术领域
本发明属于软件分析与测试领域,特别涉及一种基于深度森林网络的软件缺陷预测方法。
背景技术
软件缺陷(software defect)产生于开发人员的编码过程中,需求理解不正确、软件开发过程不合理或开发人员的经验不足,均有可能产生软件缺陷.而含有缺陷的软件在运行时可能会产生意料之外的结果或行为,严重的时候会给企业造成巨大的经济损失,甚至会威胁到人们的生命安全.在软件项目的开发生命周期中,检测出内在缺陷的时间越晚,修复该缺陷的代价也越高.尤其在软件发布后,检测和修复缺陷的代价将大幅度增加.因此,项目主管借助软件测试或代码审查等软件质量保障手段,希望能够在软件部署前尽可能多地检测出内在缺陷.但是,若关注所有的程序模块会消耗大量的人力物力,因此,项目主管希望能够预先识别出可能含有缺陷的程序模块,并对其分配足够的测试资源。
在本发明作出之前,为了帮助软件开发人员尽可能地节省发现缺陷的成本,就需要尽可能地提高缺陷预测的精度,对于软件缺陷预测的研究主要集中在对于软件预测度量的构建和预测方法的设计。目前缺陷预测领域越来越多的利用机器学习的方法来构建分类器,但是由于目前数据集中存在的维数灾难问题和特征子集选择方法不够成熟,导致某些机器学习的分类器(如基于随机森林的缺陷预测分类器只能在大规模标记数据上取得较好的效果,而基于朴素贝叶斯的缺陷预测分类器只能在小规模数据上取得较好的效果)因此整体的缺陷预测精度不高,达不到工业级别所需要的精度要求。
发明内容
本发明的目的就是要克服上述缺陷,研发出一种基于深度森林网络的软件缺陷预测方法。
本发明技术方法是:
一种基于深度森林网络的代码缺陷预测方法,其主要技术特征在于如下步骤:
(1)挖掘代码历史仓库,抽取程序模块,对程序模块按照设定好的度量进行相关代码特征数据提取。
(2)将步骤(1)代码特征进行多粒度扫描,筛选出与缺陷相关度高的代码特征。
(3)利用步骤(2)中的缺陷特征构建多个随机森林和完全随机森林模型。
(4)将步骤(3)的多个随机森林级联成缺陷预测网络。
(5)对步骤(2)的缺陷特征向量按照设定比例进行随机切片,输入到步骤(4)中建立的缺陷预测网络进行训练,形成缺陷预测的分类器。
(6)将步骤(5)切片剩余的数据输入到缺陷预测分类器中,与真实标记的数据进行对比,验证训练效果,根据结果调整训练参数后得到最终的缺陷预测分类器。
本发明的优点和效果在于从深度森林网络的角度,结合多粒度扫描,级联森林等技术来构建缺陷预测分类器,提供有效的代码缺陷预测,帮助开发者合理使用测试资源,大大缩短了软件开发周期。具体说,主要有如下一些优点:
(1)目前软件预测方法只能在一些特定的数据集上取得一些精度较好的结果,但是其离工业应用还有一定的差距,本方法创新性地将机器学习方法深度森林应用到缺陷预测中,能够得到可靠的高精度分类器。
(2)本方法在已有的科学代码度量的前提下,利用多粒度扫描算法可以有效的筛选出适合缺陷预测的度量,从而减少训练集的采样,节省资源。
(3)本方法构建多层森林树的缺陷预测网络,可以在训练少量的数据集的情况下,获得良好的预测精度,大大节省了数据标记的成本。
附图说明
图1——本发明流程示意图。
图2——本发明中随机森林的示例图。
图3——本发明中预测模型的示例图。
图4——本发明中缺陷预测网络进行预测的示例图。
具体实施方式
本发明的技术思路是:
本发明主要帮助软件开发者和维护者更有效地检测软件的缺陷,从而提高软件的质量。首先选取真实的项目数据,按照设定好的度量进行数据提取,随后进行多粒度扫描筛选特征,之后构建多个机器学习分类器将并其级联组合形成新的分类器,输入切片的特征向量训练分类器,之后将待数据预测的数据输入到训练好的分类器,返回高精度的结果。高精度的预测结果可以极大地引导开发者进行代码缺陷的判断和维护,从而减少测试资源的投入,降低软件开发的成本。
下面具体说明本发明。
如图1所示,其步骤如下:
步骤1).对源代码按照设定好的度量进行特征数据提取。
部分数据处理如表一所示:
表一项目特征值采集表
注:该表格中的特征值采样是根据著名的CK度量(如表二)进行的,采样的数据分别代表各指标(指标代表的含义可见表二)的值。第一列和第二列代表真实项目的版本以及项目中包含的实例。最后一列是标签数据,即表示该示例是否含有缺陷,1为有缺陷,0为没有缺陷。表中每一行代表一个实例的度量值。例如第二行代表1.6版本中CxfComponent实例含有5个加权方法数,3个继承数深度,0个孩子节点数,与7个类存在耦合关系,该类可以调用10个外部方法,类中没有方法访问一个或多个属性。
表二、部分CK度量介绍
步骤2).将步骤(1)特征进行多粒度扫描,筛选出合理的特征。多粒度扫描过程就是对输入一个完整的P维样本,然后通过一个长度为k的采样窗口进行滑动采样,以下是筛选后的部分数据:
表三、多粒度扫描筛选表
注:表三的数据会作为森林网络的训练数据。
步骤(3)构建多个随机森林和完全随机森林分类器。随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。完全随机树森林是指使用全部特征的树森林。由于树分类器为一种抽象的表示形式,图2可以简单帮助理解,图2表示一个随机森林,由图2可知随机森林中包含多棵决策树。每棵决策树都可以对样本进行决策,最后森林综合各棵决策树的决策结果,输出分类情况。
步骤(4)将步骤(3)的随机森林级联成森林网络。示例模型如图3所示。其中输入为特征向量,菱形框的森林代表完全随机森林,矩形框的森林代表随机森林。经过多层森林的决策(Level代表森林网络的层数),最终输出预测结果。
步骤(5)对步骤(2)的特征向量按照设定比例进行随机切片,输入到缺陷预测网络进行训练。其训练的示例模型可见图4。其中X代表切片之后的特征向量,切片的过程即对于多粒度扫描之后特征向量进行随机抽样,作为森林网络的输入。该模型最终得到的特征向量值是由多个随机森林的特征值取平均所得。
步骤(6)将步骤(5)切片剩余的数据输入到分类器中,验证训练效果,调整后得到高精度分类器。测试模型的示例与训练模型相似,如图中X输入到各个随机森林中进行预测,每个随机森林返回一个列向量,表示该模块含有缺陷的概率和不含有缺陷的概率,图中第一个随机森林得出该模块80%的可能性含有缺陷。20%的可能性不含有缺陷。最后缺陷预测网络对这些随机森林的预测结果取平均,得到该模块80%可能性含有缺陷,20%的可能性不含有缺陷,所以最终预测结果为该模块含有缺陷,然后将结果与标记的数据进行比较,如标记显示该模块为负类,则代表预测成功。其简单过程仍可参照图4。最终我们可以得到预测的结果如表四所示:
表四、预测结果
表四中的prediction这列代表缺陷预测分类器给出对这个实例的预测结果,从表中可以看出分类器共对22个实例进行预测,预测成功数为21个实例(其中RandomLoadBalancer这个实例预测错误)。在缺陷预测领域,我们以准确率(accuracy),精确度(precision)以及召回率(recall)作为性能的评估标准。具体计算公式如下:
注:公式中TP表示将正类预测为正类的数目,FN表示将正类预测为负类的数目,FP表示将负类预测为正类的数目,TN表示将负类预测为负类的数目。
根据评估标准,我们可以得出本方法缺陷预测分类器的准确率为95.45%,精确度为93.33%,召回率为100%。根据评估标准可知,本方法的分类器取得了很好的缺陷预测效果。
多粒度扫描其实是引用了类似卷积神经网络的一个滑动窗口,例如说现在有一个400维的样本输入,现在设定采样窗口是100维的,那我们可以通过逐步的采样,最终获得301个子样本(因此这里默认的采样步长是1,所以得到的子样本个数=(400-100)/1+1)。如果输入的是一个20*20的图片,利用一个10*10的采样窗口,就可以获得121个子样本(对每行和每列都是(20-10)/1+1=11,11*11=121)。所以,整个多粒度扫描过程就是:先输入一个完整的P维样本,然后通过一个长度为k的采样窗口进行滑动采样,得到S=(P-K)/1+1个k维特征子样本向量,接着每个子样本都用于完全随机森林和普通随机森林的训练并在每个森林都获得一个长度为C的概率向量,这样每个森林会产生长度为S*C的表征向量(就是经过随机森林转换并拼接的概率向量),最后把每层的F个森林的结果拼接在一起得到本层输出。
Claims (1)
1.一种基于深度森林网络的代码缺陷预测方法,其特征在于如下步骤:
(1)挖掘代码历史仓库,抽取程序模块,对程序模块按照设定好的度量进行相关代码特征数据提取;
(2)将步骤(1)代码特征进行多粒度扫描,筛选出与缺陷相关度高的代码特征;
(3)利用步骤(2)中的缺陷特征构建多个随机森林和完全随机森林模型;
(4)将步骤(3)的多个随机森林级联成缺陷预测网络;
(5)对步骤(2)的缺陷特征向量按照设定比例进行随机切片,输入到步骤(4)中建立的缺陷预测网络进行训练,形成缺陷预测的分类器;
(6)将步骤(5)切片剩余的数据输入到缺陷预测分类器中,与真实标记的数据进行对比,验证训练效果,根据结果调整训练参数后得到最终的缺陷预测分类器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711290710.2A CN107943704A (zh) | 2017-12-04 | 2017-12-04 | 一种基于深度森林网络的软件缺陷预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711290710.2A CN107943704A (zh) | 2017-12-04 | 2017-12-04 | 一种基于深度森林网络的软件缺陷预测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107943704A true CN107943704A (zh) | 2018-04-20 |
Family
ID=61945187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711290710.2A Pending CN107943704A (zh) | 2017-12-04 | 2017-12-04 | 一种基于深度森林网络的软件缺陷预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943704A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108776968A (zh) * | 2018-06-22 | 2018-11-09 | 西安电子科技大学 | 基于深度森林的sar图像变化检测方法 |
CN109102032A (zh) * | 2018-09-03 | 2018-12-28 | 中国水利水电科学研究院 | 一种基于深度森林和自编码的泵站机组诊断方法 |
CN109446090A (zh) * | 2018-10-31 | 2019-03-08 | 南开大学 | 基于深度神经网络和概率决策森林的软件缺陷预测模型 |
CN109492106A (zh) * | 2018-11-13 | 2019-03-19 | 扬州大学 | 一种文本代码相结合的缺陷原因自动分类方法 |
CN109858477A (zh) * | 2019-02-01 | 2019-06-07 | 厦门大学 | 用深度森林在复杂环境中识别目标物的拉曼光谱分析方法 |
CN109885503A (zh) * | 2019-03-12 | 2019-06-14 | 深圳微品致远信息科技有限公司 | 一种基于机器学习的智能分析软件缺陷的方法、系统及存储介质 |
CN109977028A (zh) * | 2019-04-08 | 2019-07-05 | 燕山大学 | 一种基于遗传算法和随机森林的软件缺陷预测方法 |
CN110375987A (zh) * | 2019-06-24 | 2019-10-25 | 昆明理工大学 | 一种基于深度森林机械轴承故障检测方法 |
CN111339535A (zh) * | 2020-02-17 | 2020-06-26 | 扬州大学 | 面向智能合约代码的漏洞预测方法、系统、计算机设备和存储介质 |
CN112015641A (zh) * | 2020-08-22 | 2020-12-01 | 南京工业大学 | 一种基于多粒度级联森林模型的代码异味检测方法 |
CN112035345A (zh) * | 2020-08-20 | 2020-12-04 | 国家电网有限公司信息通信分公司 | 一种基于代码片段分析的混合深度缺陷预测方法 |
CN112685738A (zh) * | 2020-12-29 | 2021-04-20 | 武汉大学 | 一种基于多级投票机制的恶意混淆脚本静态检测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7856616B2 (en) * | 2007-04-17 | 2010-12-21 | National Defense University | Action-based in-process software defect prediction software defect prediction techniques based on software development activities |
CN103257921A (zh) * | 2013-04-16 | 2013-08-21 | 西安电子科技大学 | 一种基于改进随机森林算法的软件故障预测系统及其方法 |
CN106201871A (zh) * | 2016-06-30 | 2016-12-07 | 重庆大学 | 基于代价敏感半监督的软件缺陷预测方法 |
CN107346286A (zh) * | 2017-07-03 | 2017-11-14 | 武汉大学 | 一种基于核主成分分析和极限学习机的软件缺陷预测方法 |
-
2017
- 2017-12-04 CN CN201711290710.2A patent/CN107943704A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7856616B2 (en) * | 2007-04-17 | 2010-12-21 | National Defense University | Action-based in-process software defect prediction software defect prediction techniques based on software development activities |
CN103257921A (zh) * | 2013-04-16 | 2013-08-21 | 西安电子科技大学 | 一种基于改进随机森林算法的软件故障预测系统及其方法 |
CN106201871A (zh) * | 2016-06-30 | 2016-12-07 | 重庆大学 | 基于代价敏感半监督的软件缺陷预测方法 |
CN107346286A (zh) * | 2017-07-03 | 2017-11-14 | 武汉大学 | 一种基于核主成分分析和极限学习机的软件缺陷预测方法 |
Non-Patent Citations (1)
Title |
---|
Y.G BINGO: "关于深度森林的一点理解", 《HTTPS://BLOG.CSDN.NET/YANHUIBIN315/ARTICLE/DETAILS/70186823》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108776968A (zh) * | 2018-06-22 | 2018-11-09 | 西安电子科技大学 | 基于深度森林的sar图像变化检测方法 |
CN109102032A (zh) * | 2018-09-03 | 2018-12-28 | 中国水利水电科学研究院 | 一种基于深度森林和自编码的泵站机组诊断方法 |
CN109446090A (zh) * | 2018-10-31 | 2019-03-08 | 南开大学 | 基于深度神经网络和概率决策森林的软件缺陷预测模型 |
CN109492106A (zh) * | 2018-11-13 | 2019-03-19 | 扬州大学 | 一种文本代码相结合的缺陷原因自动分类方法 |
CN109492106B (zh) * | 2018-11-13 | 2022-05-13 | 扬州大学 | 一种文本代码相结合的缺陷原因自动分类方法 |
CN109858477A (zh) * | 2019-02-01 | 2019-06-07 | 厦门大学 | 用深度森林在复杂环境中识别目标物的拉曼光谱分析方法 |
CN109885503A (zh) * | 2019-03-12 | 2019-06-14 | 深圳微品致远信息科技有限公司 | 一种基于机器学习的智能分析软件缺陷的方法、系统及存储介质 |
CN109977028A (zh) * | 2019-04-08 | 2019-07-05 | 燕山大学 | 一种基于遗传算法和随机森林的软件缺陷预测方法 |
CN110375987B (zh) * | 2019-06-24 | 2021-10-22 | 昆明理工大学 | 一种基于深度森林机械轴承故障检测方法 |
CN110375987A (zh) * | 2019-06-24 | 2019-10-25 | 昆明理工大学 | 一种基于深度森林机械轴承故障检测方法 |
CN111339535A (zh) * | 2020-02-17 | 2020-06-26 | 扬州大学 | 面向智能合约代码的漏洞预测方法、系统、计算机设备和存储介质 |
CN112035345A (zh) * | 2020-08-20 | 2020-12-04 | 国家电网有限公司信息通信分公司 | 一种基于代码片段分析的混合深度缺陷预测方法 |
CN112015641A (zh) * | 2020-08-22 | 2020-12-01 | 南京工业大学 | 一种基于多粒度级联森林模型的代码异味检测方法 |
CN112015641B (zh) * | 2020-08-22 | 2022-02-01 | 南京工业大学 | 一种基于多粒度级联森林模型的代码异味检测方法 |
CN112685738A (zh) * | 2020-12-29 | 2021-04-20 | 武汉大学 | 一种基于多级投票机制的恶意混淆脚本静态检测方法 |
CN112685738B (zh) * | 2020-12-29 | 2022-10-14 | 武汉大学 | 一种基于多级投票机制的恶意混淆脚本静态检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943704A (zh) | 一种基于深度森林网络的软件缺陷预测方法 | |
Dewa et al. | Data mining and intrusion detection systems | |
KR102142205B1 (ko) | 설명 가능한 인공지능 모델링 및 시뮬레이션 시스템 및 방법 | |
CN108345544B (zh) | 一种基于复杂网络的软件缺陷分布影响因素分析方法 | |
CN108833409A (zh) | 基于深度学习和半监督学习的webshell检测方法及装置 | |
Naidu et al. | Classification of defects in software using decision tree algorithm | |
CN111047173B (zh) | 基于改进d-s证据理论的社团可信度评估方法 | |
Soe et al. | Software defect prediction using random forest algorithm | |
CN106201897A (zh) | 基于主成分分布函数的软件缺陷预测不平衡数据处理方法 | |
Chang et al. | Integrating in-process software defect prediction with association mining to discover defect pattern | |
CN109067800A (zh) | 一种固件漏洞的跨平台关联检测方法 | |
CN113221960B (zh) | 一种高质量漏洞数据收集模型的构建方法及收集方法 | |
Chen et al. | ADASYN− Random forest based intrusion detection model | |
de Sousa et al. | Concept drift detection and localization in process mining: An integrated and efficient approach enabled by trace clustering | |
Ekundayo | Wrapper feature selection based heterogeneous classifiers for software defect prediction | |
CN106126736A (zh) | 面向软件安全性bug修复的软件开发者个性化推荐方法 | |
Murillo-Morera et al. | Software Fault Prediction: A Systematic Mapping Study. | |
CN108242411A (zh) | 用于管控线上缺陷的方法和系统 | |
CN110808947A (zh) | 一种自动化的脆弱性量化评估方法及系统 | |
CN113722230B (zh) | 针对模糊测试工具漏洞挖掘能力的集成化评估方法及装置 | |
CN106055483B (zh) | 基于欠采样操作的代价敏感神经网络的警告分类方法 | |
Zhang et al. | Does socio-technical congruence have an effect on continuous integration build failures? An empirical study on 10 GitHub projects | |
Zhang et al. | Morphological Image Analysis and Feature Extraction for Reasoning with AI-based Defect Detection and Classification Models | |
CN110796187A (zh) | 不良分类方法及装置 | |
Zhang et al. | Hybrid intrusion detection based on data mining |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180420 |