首页> 中国专利> 一种基于特征相关性分析的实例选择跨项目缺陷预测方法

一种基于特征相关性分析的实例选择跨项目缺陷预测方法

摘要

本发明属于软件缺陷预测技术领域,提供一种基于特征相关性分析的实例选择跨项目缺陷预测方法,包括如下步骤:S1、构建项目实例向量集CPIVS;S2、构建相关性权重索引集CWIS;S3、构建相关性特征集CFS;S4、计算实例相关性特征之间距离;S5、构建基于相关性训练集CTS;S6、构建基于特征相关性分析的实例选择跨项目缺陷预测方法FCADP。本发明通过计算每一个目标实例选择出的项目特征与源项目选择出的特征之间的相似度进行源实例选择,将选出的所有源实例组成训练数据集,根据目标实例特征进一步合理的选择源实例。

著录项

  • 公开/公告号CN114860595A

    专利类型发明专利

  • 公开/公告日2022-08-05

    原文格式PDF

  • 申请/专利权人 南通大学;

    申请/专利号CN202210491038.8

  • 申请日2022-05-07

  • 分类号G06F11/36(2006.01);G06K9/62(2022.01);

  • 代理机构南通一恒专利商标代理事务所(普通合伙) 32553;

  • 代理人梁金娟

  • 地址 226000 江苏省南通市崇川区啬园路9号

  • 入库时间 2023-06-19 16:20:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-03-07

    发明专利申请公布后的撤回 IPC(主分类):G06F11/36 专利申请号:2022104910388 申请公布日:20220805

    发明专利申请公布后的撤回

说明书

技术领域

本发明属于软件缺陷预测技术领域,具体涉及一种基于特征相关性分析的实例选择跨项目缺陷预测方法。

背景技术

软件缺陷会对企业造成无法估量的经济损失,甚至会波及与人类活动相关的领域。如果软件缺陷能够在开发早期被发现,那么软件质量就能够得到进一步改进,同时相关的经济损失得到较大程度的降低。然而在跨项目缺陷预测场景中,存在目标软件中训练数据较少、旧数据需要大量时间资金去标记和不同模块开发往往有所差异等问题,这使得跨项目软件缺陷预测技术成为当前软件测试研究中的一大热点。

相关性分析可以研究自变量和因变量之间是否存在相关性,反应变量之间的关联性,相关系数取值在-1到1之间,绝对值越大表明变量之间关联性越大,绝对值越小说明变量之间关联性越小,相关系数为0说明变量之间无关联性,相关系数大于0说明两个变量是正相关,反之是负相关。

由于实例中不同的特征与标签的关系程度有所差异,所以导致使用实例所有特征进行实例选择的结果不够准确,为了进一步优化源实例选择,需提供一种基于特征相关性分析的实例选择跨项目缺陷预测方法,以实现更好的跨项目缺陷预测效果。

发明内容

本发明要解决的技术问题是提供一种基于特征相关性分析的实例选择跨项目缺陷预测方法,通过相关性分析实现更加准确的源实例选择,实现更好的跨项目缺陷预测效果。

为解决上述技术问题,本发明的实施例提供一种一种基于特征相关性分析的实例选择跨项目缺陷预测方法,包括如下步骤:

S1、构建项目实例向量集CPIVS;

S2、构建相关性权重索引集CWIS;

S3、构建相关性特征集CFS;

S4、计算实例相关性特征之间距离;

S5、构建基于相关性训练集CTS;

S6、构建基于特征相关性分析的实例选择跨项目缺陷预测方法FCADP。

其中,步骤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处理得到源项目传统度量元向量集SCPIVS=[tradition_value

S1.5、将目标项目中的所有实例按步骤S1.3处理得到目标项目传统度量元向量集TCPIVS=[tradition_value

S1.6、基于开源数据历史记录构建源项目实例标签SLABEL=[stag

S1.7、基于开源数据历史记录构建目标项目实例标签TLABEL=[ttag

S1.8、构建项目实例向量集CPIVS={SCPIVS,SLABEL,TCPIVS,TLABEL}。

其中,步骤S2包括如下步骤:

S2.1、将步骤S1.8中的源项目传统度量元向量集SCPIVS与步骤S1.8中的源项目实例标签SLABEL按列拼接,将标签放在最后一列,得到源项目向量集SS={item

S2.2、取第一个特征类型,使用spearman计算该类型与类型标签之间的相关系数,得到Corr

S2.3、按照步骤S1.3的传统度量元集重复步骤S2.2,得到度量元相关性列表Metric_corr=[Corr

S2.4、将步骤S2.3的度量元相关性列表Metric_corr中每一个元素取绝对值,只考虑相关的强弱,不考虑相关的正负;

S2.5、将步骤S2.3的度量元相关性列表Metric_corr中元素从大到小排序得到对应的源项目特征相关性权重索引列表CWIS-s;

S2.6、将步骤S1.8中的目标项目传统度量元向量集TCPIVS与步骤S1.8中的目标项目实例标签TLABEL按列拼接,将标签放在最后一列,得到源项目向量集TT={item

S2.7、将步骤S2.6按步骤S2.2~步骤S2.5执行得到对应的目标项目特征相关性权重索引列表CWIS-t;

S2.8、构建相关性权重索引集CWIS={CWIS-s,CWIS-t}。

其中,步骤S3包括如下步骤:

S3.1、设置选择特征个数k;

S3.2、使用步骤S3.1对步骤S2.8中源项目特征相关性权重索引列表CWIS-s进行选择,得到源项目特征选择索引SSelected-index;

S3.3、将步骤S1.8的源项目传统度量元向量集SCPIVS中每一个实例向量按步骤S3.2的源项目特征选择索引SSelected-index取值得到源项目相关性特征集CFS-s={csf

S3.4、使用步骤S3.1对步骤S2.8中目标项目特征相关性权重索引列表CWIS-t进行选择,得到目标项目特征选择索引TSelected-index;

S3.5、将步骤S1.8的目标项目传统度量元向量集TCPIVS中每一个实例向量按步骤S3.4的目标项目特征选择索引TSelected-index,取值得到目标项目相关性特征集CFS-t={ctf

S3.6、构建相关性特征集CFS={CFS-s,CFS-t}。

其中,步骤S4包括如下步骤:

S4.1、获得步骤S3.6的源项目相关性特征集CFS-s;

S4.2、获得步骤S3.6的目标项目相关性特征集CFS-t;

S4.3、选择步骤S4.2的目标项目相关性特征集CFS-t中一个实例的相关性特征向量,按顺序依次计算与源项目相关性特征集CFS-s中每一个实例的相关性特征向量的欧氏距离,得到一个目标实例相关性特征距离列表Corr_dist=[dist

其中,步骤S5包括如下步骤:

S5.1、选择步骤S4.2中目标项目相关性特征集的一个目标实例相关性特征向量,按步骤S4.3得到该目标实例相关性特征距离列表Corr_dist=[dist

S5.2、将步骤S5.1中实例间距离列表Corr_dist从小到大排序,并记录排序后的索引Sort_Corr;

S5.3、选择步骤S5.2中Sort_corr前p个索引,构建前p个最相似实例索引集MSII_p;

S5.4、遍历步骤S4.2中目标项目相关性特征集CFS-t按照步骤S5.1~S5.3执行得到对应该目标实例的最相似源实例索引集MSII_p

S5.5、将步骤S5.4得到的每一个目标实例对应的最相似源实例集MSII_p

S5.6、将步骤S5.5中最相似重复源实例索引集Re-index去除重复的实例索引得到训练集实例索引M-index;

S5.7、将步骤S1.4中源项目传统度量元向量集SCPIVS按照步骤S5.6的训练集实例索引M-index取出,得到基于相关性数据CTS-data;

S5.8、将步骤S1.6中源项目实例标签SLABEL按照步骤S5.6的训练集实例索引M-index取出,得到基于相关性标签CTS-label;

S5.9、构建基于相关性训练集CTS={CTS-data,CTS-label}。

其中,步骤S6包括如下步骤:

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

S6.2、通过步骤S2得到相关性权重索引集CWIS={CWIS-s,CWIS-t};

S6.3、通过步骤S3得到源项目相关性特征集CFS-s和目标项目相关性特征集CFS-t;

S6.4、通过步骤S4得到一个目标实例相关性特征距离列表Corr_dist;

S6.5、通过步骤S4得到基于相关性训练集CTS={CTS-data,CTS-label};

S6.6、使用Logistic分类算法对步骤S6.5的基于相关性训练集CTS中的基于相关性数据CTS-data和基于相关性标签CTS-label进行模型训练;

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

S6.8、得到基于特征相关性分析的实例选择跨项目缺陷预测方法FCADP。

本发明的上述技术方案的有益效果如下:

本发明提供了一种基于特征相关性分析的实例选择跨项目缺陷预测方法,更加准确的选择源实例,分别选择与类型标签关系程度较高的源项目特征和目标项目特征,通过计算每一个目标实例选择出的项目特征与源项目选择出的特征之间的相似度进行源实例选择,将选出的所有源实例组成训练数据集,根据目标实例特征进一步合理的选择源实例。

附图说明

图1为本发明的流程图;

图2为本发明中构建项目实例向量集CPIVS流程图;

图3为本发明中构建相关性特征集CFS流程图;

图4为本发明中不同k下使用Logistic得到的f-score图。

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。

如图1所示,本发明提供一种基于特征相关性分析的实例选择跨项目缺陷预测方法,包括如下步骤:

S1、构建项目实例向量集CPIVS;

S2、构建相关性权重索引集CWIS;

S3、构建相关性特征集CFS;

S4、计算实例相关性特征之间距离;

S5、构建基于相关性训练集CTS;

S6、构建基于特征相关性分析的实例选择跨项目缺陷预测方法FCADP。

步骤S1、构建项目实例向量集CPIVS的具体步骤如下:

基于开源网站获取软件项目集合;以项目类作为实例构建项目实例集合;基于开源数据历史记录、项目源代码语法结构、源代码抽象语法树构建特征集{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代表代码的行数。

将源项目中的所有实例按上述步骤处理得到源项目传统度量元向量集SCPIVS=[tradition_value

基于开源数据历史记录构建源项目实例标签SLABEL=[stag

构建项目实例向量集CPIVS={SCPIVS,SLABEL,TCPIVS,TLABEL}。

构建项目实例向量集CPIVS的流程图如图2所示。

步骤S2、构建相关性权重索引集CWIS的具体步骤如下:

将源项目传统度量元向量集SCPIVS与源项目实例标签SLABEL按列拼接,将标签放在最后一列,得到源项目向量集SS={item

按照传统度量元集重复上述步骤,得到度量元相关性列表Metric_corr=[Corr

将目标项目传统度量元向量集TCPIVS与目标项目实例标签TLABEL按列拼接,将标签放在最后一列,得到源项目向量集TT={item

将源项目向量集TT按照目标项目向量集SS相同的处理方法执行得到对应的目标项目特征相关性权重索引列表CWIS-t。

构建相关性权重索引集CWIS={CWIS-s,CWIS-t}。

步骤S3、构建相关性特征集CFS的具体步骤如下:

设置选择特征个数k;对源项目特征相关性权重索引列表CWIS-s进行选择,得到源项目特征选择索引SSelected-index;将源项目传统度量元向量集SCPIVS中每一个实例向量按源项目特征选择索引SSelected-index取值得到源项目相关性特征集CFS-s={csf

设置选择特征个数k;对目标项目特征相关性权重索引列表CWIS-t进行选择,得到目标项目特征选择索引TSelected-index。

将目标项目传统度量元向量集TCPIVS中每一个实例向量按目标项目特征选择索引TSelected-index取值得到目标项目相关性特征集CFS-t={ctf

构建相关性特征集CFS={CFS-s,CFS-t}。

构建相关性特征集CFS的流程图如图3所示。

步骤S4、计算实例相关性特征之间距离的具体步骤如下:

获得源项目相关性特征集CFS-s;获得目标项目相关性特征集CFS-t。

选择目标项目相关性特征集CFS-t中一个实例的相关性特征向量,按顺序依次计算与源项目相关性特征集CFS-s中每一个实例的相关性特征向量的欧氏距离,得到一个目标实例相关性特征距离列表Corr_dist=[dist

步骤S5、构建基于相关性训练集CTS的具体步骤如下:

选择目标项目相关性特征集的一个目标实例相关性特征向量,按步骤S4得到该目标实例相关性特征距离列表Corr_dist=[dist

将实例间距离列表Corr_dist从小到大排序,并记录排序后的索引Sort_Corr;选择Sort_corr前p个索引,构建前p个最相似实例索引集MSII_p。

遍历目标项目相关性特征集CFS-t按照上述步骤执行得到对应该目标实例的最相似源实例索引集MSII_p

将源项目传统度量元向量集SCPIVS按照训练集实例索引M-index取出,得到基于相关性数据CTS-data。

将源项目实例标签SLABEL按照训练集实例索引M-index取出,得到基于相关性标签CTS-label。

构建基于相关性训练集CTS={CTS-data,CTS-label}。

步骤S6构建基于特征相关性分析的实例选择跨项目缺陷预测方法FCADP的具体步骤如下:

选择ivy-2.0作为源项目,选择synapse-1.2作为目标项目。根据源项目实例情况构建源项目传统度量元向量集SCPIVS和源项目实例标签SLABEL,根据目标项目实例情况构建目标项目传统度量元向量集TCPIVS和目标项目实例标签TLABEL。

按上述定义的构建相关性权重索引集方法得到源项目特征相关性权重索引列表CWIS-s和目标项目特征相关性权重索引列表CWIS-t。

按上述定义的构建相关性特征集方法得到源项目相关性特征集CFS-s和目标项目相关性特征集CFS-t。

通过计算实例相关性特征距离,得到目标实例对应的实例相关性特征距离列表Corr_dist;构建前2个最相似实例索引集MSII_2。获得基于相关性训练集CTS={CTS-data,CTS-label}。

使用Logistic分类器对基于相关性训练集CTS建立分类模型并预测,通过实验表明,该模型得到的f-score值为0.330,该值大于没有使用实例选择方法得到的0.149;通过本发明建立的模型性能优于没有使用实例建立的模型,从而表明基于特征相关性分析的实例选择跨项目缺陷预测方法的有效性。

不同k下使用Logistic得到的f-score如图4所示。

本发明提供了一种基于特征相关性分析的实例选择跨项目缺陷预测方法,更加准确的选择源实例,分别选择与类型标签关系程度较高的源项目特征和目标项目特征,通过计算每一个目标实例选择出的项目特征与源项目选择出的特征之间的相似度进行源实例选择,将选出的所有源实例组成训练数据集,根据目标实例特征进一步合理的选择源实例。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号