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

一种基于实例选择的跨项目缺陷预测方法技术

技术编号:34525102 阅读:12 留言:0更新日期:2022-08-13 21:15
本发明专利技术属于软件缺陷预测技术领域,提供一种基于实例选择的跨项目缺陷预测方法,包括如下步骤:S1、构建分类实例集CID;S2、将分类实例集中的所有度量值中心化EMC;S3、组合分布特征向量CDFV;S4、实例间距离计算BIDCM;S5、构建最相似源实例索引集;S6、构建训练集ND;S7、构建跨项目缺陷预测分类方法;S8、构建基于实例选择的跨项目缺陷预测方法ISCPDP。本发明专利技术通过选择组合分布特征向量与目标组合分布特征向量最相似的实例集组建训练集,优化后的训练集有利于建立精确的缺陷预测模型,进一步提高跨项目缺陷预测效率。目缺陷预测效率。目缺陷预测效率。

【技术实现步骤摘要】
一种基于实例选择的跨项目缺陷预测方法


[0001]本专利技术属于软件缺陷预测
,具体涉及一种基于实例选择的跨项目缺陷预测方法。

技术介绍

[0002]从项目角度,缺陷预测技术分为项目内软件缺陷预测和跨项目软件缺陷预测。项目内软件缺陷预测的训练数据和测试数据均来自同一个项目,训练数据和测试数据之间分布差异较小;跨项目软件缺陷预测的训练数据和测试数据均来自不同项目,训练数据和测试数据之间不仅分布差异较大,而且可使用数据量相差也较大,由于以上特点使得跨项目软件缺陷研究成为软件缺陷研究领域的热点之一。
[0003]针对给定的目标项目,在构建缺陷预测模型的时候可能会遇到没有充足的历史训练数据,研究人员为了有效解决这个问题往往选择从与本项目不同项目中选择历史数据构建训练集。
[0004]在训练集方面,存在源项目中部分实例与目标项目中实例相关性不太高等问题,这些实例对分类模型的性能造成一定程度的影响,为了进一步提高跨项目缺陷预测的结果,需提供一种基于实例选择的跨项目缺陷预测方法。

技术实现思路

[0005]本专利技术要解决的技术问题是提供一种基于实例选择的跨项目缺陷预测方法,优化训练集的实例选择有助于提高缺陷预测的效率,实现更好的跨项目缺陷预测效果。
[0006]为解决上述技术问题,本专利技术的实施例提供一种基于实例选择的跨项目缺陷预测方法,包括如下步骤:
[0007]S1、构建分类实例集CID;
[0008]S2、将分类实例集中的所有度量值中心化EMC;
[0009]S3、组合分布特征向量CDFV;
[0010]S4、实例间距离计算BIDCM;
[0011]S5、构建最相似源实例索引集;
[0012]S6、构建训练集ND;
[0013]S7、构建跨项目缺陷预测分类方法;
[0014]S8、构建基于实例选择的跨项目缺陷预测方法ISCPDP。
[0015]其中,步骤S1包括如下步骤:
[0016]S1.1、基于开源网站获取软件项目集合;
[0017]S1.2、以项目类作为实例构建项目实例集合;
[0018]S1.3、基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建传统度量元集{WMC,DIT,NOC,CBO,RFC,LCOM,LCOM3,NPM,DAM,MOA,MFA,CAM,IC,CBM,AMC,Ca,Ce,Max_CC,Avg_CC,LOC},其中,WMC代表每个类的加权方法,DIT代表继承树的深度,NOC代表子
类的数目,CBO代表对象类之间的耦合,RFC代表一个类的响应,LCOM和LCOM3代表在方法上缺少的凝聚力,NPM代表公共类的个数,DAM代表数据访问指标,MOA代表聚合的量度,MFA代表功能抽象的量度,CAM代表类方法之间的聚合,IC代表继承耦合,CBM代表方法之间的耦合,AMC代表平均方法复杂度,Ca代表传入耦合,Ce代表传出耦合,Max_CC代表McCabe圈复杂性的最大值,Avg_CC代表McCabe圈复杂性的平均值,LOC代表代码的行数;
[0019]S1.4、将源项目中的所有实例按步骤S1.3处理得到源项目传统度量元向量集SPMVS=[tradition_metric1,tradition_metric2,

,tradition_metric
i
],其中,i=1,2,3,

,n;
[0020]S1.5、将目标项目中的所有实例按步骤S1.3处理得到目标项目传统度量元向量集TPMVS=[tradition_metric1,tradition_metric2,

,tradition_metric
j
],其中,j=1,2,3,

,m;
[0021]S1.6、基于开源数据历史记录构建源项目实例标签source_label=[slabel1,slabel2,

,slabel
i
],其中,i=1,2,3,

,n;该标签与步骤S1.4源项目传统度量元向量集SPMVS中实例对应,记录其中有bug的实例的索引,使用该索引构建源项目正向实例索引集SPPIS,记录其中无bug的实例的索引,使用该索引构建源项目负向实例索引集SPNIS;
[0022]S1.7、基于开源数据历史记录构建目标项目实例标签target_label=[tlabel1,tlabel2,

,tlabel
j
],其中,j=1,2,3,

,m;该标签与步骤S1.5目标项目传统度量元向量集TPMVS中实例对应;记录其中有bug的实例的索引,使用该索引构建目标项目正向实例索引集TPPIS,记录其中无bug的实例的索引,使用该索引构建目标项目负向实例索引集TPNIS;
[0023]S1.8、将步骤S1.4的源项目传统度量元向量集SPMVS按照步骤S1.6中源项目正向实例索引集SPPIS构建源项目正向实例向量集SPPIVS,按照步骤S1.6中源项目负向实例索引集SPNIS构建源项目负向实例向量集SPNIVS;
[0024]S1.9、将步骤S1.5的目标项目传统度量元向量集TPMVS按照步骤S1.7中目标项目正向实例索引集TPPIS构建目标项目正向实例向量集TPPIVS,按照步骤S1.7中目标项目负向实例索引集TPNIS构建目标项目负向实例向量集TPNIVS;
[0025]S1.10、构建分类实例集CID={SPPIVS,SPNIVS,TPPIVS,TPNIVS}。
[0026]其中,步骤S2包括如下步骤:
[0027]S2.1、选择一个度量元,计算所有实例下该度量元集合的平均值metric_avg;
[0028]S2.2、将所有实例对应该度量元的值减去平均值metric_avg,得到中心化值cmetric;
[0029]S2.3、将步骤S1.3的传统度量元集中每一个度量元按照步骤S2.1、S2.2处理;
[0030]S2.4、将步骤S1.10的分类实例集CID中SPPIVS按照步骤S2.3处理得到源项目正向实例中心化向量集SPPIVS_EMC;
[0031]S2.5、将步骤S1.10的分类实例集CID中SPNIVS按照步骤S2.3处理得到源项目负向实例中心化向量集SPNIVS_EMC;
[0032]S2.6、将步骤S1.10的分类实例集CID中TPPIVS按照步骤S2.3处理得到目标项目正向实例中心化向量集TPPIVS_EMC;
[0033]S2.7、将步骤S1.10的分类实例集CID中TPNIVS按照步骤S2.3处理得到目标项目负
向实例中心化向量集TPNIVS_EMC。
[0034]其中,步骤S3包括如下步骤:
[0035]S3.1、选择一个实例,该实例由二十种度量元组成,计算该二十本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于实例选择的跨项目缺陷预测方法,其特征在于,包括如下步骤:S1、构建分类实例集CID;S2、将分类实例集中的所有度量值中心化EMC;S3、组合分布特征向量CDFV;S4、实例间距离计算BIDCM;S5、构建最相似源实例索引集;S6、构建训练集ND;S7、构建跨项目缺陷预测分类方法;S8、构建基于实例选择的跨项目缺陷预测方法ISCPDP。2.根据权利要求1所述的基于实例选择的跨项目缺陷预测方法,其特征在于,步骤S1包括如下步骤:S1.1、基于开源网站获取软件项目集合;S1.2、以项目类作为实例构建项目实例集合;S1.3、基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建传统度量元集{WMC,DIT,NOC,CBO,RFC,LCOM,LCOM3,NPM,DAM,MOA,MFA,CAM,IC,CBM,AMC,Ca,Ce,Max_CC,Avg_CC,LOC},其中,WMC代表每个类的加权方法,DIT代表继承树的深度,NOC代表子类的数目,CBO代表对象类之间的耦合,RFC代表一个类的响应,LCOM和LCOM3代表在方法上缺少的凝聚力,NPM代表公共类的个数,DAM代表数据访问指标,MOA代表聚合的量度,MFA代表功能抽象的量度,CAM代表类方法之间的聚合,IC代表继承耦合,CBM代表方法之间的耦合,AMC代表平均方法复杂度,Ca代表传入耦合,Ce代表传出耦合,Max_CC代表McCabe圈复杂性的最大值,Avg_CC代表McCabe圈复杂性的平均值,LOC代表代码的行数;S1.4、将源项目中的所有实例按步骤S1.3处理得到源项目传统度量元向量集SPMVS=[tradition_metric1,tradition_metric2,

,tradition_metric
i
],其中,i=1,2,3,

,n;S1.5、将目标项目中的所有实例按步骤S1.3处理得到目标项目传统度量元向量集TPMVS=[tradition_metric1,tradition_metric2,

,tradition_metric
j
],其中,j=1,2,3,

,m;S1.6、基于开源数据历史记录构建源项目实例标签source_label=[slabel1,slabel2,

,slabel
i
],其中,i=1,2,3,

,n;该标签与步骤S1.4源项目传统度量元向量集SPMVS中实例对应,记录其中有bug的实例的索引,使用该索引构建源项目正向实例索引集SPPIS,记录其中无bug的实例的索引,使用该索引构建源项目负向实例索引集SPNIS;S1.7、基于开源数据历史记录构建目标项目实例标签target_label=[tlabel1,tlabel2,

,tlabel
j
],其中,j=1,2,3,

,m;该标签与步骤S1.5目标项目传统度量元向量集TPMVS中实例对应;记录其中有bug的实例的索引,使用该索引构建目标项目正向实例索引集TPPIS,记录其中无bug的实例的索引,使用该索引构建目标项目负向实例索引集TPNIS;S1.8、将步骤S1.4的源项目传统度量元向量集SPMVS按照步骤S1.6中源项目正向实例索引集SPPIS构建源项目正向实例向量集SPPIVS,按照步骤S1.6中源项目负向实例索引集SPNIS构建源项目负向实例向量集SPNIVS;S1.9、将步骤S1.5的目标项目传统度量元向量集TPMVS按照步骤S1.7中目标项目正向
实例索引集TPPIS构建目标项目正向实例向量集TPPIVS,按照步骤S1.7中目标项目负向实例索引集TPNIS构建目标项目负向实例向量集TPNIVS;S1.10、构建分类实例集CID={SPPIVS,SPNIVS,TPPIVS,TPNIVS}。3.根据权利要求1所述的基于实例选择的跨项目缺陷预测方法,其特征在于,步骤S2包括如下步骤:S2.1、选择一个度量元,计算所有实例下该度量元集合的平均值metric_avg;S2.2、将所有实例对应该度量元的值减去平均值metric_avg,得到中心化值cmetric;S2.3、将步骤S1的传统度量元集中每一个度量元按照步骤S2.1、S2.2处理;S2.4、将步骤S1的分类实例集CID中SPPIVS按照步骤S2.3处理得到源项目正向实例中心化向量集SPPIVS_EMC;S2.5、将步骤S1的分类实例集CID中SPNIVS按照步骤S2.3处理得到源项目负向实例中心化向量集SPNIVS_EMC;S2.6、将步骤S1的分类实例集CID中TPPIVS按照步骤S2.3处理得到目标项目正向实例中心化向量集TPPIVS_EMC;S2.7、将步骤S1的分类实例集CID中TPNIVS按照步骤S2.3处理得到目标项目负向实例中心化向量集TPNIVS_EMC。4.根据权利要求1所述的基于实例选择的跨项目缺陷预测方法,其特征在于,步骤S3包括如下步骤:S3.1、选择一个实例,该实例由二十种度量元组成,计算该二十种度量值的最小值m_min,最大值m_max,平均值m_mean,标准差m_std,中位数m_median;S3.2、使用步骤S3.1构建实例的组合分布特征向量CDFV=[m_min,m_max,m_mean,m_std,m_median];S3.3、将步骤S2中的源项目正向实例中心化向量集SPPIVS_EMC按照步骤S3.2处理得到源项目...

【专利技术属性】
技术研发人员:文万志张瑞年王楚越祁佳篁沈陈强朱宁波李跃华程实
申请(专利权)人:南通大学
类型:发明
国别省市:

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

1