当前位置: 首页 > 专利查询>重庆大学专利>正文

基于代价敏感半监督的软件缺陷预测方法技术

技术编号:14173638 阅读:119 留言:0更新日期:2016-12-13 01:48
本发明专利技术涉及基于代价敏感半监督的软件缺陷预测方法,包括如下步骤,S1通过版本控制工具收集待预测软件的源代码文件;S2所述S1得到的源代码文件由I个模块组成,从所述源代码文件中提取度量元值;S3通过采样的方式通过度量元值选取模块得到采样结果集;S4标注后采样结果集和无标记样本集构建训练集;S5提出目标函数,求解使目标函数值最小的分类函数,S6通过分类函数对待预测集中的模块进行预测,并输出预测结果。该方法融合半监督和代价敏感思想构建软件缺陷预测模型,解决了软件缺陷预测中缺陷数据难以获取和类不平衡两个问题,极大提高了预测结果的准确性。

Software defect prediction method based on cost sensitive semi supervised

The present invention relates to a method of software defect prediction based on cost sensitive semi supervised, which comprises the following steps: S1 through the version control tool to collect prediction software source code files; the S2 S1 source code file is composed of I modules, extracting volume element values from the source code file; S3 by sampling the metric value selection module obtains sampling result set; S4 tagging after sampling results set and unlabeled samples set to establish the training set; S5 objective function is put forward, which solved the objective function value classification function minimum, S6 through the classification function prediction module treated concentration prediction, and the output of the prediction results. Semi supervised and cost sensitive thought of building a software defect prediction model of the fusion method, and solve the difficult to obtain the defect data in software defect prediction and class imbalance problem two, which greatly improves the accuracy of the prediction results.

【技术实现步骤摘要】

本专利技术涉及软件预测,具体涉及基于代价敏感半监督的软件缺陷预测方法
技术介绍
然而,随着软件规模的不断增大,复杂程度的不断提高、以及市场对软件开发周期尽可能缩短的需求,对于软件质量进行预测和控制的难度逐渐提高,成本也不断加大。而且,软件技术发展至今,无论是小程序还是大型系统,软件中的缺陷软件中的缺陷已经成为软件开发过程中必不可少的副产品,而且不存在一种检验或验证的方法能够发现并排除全部的缺陷。更糟糕的是,软件缺陷发现得越晚,修复的成本越高。因此,如何在有限的人员、时间和成本条件下,有效地对软件进行充分的测试并尽可能全面地发现软件中存在的缺陷,始终是软件质量控制学科乃至整个软件工程领域所面临的难题。目前已经研究出多种方式能够有效提高软件质量,但是最好的方法是“预防缺陷”。软件缺陷预测就是有效预防缺陷的一种方法。软件缺陷检测旨在软件开发过程中自动检测程序模块中是否包含缺陷而不需要真正运行程序。通过预测软件模块是否包含缺陷可以有效合理地分配有限的测试资源,提高软件开发质量。从近年来国内外缺陷预测领域的研究中容易发现,无论是统计学习方法,还是机器学习方法都还存在着不足和挑战,主要总结为以下几点:1)依赖大量历史缺陷信息,而在实际应用中难以获取甚至不能获取一定数量的标签数据进行学习,在没有足够学习样本的情况下预测精度不高。2)缺陷数据具有明显的类不平衡特性,这使得传统机器学习方法在缺陷预测问题上召回率不高。3)越来越多的软件度量引入到缺陷预测领域,容易造成维度灾难。目前大部分预测方法旨在获得高准确率或者低错误率,而现实应用中不同类型的错误分类往往会造成不同的代价,高准确率并不代表预测结果的代价最小,而对真实项目而言整体代价最小化往往更具有实际意义。
技术实现思路
针对现有技术存在的上述问题,本专利技术的目的是提供一种整体代价最小化的半监督软件 缺陷预测方法。为实现上述目的,本专利技术采用如下技术方案:基于代价敏感半监督的软件缺陷预测方法,包括如下步骤:S1:通过版本控制工具收集待预测软件的源代码文件;S2:所述S1得到的源代码文件由I个模块组成,从所述源代码文件中提取度量元值,所有度量元值构成一个集合X,X={x1,1,x2,2,...xi,j,...xI,J本文档来自技高网
...
基于代价敏感半监督的软件缺陷预测方法

【技术保护点】
基于代价敏感半监督的软件缺陷预测方法,其特征在于,包括如下步骤:S1:通过版本控制工具收集待预测软件的源代码文件;S2:所述S1得到的源代码文件由I个模块组成,从所述源代码文件中提取度量元值,所有度量元值构成一个集合X,X={x1,1,x2,2,...xi,j,...xI,J}    (1);xij表示第j个度量元在第i个模块上的度量元值,I表示待预测软件中源代码文件的总数,J表示提取的度量元的总数;每个模块对应一个度量元向量,定义xi表示第i个模块的度量元向量,xi={xij|j=1,2,3...J};S3:采样;S3a:确定xij,i=1,2,...I,J=1,2,...J大于其在所有模块上的度量元值的中位数Mj的数量;I)令i=1;II)令j=1;III)令Ki=0;IV)如果xij≥Mj,则Ki=Ki+1,并令j=j+1,执行下一步;否则,令j=j+1,并执行下一步;V)如果j≤J,则返回Ⅳ);否则令i=i+1,并执行下一步;VI)如果i≤I,则返回Ⅱ);否则执行下一步;VII)输出Ki;S3b:Ki值对应第i个模块,i=1,2…I,根据Ki值从大到小的顺序对Ki值对应的模块进行排序;S3c:选取S3b排序后,处于前N位置的N个模块构成候选集,再从候选集中随机选取n个模块构成采样结果集,N>n;S4:构建训练集;S4a:对S3c得到的采样结果集中的n个模块,根据其是否存在缺陷给其打上有缺陷模块的分类标签或无缺陷模块的分类标签,分类标签y∈{±1},打上分类标签y=1的模块表示为有缺陷模块,打上分类标签y=‐1的模块表示为无缺陷模块;标记后的采样结果集为有标签样本集,记为τn={(x1,y1),…(xi,yi)…,(xn,yn)},其中,xi表示第i个模块的度量元向量,yi表示第i个模块的标签;S4b:从I个模块中踢出采样结果集中的n个模块,然后再随机选取u个模块,所述u个模块构成无标记样本集,记为τu={(x1,y1),…(xi,yi)…,(xu,yu)},其中,yi=0,i=1,2,...u;S4c:S4a得到的有标签样本集和S4b得到的无标记样本集构成训练样本集;S5:构建预测模型;S5a:提出目标函数如下:minf12||f||H2+C1Σi∈τnl(yi,f(xi))+C2Σi∈τul(y^i,f(xi))s.t.Σi∈τusgn(f(xi))=r,y^i=sgn(f(xi)),∀i∈τu---(2);]]>其中,H是由核函数k生成的再生核希尔伯特空间,l(yi,f(xi))和是加权损失函数,分别见公式(3)和(4),C1和C2是正则化参数,为经验值,表示训练过程中的预测标签;r是设定的参数,为经验值,其中,1是全1向量;l(yi,f(xi))=(1-f(xi))*C(+1),yi=1(1+f(xi))*C(-1),yi=-1---(3);]]>其中,C(‐1)是错分非缺陷模块的代价,是经验值,C(+1)是错分缺陷模块的代价,为经验值;S5b:求解目标函数,得到使目标函数值最小的分类函数f(xi);S6:从I个模块中踢出训练样本集中的模块后剩余的模块构成待预测集,将待预测集中一个模块的度量元向量输入分类函数f(xi),如果得到值小于0,则该模块被预测为无缺陷,如果得到的值大于0,则该模块被预测为有缺陷;按照上述方式,将预测集中每个模块对应的度量元向量输入所述分类函数,对预测集中的每个模块进行预测,并输出预测结果。...

【技术特征摘要】
1.基于代价敏感半监督的软件缺陷预测方法,其特征在于,包括如下步骤:S1:通过版本控制工具收集待预测软件的源代码文件;S2:所述S1得到的源...

【专利技术属性】
技术研发人员:徐玲廖胜平洪明坚葛永新杨梦宁张小洪杨丹王洪星黄晟周末
申请(专利权)人:重庆大学
类型:发明
国别省市:重庆;50

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1