法律状态公告日
法律状态信息
法律状态
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所示。
本发明提供了一种基于特征相关性分析的实例选择跨项目缺陷预测方法,更加准确的选择源实例,分别选择与类型标签关系程度较高的源项目特征和目标项目特征,通过计算每一个目标实例选择出的项目特征与源项目选择出的特征之间的相似度进行源实例选择,将选出的所有源实例组成训练数据集,根据目标实例特征进一步合理的选择源实例。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
机译: 基于近邻点的跨实例缺陷混合实例选择方法
机译: 跨项目软件缺陷预测方法及系统
机译: 一种分析情感词的缺陷严重度预测系统及方法