一种基于优化实例选择的跨项目软件缺陷预测方法转让专利

申请号 : CN202210717428.2

文献号 : CN115269377B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张瑞年王楚越王晨宇尹思文王超郭伟琪文万志胡彬

申请人 : 南通大学

摘要 :

本发明提供一种基于优化实例选择的跨项目软件缺陷预测方法,包括如下步骤:S1、构建项目向量集PVS;S2、构建目标实例优化索引IPI;S3、构建预训练集TPRED;S4、构建目标项目的优化索引TPOI;S5、构建基于优化实例选择的训练集BOD;S6、构建基于优化实例选择的跨项目软件缺陷预测方法BOICP。本发明提出一种基于优化实例选择的跨项目软件缺陷预测方法,通过构建目标实例全局特征向量实现源实例选择,然后使用相关性分析进一步优化实例选择,使用该方法构建的训练集有利于选择可靠的实例数据,实现更好的跨项目缺陷预测效果。

权利要求 :

1.一种基于优化实例选择的跨项目软件缺陷预测方法,其特征在于,包括如下步骤:S1、构建项目向量集PVS;

S2、构建目标实例优化索引IPI;

S3、构建预训练集TPRED;

S4、构建目标项目的优化索引TPOI;

S5、构建基于优化实例选择的训练集BOD;

S6、构建基于优化实例选择的跨项目软件缺陷预测方法BOICP;

步骤S1包括如下步骤:

S1.1、基于开源网站获取软件项目集合;

S1.2、以项目类作为实例构建项目实例集合;

S1.3、基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建传统度量元集{WMC, DIT, NOC, CBO, RFC, LCOM, LCOM3, NPM, DAM, MOA, MFA, CAM, IC, CBW, AMC, Ca, Ce, Max_CC, Avg_CC, LOC },其中,WMC代表每个类的加权方法,DIT代表继承树的深度,NOC代表子类的数目,CBO代表对象类之间的耦合,RFC代表一个类的响应,LCOM和LCOM3代表在方法上缺少的凝聚力,NPM代表公共类的个数,DAM代表数据访问指标,MOA代表聚合的量度,MFA代表功能抽象的量度,CAM代表类方法之间的聚合,IC代表继承耦合,CBW代表方法之间的耦合,AMC代表平均方法复杂度,Ca代表传入耦合,Ce代表传出耦合,Max_CC代表McCabe圈复杂性的最大值,Avg_CC代表McCabe圈复杂性的平均值,LOC代表代码的行数;

S1.4、将源项目中的所有实例按步骤S1.3处理得到源项目传统度量元向量集SCPIVS =[instance1, instance2, …, instancei],其中,i=1,2,3,…,n;

S1.5、将目标项目中的所有实例按步骤S1.3处理得到目标项目传统度量元向量集TCPIVS =[tradition_value1, tradition_value2, …, tradition_valuej],其中,j=1,2,

3,…,m;

S1.6、基于开源数据历史记录构建源项目实例标签SLABEL =[stag1, stag2, …, stagi],其中,i=1,2,3,…,n;该标签与步骤S1.4 源项目传统度量元向量集SCPIVS中实例对应;

S1.7、基于开源数据历史记录构建目标项目实例标签TLABEL =[ttag1, ttag2, …, ttagj],其中,j=1,2,3,…,m;该标签与步骤S1.5目标项目传统度量元向量集TCPIVS中实例对应;

S1.8、构建项目向量集PVS={SCPIVS, SLABEL, TCPIVS, TLABEL};

步骤S2包括如下步骤:

S2.1、构建目标实例优化索引IPI,源实例索引列表ASI;

S2.2、选择一个目标实例向量;

S2.3、若IPI的列表长度为空,则构建实例训练集的全局特征向量GFV为步骤S2.2的目标实例向量,否则GFV为实例训练集中所有实例的同一度量元标准差的集合;

S2.4、使用步骤S2.1的源实例索引列表ASI对步骤S1中的源项目传统度量元向量集SCPIVS选择实例构建待选择源实例库SIL;

S2.5、计算待选择源实例库SIL中每一个实例与GFV之间的欧式距离,并返回最小欧氏距离对应的索引min‑index;

S2.6、将min‑index加入到步骤S2.1的目标实例优化索引IPI中;

S2.7、将源实例索引列表ASI中的min‑index删除;

S2.8、设置每一个目标实例选择的源实例个数为k,循环执行步骤S2.3 S2.7,直到目~标实例优化索引IPI长度满足k;

S2.9、经步骤S2.8执行后,得到目标实例优化索引IPI;

步骤S3包括如下步骤:

S3.1、将目标项目中的每一个实例按照步骤S2执行得到每一个目标实例的目标实例优化索引IPI;

S3.2、将步骤S3.1中每一个目标实例得到的优化索引结合并去重,构建预训练集优化索引TIPI;

S3.3、使用步骤S3.2得到的预训练集优化索引TIPI对步骤S1的源项目传统度量元向量集SCPIVS按实例选取,得到预训练集的实例向量集TPRED‑D;

S3.4、使用步骤S3.2得到的预训练集优化索引TIPI对步骤S1的源项目实例标签SLABEL按实例选取,得到预训练集的标签集TPRED‑L;

S3.5、构建预训练集TPRED={TPRED‑D, TPRED‑L};

步骤S4包括如下步骤:

S4.1、将步骤S3得到的预训练集的实例向量集TPRED‑D与预训练集的标签集TPRED‑L按列组合,并将标签集放在最后一列;

S4.2、使用spearman计算每一个度量元与最后一列标签直接的相关性,得到相关性列表CList;

S4.3、将步骤S4.2的相关性列表CList所有元素取绝对值后按从大到小排序,返回特征对应索引;

S4.4、设置选择相关性特征索引个数为q;

S4.5、使用步骤S4.4的相关性特征索引个数q对步骤S4.3返回的特征索引进行选择,并使用得到的特征索引构建源项目相关性特征集SPTFS;

S4.6、将步骤S1的目标项目传统度量元向量集TCPIVS和目标项目实例标签TLABEL按步骤S4.1 S4.5构建目标项目相关性特征集TPTFS;

~

S4.7、计算源项目相关性特征集SPTFS中所有源实例与目标项目相关性特征集TPTFS中的一个实例相关性特征集的欧氏距离,并返回欧式距离从小到大排序后的索引列表,设置从SPTFS中选择实例个数为p,则获得该目标实例选出的p个索引;

S4.8、将目标项目相关性特征集TPTFS中所有目标实例按照步骤S4.7处理得到优化索引集合,将该索引集合去重得到目标项目的优化索引TPOI;

步骤S5包括如下步骤:

S5.1、使用步骤S4得到的目标项目的优化索引TPOI对步骤S3预训练集的实例向量集TPRED‑D进行选择,得到基于优化实例选择的训练特征集BOD‑D;

S5.2、使用步骤S4得到的目标项目的优化索引TPOI对步骤S3预训练集的标签集TPRED‑L进行选择,得到基于优化实例选择的标签集BOD‑L;

S5.3、构建基于优化实例选择的训练集BOD={BOD‑D, BOD‑L};

步骤S6包括如下步骤:

S6.1、通过步骤S1得到项目向量集PVS={SCPIVS, SLABEL, TCPIVS, TLABEL};

S6.2、通过步骤S2得到目标实例优化索引IPI;

S6.3、通过步骤S3得到预训练集的实例向量集TPRED‑D和预训练集的标签集TPRED‑L;

S6.4、通过步骤S4得到目标项目的优化索引TPOI;

S6.5、通过步骤S5得到基于优化实例选择的训练特征集BOD‑D和基于优化实例选择的标签集BOD‑L;

S6.6、使用Logistic分类算法对步骤S6.5的基于优化实例选择的训练特征集BOD‑D和基于优化实例选择的标签集BOD‑L进行模型训练;

S6.7、将步骤S6.6训练得到的模型对步骤S1的目标项目传统度量元向量集TCPIVS进行缺陷预测,得到预测标签集PRED_LABEL,结合目标项目实例标签TLABEL通过公式计算得到f‑score;

S6.8、得到基于优化实例选择的跨项目软件缺陷预测方法BOICP。

说明书 :

一种基于优化实例选择的跨项目软件缺陷预测方法

技术领域

[0001] 本发明属于软件缺陷预测的技术领域,具体涉及一种基于优化实例选择的跨项目软件缺陷预测方法,针对目标项目中目标实例向量优化源实例选择,进一步提高跨项目缺陷预测结果。

背景技术

[0002] 研究人员需要借助历史数据实现对软件缺陷预测,然而对于一个新的系统往往没有充足的历史数据,那么解决该问题的途径之一是从其他项目中选择历史数据,使用这些历史数据建立缺陷预测模型并对新生项目进行缺陷预测。
[0003] 对于一个拥有大量数据的项目,研究者需要思考如何从中选出更加适合目标项目的实例数据,源实例数据与目标项目数据越符合,那么建立的缺陷预测模型就更加的准确。

发明内容

[0004] 本发明要解决的技术问题是提供一种基于优化实例选择的跨项目软件缺陷预测方法,在实例选择过程中,通过构建目标实例的全局动态特征实现对源实例选择,然后使用相关性分析进一步优化实例选择,有助于实现更好的跨项目缺陷预测效果。
[0005] 为解决上述技术问题,本发明的实施例提供一种基于优化实例选择的跨项目软件缺陷预测方法,包括如下步骤:
[0006] S1、构建项目向量集PVS;
[0007] S2、构建目标实例优化索引IPI;
[0008] S3、构建预训练集TPRED;
[0009] S4、构建目标项目的优化索引TPOI;
[0010] S5、构建基于优化实例选择的训练集BOD;
[0011] S6、构建基于优化实例选择的跨项目软件缺陷预测方法BOICP。
[0012] 其中,步骤S1包括如下步骤:
[0013] S1.1、基于开源网站获取软件项目集合;
[0014] S1.2、以项目类作为实例构建项目实例集合;
[0015] S1.3、基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建传统度量元集{WMC, DIT, NOC, CBO, RFC, LCOM, LCOM3, NPM, DAM, MOA, MFA, CAM, IC, CBW, AMC, Ca, Ce,Max_CC, Avg_CC, LOC },其中,WMC代表每个类的加权方法,DIT代表继承树的深度,NOC代表子类的数目,CBO代表对象类之间的耦合,RFC代表一个类的响应,LCOM和LCOM3代表在方法上缺少的凝聚力,NPM代表公共类的个数,DAM代表数据访问指标,MOA代表聚合的量度,MFA代表功能抽象的量度,CAM代表类方法之间的聚合,IC代表继承耦合,CBW代表方法之间的耦合,AMC代表平均方法复杂度,Ca代表传入耦合,Ce代表传出耦合,Max_CC代表McCabe圈复杂性的最大值,Avg_CC代表McCabe圈复杂性的平均值,LOC代表代码的行数;
[0016] S1.4、将源项目中的所有实例按步骤S1.3处理得到源项目传统度量元向量集SCPIVS =[instance1, instance2, …, instancei],其中,i=1,2,3,…,n;
[0017] S1.5、将目标项目中的所有实例按步骤S1.3处理得到目标项目传统度量元向量集TCPIVS =[tradition_value1, tradition_value2, …, tradition_valuej],其中,j=1,2,3,…,m;
[0018] S1.6、基于开源数据历史记录构建源项目实例标签SLABEL =[stag1, stag2, …, stagi],其中,i=1,2,3,…,n;该标签与步骤S1.4 源项目传统度量元向量集SCPIVS中实例对应;
[0019] S1.7、基于开源数据历史记录构建目标项目实例标签TLABEL =[ttag1, ttag2, …, ttagj],其中,j=1,2,3,…,m;该标签与步骤S1.5目标项目传统度量元向量集TCPIVS中实例对应;
[0020] S1.8、构建项目向量集PVS={SCPIVS, SLABEL, TCPIVS, TLABEL}。
[0021] 其中,步骤S2包括如下步骤:
[0022] S2.1、构建目标实例优化索引IPI,源实例索引列表ASI;
[0023] S2.2、选择一个目标实例向量;
[0024] S2.3、若IPI的列表长度为空,则构建实例训练集的全局特征向量GFV为步骤S2.2的目标实例向量,否则GFV为实例训练集中所有实例的同一度量元标准差的集合;
[0025] S2.4、使用步骤S2.1的源实例索引列表ASI对步骤S1中的源项目传统度量元向量集SCPIVS选择实例构建待选择源实例库SIL;
[0026] S2.5、计算待选择源实例库SIL中每一个实例与GFV之间的欧式距离,并返回最小欧氏距离对应的索引min‑index;
[0027] S2.6、将min‑index加入到步骤S2.1的目标实例优化索引IPI中;
[0028] S2.7、将源实例索引列表ASI中的min‑index删除;
[0029] S2.8、设置每一个目标实例选择的源实例个数为k,循环执行步骤S2.3 S2.7,直~到目标实例优化索引IPI长度满足k;
[0030] S2.9、经步骤S2.8执行后,得到目标实例优化索引IPI。
[0031] 其中,步骤S3包括如下步骤:
[0032] S3.1、将目标项目中的每一个实例按照步骤S2执行得到每一个目标实例的目标实例优化索引IPI;
[0033] S3.2、将步骤S3.1中每一个目标实例得到的优化索引结合并去重,构建预训练集优化索引TIPI;
[0034] S3.3、使用步骤S3.2得到的预训练集优化索引TIPI对步骤S1的源项目传统度量元向量集SCPIVS按实例选取,得到预训练集的实例向量集TPRED‑D;
[0035] S3.4、使用步骤S3.2得到的预训练集优化索引TIPI对步骤S1的源项目实例标签SLABEL按实例选取,得到预训练集的标签集TPRED‑L;
[0036] S3.5、构建预训练集TPRED={TPRED‑D, TPRED‑L}。
[0037] 其中,步骤S4包括如下步骤:
[0038] S4.1、将步骤S3得到的预训练集的实例向量集TPRED‑D与预训练集的标签集TPRED‑L按列组合,并将标签集放在最后一列;
[0039] S4.2、使用spearman计算每一个度量元与最后一列标签直接的相关性,得到相关性列表CList;
[0040] S4.3、将步骤S4.2的相关性列表CList所有元素取绝对值后按从大到小排序,返回特征对应索引;
[0041] S4.4、设置选择相关性特征索引个数为q;
[0042] S4.5、使用步骤S4.4的相关性特征索引个数q对步骤S4.3返回的特征索引进行选择,并使用得到的特征索引构建源项目相关性特征集SPTFS;
[0043] S4.6、将步骤S1的目标项目传统度量元向量集TCPIVS和目标项目实例标签TLABEL按步骤S4.1 S4.5构建目标项目相关性特征集TPTFS;~
[0044] S4.7、计算源项目相关性特征集SPTFS中所有源实例与目标项目相关性特征集TPTFS中的一个实例相关性特征集的欧氏距离,并返回欧式距离从小到大排序后的索引列表,设置从SPTFS中选择实例个数为p,则获得该目标实例选出的p个索引;
[0045] S4.8、将目标项目相关性特征集TPTFS中所有目标实例按照步骤S4.7处理得到优化索引集合,将该索引集合去重得到目标项目的优化索引TPOI。
[0046] 其中,步骤S5包括如下步骤:
[0047] S5.1、使用步骤S4得到的目标项目的优化索引TPOI对步骤S3预训练集的实例向量集TPRED‑D进行选择,得到基于优化实例选择的训练特征集BOD‑D;
[0048] S5.2、使用步骤S4得到的目标项目的优化索引TPOI对步骤S3预训练集的标签集TPRED‑L进行选择,得到基于优化实例选择的标签集BOD‑L;
[0049] S5.3、构建基于优化实例选择的训练集BOD={BOD‑D, BOD‑L}。
[0050] 其中,步骤S6包括如下步骤:
[0051] S6.1、通过步骤S1得到项目向量集PVS={SCPIVS, SLABEL, TCPIVS, TLABEL};
[0052] S6.2、通过步骤S2得到目标实例优化索引IPI;
[0053] S6.3、通过步骤S3得到预训练集的实例向量集TPRED‑D和预训练集的标签集TPRED‑L;
[0054] S6.4、通过步骤S4得到目标项目的优化索引TPOI;
[0055] S6.5、通过步骤S5得到基于优化实例选择的训练特征集BOD‑D和基于优化实例选择的标签集BOD‑L;
[0056] S6.6、使用Logistic分类算法对步骤S6.5的基于优化实例选择的训练特征集BOD‑D和基于优化实例选择的标签集BOD‑L进行模型训练;
[0057] S6.7、将步骤S6.6训练得到的模型对步骤S1的目标项目传统度量元向量集TCPIVS进行缺陷预测,得到预测标签集PRED_LABEL,结合目标项目实例标签TLABEL通过公式计算得到f‑score;
[0058] S6.8、得到基于优化实例选择的跨项目软件缺陷预测方法BOICP。
[0059] 本发明的上述技术方案的有益效果如下:
[0060] 本发明提供一种基于优化实例选择的跨项目软件缺陷预测方法,首先针对每一个目标实例构建全局特征向量,使用该向量从源项目中进行实例选择,然后在选出的训练集中使用相关性分析,使用实例的相关性特征进一步选择源实例,将选出的所有源实例组成训练数据集,使用该训练数据集建立跨项目缺陷预测模型,有助于实现更好的跨项目缺陷预测效果。

附图说明

[0061] 图1为本发明的流程框图;
[0062] 图2为本发明中基于优化实例选择的训练集BOD流程图;
[0063] 图3为本发明中不同k下选中的实例个数图;
[0064] 图4为本发明中不同k下使用Logistic得到的f‑score图。

具体实施方式

[0065] 为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0066] 如图1所示,本发明提供一种基于优化实例选择的跨项目软件缺陷预测方法,包括如下步骤:
[0067] S1、构建项目向量集PVS;
[0068] S2、构建目标实例优化索引IPI;
[0069] S3、构建预训练集TPRED;
[0070] S4、构建目标项目的优化索引TPOI;
[0071] S5、构建基于优化实例选择的训练集BOD;
[0072] S6、构建基于优化实例选择的跨项目软件缺陷预测方法BOICP。
[0073] 步骤S1、构建项目向量集PVS的具体步骤如下:
[0074] S1.1、基于开源网站获取软件项目集合;
[0075] S1.2、以项目类作为实例构建项目实例集合;
[0076] S1.3、基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建特征集{WMC, DIT, NOC, CBO, RFC, LCOM, LCOM3, NPM, DAM, MOA, MFA, CAM, IC, CBW, AMC, Ca, Ce,Max_CC, Avg_CC, LOC },其中,WMC代表每个类的加权方法,DIT代表继承树的深度,NOC代表子类的数目,CBO代表对象类之间的耦合,RFC代表一个类的响应,LCOM和LCOM3代表在方法上缺少的凝聚力,NPM代表公共类的个数,DAM代表数据访问指标,MOA代表聚合的量度,MFA代表功能抽象的量度,CAM代表类方法之间的聚合,IC代表继承耦合,CBW代表方法之间的耦合,AMC代表平均方法复杂度,Ca代表传入耦合,Ce代表传出耦合,Max_CC代表McCabe圈复杂性的最大值,Avg_CC代表McCabe圈复杂性的平均值,LOC代表代码的行数。
[0077] S1.4、将源项目中的所有实例按上述步骤处理得到源项目传统度量元向量集SCPIVS =[tradition_value1, tradition_value2, …, tradition_ valuei],其中,i=1,2,3,…,n;
[0078] S1.5、将目标项目中的所有实例按照相同的步骤处理得到目标项目传统度量元向量集TCPIVS =[tradition_value1, tradition_value2, …, tradition_valuej],其中,j=1,2,3,…,m。
[0079] S1.6、基于开源数据历史记录构建源项目实例标签SLABEL =[stag1, stag2, …, stagi],其中,i=1,2,3,…,n;该标签与源项目传统度量元向量集SCPIVS中实例对应;
[0080] S1.7、基于开源数据历史记录构建目标项目实例标签TLABEL =[ttag1, ttag2, …, ttagj],其中,j=1,2,3,…,m;该标签与目标项目传统度量元向量集TCPIVS中实例对应。
[0081] S1.8、构建项目向量集PVS={SCPIVS, SLABEL, TCPIVS, TLABEL}。
[0082] 步骤S2、构建目标实例优化索引IPI的具体步骤如下:
[0083] S2.1、构建目标实例优化索引IPI,源实例索引列表ASI。
[0084] S2.2、选择一个目标实例向量;
[0085] S2.3、若IPI的列表长度为空,则构建实例训练集的全局特征向量GFV为步骤S2.2的目标实例向量,否则GFV为实例训练集中所有实例的同一度量元标准差的集合。
[0086] S2.4、使用步骤S2.1的源实例索引列表ASI对步骤S1中的源项目传统度量元向量集SCPIVS选择实例构建待选择源实例库SIL。
[0087] S2.5、计算待选择源实例库SIL中每一个实例与GFV之间的欧式距离,并返回最小欧氏距离对应的索引min‑index。
[0088] S2.6、将min‑index加入到步骤S2.1的目标实例优化索引IPI中;
[0089] S2.7、将源实例索引列表ASI中的min‑index删除。
[0090] S2.8、设置每一个目标实例选择的源实例个数为5,循环执行步骤S2.3 步骤S2.7,~直到目标实例优化索引IPI长度满足k;
[0091] S2.9、经步骤S2.8执行后,得到目标实例优化索引IPI。
[0092] 步骤S3、构建预训练集TPRED的具体步骤如下:
[0093] S3.1、将目标项目中的每一个实例按照步骤S2.1 S2.9执行得到每一个目标实例~的目标实例优化索引IPI;
[0094] S3.2、将步骤S3.1中每一个目标实例得到的优化索引结合并去重,构建预训练集优化索引TIPI。
[0095] S3.3、使用步骤S3.2得到的预训练集优化索引TIPI对步骤S1.8的源项目传统度量元向量集SCPIVS按实例选取,得到预训练集的实例向量集TPRED‑D;
[0096] S3.4、使用步骤S3.2得到的预训练集优化索引TIPI对步骤S1.6的源项目实例标签SLABEL按实例选取,得到预训练集的标签集TPRED‑L。
[0097] S3.5、构建预训练集TPRED={TPRED‑D, TPRED‑L}。
[0098] 步骤S4、构建目标项目的优化索引TPOI的具体步骤如下:
[0099] S4.1、将步骤S3.5得到预训练集的实例向量集TPRED‑D与预训练集的标签集TPRED‑L按列组合,并将标签集放在最后一列;
[0100] S4.2、使用spearman计算每一个度量元与最后一列标签直接的相关性,得到相关性列表CList。
[0101] S4.3、将步骤S4.2的相关性列表CList所有元素取绝对值后按从大到小排序,返回特征对应索引;
[0102] S4.4、设置选择相关性特征索引个数10;
[0103] S4.5、使用步骤S4.4的相关性特征索引个数对步骤S4.3返回的特征索引进行选择,并使用得到的特征索引构建源项目相关性特征集SPTFS。
[0104] S4.6、将步骤S1.5的目标项目传统度量元向量集TCPIVS和步骤S1.7的目标项目实例标签TLABEL按步骤S4.1 S4.5构建目标项目相关性特征集TPTFS。~
[0105] S4.7、计算源项目相关性特征集SPTFS中所有源实例与目标项目相关性特征集TPTFS中的一个实例相关性特征集的欧氏距离,并返回欧式距离从小到大排序后的索引列表,设置从SPTFS中选择实例个数2,则获得该目标实例选出的2个索引。
[0106] S4.8、将目标项目相关性特征集TPTFS中所有目标实例按照步骤S4.7处理得到优化索引集合,将该索引集合去重得到目标项目的优化索引TPOI。
[0107] 步骤S5、构建基于优化实例选择的训练集BOD的具体步骤如下:
[0108] S5.1、使用步骤S4得到的目标项目的优化索引TPOI对步骤S3.3预训练集的实例向量集TPRED‑D进行选择,得到基于优化实例选择的训练特征集BOD‑D。
[0109] S5.2、使用步骤S4得到的目标项目的优化索引TPOI对步骤S3.3预训练集的标签集TPRED‑L进行选择,得到基于优化实例选择的标签集BOD‑L。
[0110] S5.3、构建基于优化实例选择的训练集BOD={BOD‑D, BOD‑L}。
[0111] 构建基于优化实例选择的训练集BOD的流程图如图2所示。
[0112] 步骤S6、构建基于优化实例选择的跨项目软件缺陷预测方法BOICP的具体步骤如下:
[0113] 选择ivy‑2.0作为源项目,选择synapse‑1.2作为目标项目。根据源项目实例情况构建源项目传统度量元向量集SCPIVS和源项目实例标签SLABEL,根据目标项目实例情况构建目标项目传统度量元向量集TCPIVS和目标项目实例标签TLABEL。
[0114] 按上述定义的构建目标实例优化索引方法得到选择不同源实例个数时的目标实例优化索引IPI。
[0115] 按上述定义的构建预训练集方法得到预训练集的实例向量集TPRED‑D和预训练集的标签集TPRED‑L。
[0116] 按上述定义的构建目标项目的优化索引方法,得到目标项目的优化索引TPOI。
[0117] 将选择特征个数k设置在1到5范围内,在每一个k下获得基于特征子集的实例选择训练集BOD={BOD‑D, BOD‑D}。
[0118] 使用Logistic分类器对基于特征子集的实例选择训练集BFSID建立分类模型并预测,通过实验表明,该模型得到的f‑score值最大为0.343,该值大于没有使用该实例选择方法得到的0.149;通过本发明建立的模型性能优于没有使用该实例选择方法建立的模型,从而表明基于优化实例选择的跨项目软件缺陷预测方法的有效性。
[0119] 不同k下选中的实例个数如图3所示。
[0120] 不同k下使用Logistic得到的f‑score如图4所示。
[0121] 本发明首先针对每一个目标实例构建全局特征向量,使用该向量从源项目中进行实例选择,然后在选出的训练集中使用相关性分析,使用实例的相关性特征进一步选择源实例,将选出的所有源实例组成训练数据集,使用该训练数据集建立跨项目缺陷预测模型,有助于实现更好的跨项目缺陷预测效果。
[0122] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。