[发明专利]一种面向软件缺陷个数预测的特征选择方法有效
申请号: | 201710374939.8 | 申请日: | 2017-05-24 |
公开(公告)号: | CN107239798B | 公开(公告)日: | 2020-06-09 |
发明(设计)人: | 余啸;刘进;马子逸;崔晓晖;谷懿;井溢洋 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06K9/62 | 分类号: | G06K9/62;G06F11/36 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 鲁力 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 软件 缺陷 个数 预测 特征 选择 方法 | ||
1.一种面向软件缺陷个数预测的特征选择方法,其特征是,包括以下步骤:
步骤1,挖掘软件历史数据,从中抽取出有用的软件模块;软件模块粒度可根据实际应用场景,可设置为文件、包、类或函数;然后标记这些软件模块的缺陷数目;
步骤2,提取软件模块中与软件缺陷有关的特征,提取了20个度量属性:加权方法数,继承树深度,孩子数,对象类之间的耦合度,类的响应,内聚缺乏度,传入耦合,传出耦合,公开方法数,代码行数,数据访问度量,聚合度量,功能抽象度量,方法间的内聚度,继承耦合,方法间耦合,平均方法复杂度,最大McCabe环形复杂度,平均McCabe环形复杂度;这20个特征形成了原始的特征集;在经过了步骤1-2后,提取模块特征和标记软件模块的缺陷数目后形成了软件模块数据,其中,最后一位为该模块的缺陷个数:
步骤3,利用线性Pearson系数计算特征之间的关联性,两个特征之间的冗余度越大,它们的关联性就越强,关联性计算公式为:其中,xik,xjk分别表示第k个软件模块Xk上特征fi的值和特征fj的值,分别表示在所有软件模块数据上特征fi的均值和fj的均值;rij表示特征fi和特征fj之间的关联度,取值介于-1和1之间;其越接近1或-1,关联性越强,越接近于0,关联性越弱;
步骤4,利用谱聚类算法根据特征之间的关联性对这些特征进行聚类,形成K个簇,具体包括:
步骤4.1,构造特征关联性矩阵W,其中Wij表示特征fi与特征fj的关联性;两个特征的负相关性强,他们之间的冗余度也很高,由于特征关联性矩阵需要每个值都为正数,因此需要把步骤3中求得的特征关联性为负值的转换为绝对值;
步骤4.2,根据特征关联性矩阵W计算归一化对角矩阵
步骤4.3,根据归一化对角矩阵D计算归一化拉普拉斯图矩阵L=D1/2WD1/2;
步骤4.4,计算普拉斯图矩阵L的特征向量,将前m个特征值最大的向量按列放置成一个矩阵X,即X=[V1,V2,…,Vm],其中V1,V2,…,Vm依次为前m个特征值最大的特征向量;
步骤4.5,归一化矩阵X形成矩阵Y;
步骤4.6,对矩阵Y按每行为一个数据,采用K-Means算法对所有模块数据进行聚类,矩阵Y中第i行的数据就是原来的第i个软件模块Xi,将特征集划分为K个簇;
步骤5,利用线性Pearson系数衡量计算每个特征与这些模块数据的缺陷数目之间的关联性Ri,其计算公式为:其中,xki,yk分别表示第k个软件模块Xk上特征fi和缺陷个数的取值,分别表示在所有软件模块数据上特征fi和缺陷数目的均值;Ri表示特征fi和缺陷个数间的关联度,取值介于-1和1之间;其越接近1或-1,关联性越强,越接近于0,关联性越弱;
步骤6,根据特征相关性对每个簇中的特征进行排序,从步骤5中获得的每个簇中选取相关性最高的n个特征构成最终的特征子集。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710374939.8/1.html,转载请声明来源钻瓜专利网。