一种跨项目软件缺陷预测方法及系统

文档序号:31782423发布日期:2022-10-12 11:01阅读:70来源:国知局
技术简介:
本专利针对跨项目软件缺陷预测中源项目数据选择不精准导致预测效果差的问题,提出基于最大均值差异法(MMD)的分布相似性度量方法,通过量化目标项目与候选源项目的数据分布差异,筛选出分布最相似的源项目,结合多源集成分类器构建预测模型,显著提升跨项目缺陷识别准确率。
关键词:最大均值差异法,跨项目缺陷预测,源项目选择

1.本发明涉及软件缺陷预测技术领域,具体为一种跨项目软件缺陷预测方法及系统。


背景技术:

2.软件缺陷预测是软件质量保障中的关键技术之一,其动机是通过一些经济高效的技术,发现软件中存在的缺陷,保障软件产品的质量与可靠性。随着信息技术的快速发展,计算机软件在互联网通信、教育培训、科学计算、电子商务、金融投资、智能家居等诸多重要领域广泛应用。软件技术已经深入到人们生活的方方面面,然而在软件开发过程中,不可避免的会产生软件缺陷,尽可能早的发现这些缺陷并将其修复,对软件后期的开发及维护具有极其重要的作用。这就使得软件缺陷预测技术在识别软件产品缺陷中具有广阔的应用前景。
3.跨项目缺陷预测是指它利用其它软件项目(源项目)的充足历史缺陷数据构建预测模型,为待测软件项目(目标项目)的数据进行缺陷预测。当目标项目是一个新开发的软件项目或缺少历史缺陷数据,便可采用跨项目缺陷预测。由于源项目与目标项目之间通常存在差异性,导致它们的数据分布不一致,在进行跨项目预测建模时,目标项目会面临源项目数据的负迁移问题。
4.通过选择与目标项目数据相似的源项目,可有效地减小源项目数据对目标项目数据负迁移的影响。近年来,研究者提出了一些源数据选择方法。一部分研究工作根据建立模型的缺陷预测性能来选择源项目数据,然而该方法需要遍历所有项目,以发现对其它项目产生最佳预测的项目作为源,在此过程中需要一部分目标数据标签进行模型测试,这将限制该方法在实践中的应用。另一部分研究工作采用距离或相关性度量来选择源项目数据,然而这类方法仅仅以距离或相关性进行度量,忽略了数据的分布,难以准确地识别出两个数据集的分布相似性,特别是在高维数据的情况下,使用距离或相关性的作用会越小。


技术实现要素:

5.本发明提出了一种跨项目软件缺陷预测方法及系统,本发明采用最大均值差异算法通过测量源与目标项目数据之间的分布相似性来选择源项目,并根据所选的源项目建立跨项目缺陷预测模型,使得所构建的具有较高的缺陷识别性能,有助于更好地保障软件产品的质量与可靠性。
6.本发明提供了一种跨项目软件缺陷预测方法,包括以下步骤:
7.对待测软件的目标项目数据以及多个不同的候选的其他软件的源项目数据分别进行归一化处理;
8.利用最大均值差异法,分别测量目标项目数据与每个源项目数据之间的数据分布的相似性;
9.根据目标项目数据与每个源项目数据之间的数据分布的相似性,选择与目标项目
数据分布相似的源项目数据;
10.利用分类器算法,并根据所选择的源项目数据,构建跨项目缺陷预测模型;
11.根据所构建的跨项目缺陷预测模型对待测软件的目标项目数据进行预测,判断目标项目数据是否存在缺陷。
12.进一步地,所述目标项目数据为待测的软件项目的实际运行数据;
13.所述源项目数据为其他软件项目的历史缺陷数据;
14.所述实际运行数据及历史缺陷数据均为软件实体数据,所述软件实体数据为从软件程序代码中抽取的实例模块。
15.进一步地,所述归一化处理的方法为z-score法,其计算方法如下:
[0016][0017]
其中,xi是软件实体x的第i个度量元的原始值,μ
x
是软件实体x的平均值,σ
x
是软件实体x的标准差,是xi归一化后的值。
[0018]
进一步地,所述利用最大均值差异法,分别测量目标项目数据与每个源项目数据之间的数据分布的相似性,包括:
[0019]
利用最大均值差异法分别计算目标项目数据与每个源项目数据之间的数据分布的最大均值差异值mmd,计算方法如下:
[0020][0021]
其中,为源项目数据中的第i个软件实体;
[0022]
为源项目数据中的软件实体数据集;
[0023]ns
为源项目数据中的软件实体数目;
[0024]
为目标项目数据中的第i个软件实体;
[0025]
为目标项目数据中的软件实体数据集,
[0026]nt
为目标项目数据中的软件实体数目;
[0027]
表示再生希尔伯特空间;
[0028]
表示再生希尔伯特空间中的一个非线性映射函数。
[0029]
进一步地,当所述目标项目数据与某一个源项目数据之间的最大均值差异值越小,则目标项目数据与源项目数据之间的数据分布的相似性越高,该源项目数据与目标项目数据分布相似。
[0030]
进一步地,所述根据目标项目数据与每个源项目数据之间的数据分布的相似性,选择与目标项目数据分布相似的源项目数据,包括:
[0031]
将计算得到的所述目标项目数据与各个源项目数据之间的最大均值差异值mmd进行从小到大排序;
[0032]
利用黄金分割法将前k个最大均值差异值mmd所对应的源项目数据分别作为与目标项目数据分布相似的源项目数据。
[0033]
进一步地,所述利用分类器算法,并利用所选择的源项目数据,构建跨项目缺陷预测模型,包括:
[0034]
根据k个与目标项目数据分布相似的所述源项目数据,分别利用分类器算法在第j个源项目数据sj上建立模型hj,1≤j≤k,得到k个分类器模型;所述分类器算法为逻辑回归分类器;
[0035]
根据k个分类器模型,并基于多源集成法构建跨项目缺陷预测模型。
[0036]
进一步地,所述分类器算法还包括:朴素贝叶斯、最近邻、支持向量机、决策树、随机森林、神经网络。
[0037]
进一步地,所述根据所构建的跨项目缺陷预测模型对待测软件的目标项目数据进行预测,判断目标项目数据是否存在缺陷,包括:
[0038]
基于建立的所述k个分类器模型,分别对所需预测的目标项目数据进行预测,得到k个预测结果;
[0039]
将所述k个预测结果集成,得到所需预测的目标项目数据的最终预测结果,用公式表示为:
[0040][0041]
其中为第j个源项目所对应的分类器模型所得到的的预测结果;
[0042]
为集成k个分类器模型所得到的待测目标项目数据的预测结果。
[0043]
本发明提供一种跨项目软件缺陷预测系统,包括:
[0044]
数据处理模块,用于对目标项目数据以及多个不同的候选的源项目数据分别进行归一化处理;
[0045]
数据相似性测量模块,用于利用最大均值差异法,分别测量目标项目数据与每个源项目数据之间的数据分布的相似性;
[0046]
相似性数据选择模块,用于根据目标项目数据与每个源项目数据之间的数据分布的相似性,选择与目标项目数据分布相似的源项目数据;
[0047]
模型构建模块,用于利用分类器算法,并利用所选择的源项目数据,构建跨项目缺陷预测模型;
[0048]
数据预测模块,用于根据所构建的跨项目缺陷预测模型对待测软件的目标项目数据进行预测,判断目标项目数据是否存在缺陷。
[0049]
与现有技术相比,本发明的有益效果:
[0050]
本发明从目标项目数据与源项目数据分布相似性的角度出发,设计了一种跨项目软件缺陷预测方法。该方法中通过利用最大均值差异法,分别测量目标项目数据与每个源项目数据之间的数据分布的相似性,有利于选取到与目标数据项目的数据分布相似性较高的源项目数据,并根据所选取的与目标项目数据的数据分布相似性高的源项目数据利用分类器算法构建跨项目缺陷预测模型,使得所构建的跨项目预测模型具有较高的缺陷识别性能,准确性高,有助于更好地保障软件产品的质量与可靠性。
附图说明
[0051]
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0052]
图1为本发明提供的一种跨项目软件缺陷预测方法的流程图;
[0053]
图2为本发明提供的一种跨项目软件缺陷预测方法与现有技术中的预测方法在马修斯相关系数mcc和接受者操作特征曲线下的面积auc评价指标上的实验效果对比图。
具体实施方式
[0054]
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
[0055]
实施例1
[0056]
如图1所示,本发明提供一种跨项目软件缺陷预测方法,包括以下步骤:
[0057]
步骤s1:对待测软件的目标项目数据以及多个不同的候选的其他软件的源项目数据分别进行归一化处理。
[0058]
目标项目数据为待测的软件项目的实际运行数据;
[0059]
源项目数据为其他软件项目的历史缺陷数据;
[0060]
实际运行数据及历史缺陷数据均为软件实体数据,软件实体数据为从软件程序代码中抽取的实例模块,也可以是方法、类、文件、包或代码变更。
[0061]
通过对目标项目数据以及多个不同的候选的源项目数据分别进行归一化处理,消除了目标项目数据与源项目数据的软件实体的不同度量元之间量纲的差异影响。
[0062]
所采用的归一化处理的方法为z-score法,其计算方法如下:
[0063][0064]
其中,xi是软件实体x的第i个度量元的原始值,μ
x
是软件实体x的平均值,σ
x
是软件实体x的标准差,是xi归一化后的值。
[0065]
步骤s2:利用最大均值差异法,分别测量目标项目数据与每个源项目数据之间的数据分布的相似性,包括:
[0066]
利用最大均值差异法分别计算目标项目数据与每个源项目数据之间的数据分布的最大均值差异值mmd,计算方法如下:
[0067][0068]
其中,为源项目数据中的第i个软件实体;
[0069]
为源项目数据中的软件实体数据集;
[0070]ns
为源项目数据中的软件实体数目;
[0071]
为目标项目数据中的第i个软件实体;
[0072]
为目标项目数据中的软件实体数据集,
[0073]nt
为目标项目数据中的软件实体数目;
[0074]
表示再生希尔伯特空间;
[0075]
表示再生希尔伯特空间中的一个非线性映射函数。
[0076]
当目标项目数据与某一个源项目数据之间的最大均值差异值越小,则目标项目数据与源项目数据之间的数据分布的相似性越高,该源项目数据与目标项目数据分布相似。
[0077]
步骤s3:根据目标项目数据与每个源项目数据之间的数据分布的相似性,选择与目标项目数据分布相似的源项目数据,包括:
[0078]
将计算得到的目标项目数据与各个源项目数据之间的最大均值差异值mmd进行从小到大排序;
[0079]
利用黄金分割法将前k个最大均值差异值mmd所对应的源项目数据分别作为与目标项目数据分布相似的源项目数据。
[0080]
步骤s4:利用分类器算法,并根据所选择的源项目数据,构建跨项目缺陷预测模型,包括:
[0081]
根据k个与目标项目数据分布相似的所述源项目数据,分别利用分类器算法在第j个源项目数据sj上建立模型hj,1≤j≤k,得到k个分类器模型;
[0082]
根据k个分类器模型,并基于多源集成法构建跨项目缺陷预测模型。
[0083]
其中分类器算法包括:逻辑回归、朴素贝叶斯、最近邻、支持向量机、决策树、随机森林、神经网络等,本发明中采用的分类器算法为逻辑回归分类器。
[0084]
步骤s5:根据所构建的跨项目缺陷预测模型对待测软件的目标项目数据进行预测,判断目标项目数据是否存在缺陷,包括:
[0085]
基于建立的k个分类器模型,分别对所需预测的目标项目数据进行预测,得到k个预测结果;
[0086]
将k个预测结果集成,得到所需预测的目标项目数据的最终预测结果,用公式表示为:
[0087][0088]
其中为第j个源项目所对应的分类器模型所得到的的预测结果;
[0089]
为集成k个分类器模型所得到的待测目标项目数据的预测结果。
[0090]
实施例2
[0091]
本发明提供一种跨项目软件缺陷预测系统,包括:
[0092]
数据处理模块,用于对目标项目数据以及多个不同的候选的源项目数据分别进行归一化处理;
[0093]
数据相似性测量模块,用于利用最大均值差异法,分别测量目标项目数据与每个源项目数据之间的数据分布的相似性;
[0094]
相似性数据选择模块,用于根据目标项目数据与每个源项目数据之间的数据分布的相似性,选择与目标项目数据分布相似的源项目数据;
[0095]
模型构建模块,用于利用分类器算法,并利用所选择的源项目数据,构建跨项目缺陷预测模型;
[0096]
数据预测模块,用于根据所构建的跨项目缺陷预测模型对待测软件的目标项目数据进行预测,判断目标项目数据是否存在缺陷。
[0097]
下面结合具体的实施方式对本发明的技术方案作进一步详细说明。
[0098]
1、实验环境配置:windows10系统,matlab2020b。
[0099]
2、实验数据:本实验使用12个公开数据集作为实验数据,详细信息如表1所示:
[0100]
表1实验所用的数据集
[0101][0102]
3、具体实现过程:
[0103]
输入:候选源项目数据和目标项目数据。
[0104]
输出:目标项目中每个软件实体是否存在缺陷,用1表示该软件实体有缺陷,0表示该软件实体没有缺陷。
[0105]
第一步,对候选源项目数据和目标项目数据利用z-score法进行归一化处理;
[0106]
第二步,对给定的目标项目,随机选择其中90%的软件实体用于计算与每个候选源项目的mmd距离,重复30次,记录每一个mmd距离值,并计算每个候选源项目30次的平均mmd距离值作为相似性度量;
[0107]
第三步,对计算得到的mmd距离值进行升序排序,采用黄金分割法从最小值处进行分割,选出前k个最小的mmd距离值所对应的源作为与目标项目数据分布最相似的源项目;
[0108]
第四步,根据选择的k个源项目,采用逻辑回归分类器分别建立模型,构建基于多源集成法的跨项目缺陷预测模型;
[0109]
第五步,根据构建的模型,对目标项目数据进行预测,得到预测结果。
[0110]
采用马修斯相关系数matthews correlation coefficient(mcc)和接受者操作特征曲线下的面积area under curve(auc)两个性能指标对本发明中的用于对源项目数据进行选取的最大均值差异法进行评价。
[0111]
其中,mcc的计算公式如下:
[0112][0113]
其中,mcc的取值范围为-1到1,mcc的值越大表示算法性能越好;
[0114]
tp为实际有缺陷的软件实体被预测为有缺陷软件实体的数目;
[0115]
fn为实际有缺陷的软件实体被预测为无缺陷软件实体的数目;
[0116]
fp为实际无缺陷的软件实体被预测为有缺陷软件实体的数目;
[0117]
tn为实际无缺陷的软件实体被预测为无缺陷软件实体的数目。如表2所示。
[0118]
表2混淆矩阵
[0119] 预测为有缺陷的预测为无缺陷的实际为有缺陷的真阳性(truepositive,tp)假阴性(falsenegative,fn)实际为无缺陷的假阳性(falsepositive,fp)真阴性(truenegative,tn)
[0120]
auc表示接受者操作特征曲线下的面积,其取值范围为0到1,其值越大表示算法性能越好,其值为0.5时表示随机猜测的性能。
[0121]
在相同的实验环境下,本发明方法与现有方法中distributional characteristics basednearest neighbor selection(dcnns)、virtual classifier(vc)和correlation(corr)的源数据选择方法进行比较,并在12个软件项目上就mcc和auc指标做实验结果对比。
[0122]
图2给出了所有方法在12个项目上mcc和auc结果,图中显示了最小值,第一分位数,中位数,第三分位数和最大值。竖条表示第一到第三分位数的范围,圆点表示中值,加号表示异常值。从图中可以看出,与现有方法相比,本发明方法能够取得较好或相似的mcc和auc结果,表明该方法可以为目标项目数据选择合适的源项目数据,验证了该方法的可行性和有效性。
[0123]
最后说明的是:以上公开的仅为本发明的一个具体实施例,但是,本发明实施例并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!