一种基于聚类集成的软件缺陷预测方法技术

技术编号:37346002 阅读:8 留言:0更新日期:2023-04-22 21:39
本发明专利技术提供了一种基于聚类集成的软件缺陷预测方法,属于软件缺陷预测技术领域,包括:从给定的项目数据中有放回的随机抽样N个软件实体x,从随机抽样的N个软件实体x中随机抽取m个度量元,形成数据集X

【技术实现步骤摘要】
一种基于聚类集成的软件缺陷预测方法


[0001]本专利技术属于软件缺陷预测
,具体涉及一种基于聚类集成的软件缺陷预测方法。

技术介绍

[0002]软件缺陷预测是软件质量保障中的关键技术之一,其动机是通过一些经济高效的技术,发现软件中存在的缺陷,保障软件产品的质量与可靠性。在软件开发过程中,不可避免的会产生软件缺陷,尽可能早的发现这些缺陷并将其修复,对软件后期的开发及维护具有极其重要的作用。这就使得软件缺陷预测技术在识别软件产品缺陷中具有广阔的应用前景。
[0003]无监督软件缺陷预测无需事先对待测软件项目中的数据进行标注,而是通过学习并挖掘自身数据的潜在结构以自动地识别软件缺陷。当目标项目是一个新开发的项目,并不存在历史缺陷数据或数据十分稀少,便可采用无监督缺陷预测。这对解决无历史缺陷数据或数据稀少的软件缺陷预测问题具有重要的研究意义。
[0004]近年来,研究者提出了一些基于聚类的无监督软件缺陷预测方法。然而这些方法大都依赖单个聚类的预测结果,其往往具有较低的准确性和较差的鲁棒性,难以实现对软件缺陷精确的预测。
[0005]总之,现有技术存在基于聚类的无监督软件缺陷预测方法依赖单个聚类的预测结果,具有较低的准确性和较差的鲁棒性,难以实现对软件缺陷精确的预测的问题。

技术实现思路

[0006]为了克服上述现有技术存在的不足,本专利技术提供了一种基于聚类集成的软件缺陷预测方法。
[0007]为了实现上述目的,本专利技术提供如下技术方案:
[0008]一种基于聚类集成的软件缺陷预测方法,包括:
[0009]从给定的项目数据中有放回的随机抽样N个软件实体x,从随机抽样的N个软件实体x中随机抽取m个度量元,形成数据集X
*
,其中N为项目数据的软件实体总数;
[0010]基于数据集X
*
,采用聚类算法,构建无监督软件缺陷预测模型;
[0011]根据无监督软件缺陷预测模型对软件实体进行缺陷预测,并对预测结果进行有缺陷和无缺陷标注,得到软件实体包含缺陷和无缺陷标注的预测标签向量p;
[0012]将所述预测标签向量p去除重复抽样的软件实体;
[0013]重复抽样数据集X
*
并生成预测标签向量p多次,对于被抽取到的软件实体x
i
,计算其被预测所生成的预测标签向量p(x
i
)的平均值P(x
i
),将P(x
i
)作为其集成预测结果;
[0014]若P(x
i
)大于0.5则说明所抽取的软件实体x
i
存在缺陷,若P(x
i
)小于等于0.5则说明所抽取的软件实体x
i
没有缺陷。
[0015]进一步,所述项目数据为待测软件项目的数据,软件实体指从程序代码或开发过
程中抽取的实例模块,为方法、类、文件、包或代码变更。
[0016]进一步,还包括:采用z

score方法,对给定的项目数据进行归一化处理;所述归一化处理算法如下:
[0017][0018]其中,x
i
是软件实体x第i个度量元的原始值,是x
i
归一化后的值,μ
x
是软件实体x的平均值,σ
x
是软件实体x的标准差。
[0019]进一步,所述聚类算法为谱聚类,其算法为:
[0020]构建邻接矩阵W,其算法为:
[0021][0022]计算拉普拉斯矩阵L,其算法为:
[0023]L=D

W
[0024]其中,D为度矩阵,为一个对角矩阵,其对角线元素
[0025]规范化拉普拉斯矩阵L得到L
sym
,其算法为:
[0026][0027]对L
sym
进行特征值分解,选取其次小特征值所对应的特征向量v,并将其标准化,得到无监督软件缺陷预测模型。
[0028]进一步,所述对预测结果进行有缺陷和无缺陷标注包括:
[0029]将v分为两簇,把v>0所对应的软件实体标记为缺陷类,把v≤0所对应的软件实体标注为无缺陷类,如果v>0所对应软件实体的总体度量元值小于v≤0所对应软件实体的总体度量元值,则将v>0所对应的软件实体标注为无缺陷类,其余的标注为缺陷类。
[0030]进一步,所述集成预测结果P(x
i
)算法为:
[0031][0032]其中,x
i
为被抽取到的待测软件实体,表示实际抽取到软件实体x
i
的次数,pj为抽取到的软件实体x
i
第j次预测所得到的标签向量。
[0033]进一步,所述有放回的随机抽样N个软件实体x包括:每次有放回的从给定项目数据X={x1,x2,

,x
N
}∈R
M
×
N
中抽取1个实体,共抽取N次,其中M表示项目数据X的软件度量元个数,N表示数据X的软件实体个数。
[0034]本专利技术提供的一种基于聚类集成的软件缺陷预测方法具有以下有益效果:
[0035]本专利技术采用集成学习和无监督聚类技术,设计了一种基于聚类集成的无监督软件缺陷预测方法,该方法无需事先标注数据以期自动识别软件缺陷,可用于无历史缺陷数据或历史缺陷数据匮乏的软件项目中;通过集成多个基聚类结果,使得本专利技术方法具有较高的缺陷识别效果,同时具有较好的鲁棒性,有助于更好地保障软件产品的质量与可靠性。解
决了现有技术中基于聚类的无监督软件缺陷预测方法依赖单个聚类的预测结果,具有较低的准确性和较差的鲁棒性,难以实现对软件缺陷精确的预测的问题。
附图说明
[0036]为了更清楚地说明本专利技术实施例及其设计方案,下面将对本实施例所需的附图作简单地介绍。下面描述中的附图仅仅是本专利技术的部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]图1为本专利技术实施例的一种基于聚类集成的软件缺陷预测方法的结构示意图;
[0038]图2为本专利技术实施例的本专利技术与其它5种方法在5个项目上的实验结果对比图。
具体实施方式
[0039]为了使本领域技术人员更好的理解本专利技术的技术方案并能予以实施,下面结合附图和具体实施例对本专利技术进行详细说明。以下实施例仅用于更加清楚地说明本专利技术的技术方案,而不能以此来限制本专利技术的保护范围。
[0040]实施例:
[0041]本专利技术提供了一种基于聚类集成的软件缺陷预测方法,如图1所示,包括:
[0042]S1:数据预处理,包括:对给定的项目数据进行归一化处理,消除软件实体不同度量元之间量纲的影响;项目数据为待测软件项目的数据,软件实体指从程序代码或开发过程中抽取的实例模块本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于聚类集成的软件缺陷预测方法,其特征在于,包括:从给定的项目数据中有放回的随机抽样N个软件实体x,从随机抽样的N个软件实体x中随机抽取m个度量元,形成数据集X
*
,其中N为项目数据的软件实体总数;基于数据集X
*
,采用聚类算法,构建无监督软件缺陷预测模型;根据无监督软件缺陷预测模型对软件实体进行缺陷预测,并对预测结果进行有缺陷和无缺陷标注,得到软件实体包含缺陷和无缺陷标注的预测标签向量p;将所述预测标签向量p去除重复抽样的软件实体;重复抽样数据集X
*
并生成预测标签向量p多次,对于被抽取到的软件实体x
i
,计算其被预测所生成的预测标签向量p(x
i
)的平均值P(x
i
),将P(x
i
)作为其集成预测结果;若P(x
i
)大于0.5则说明所抽取的软件实体x
i
存在缺陷,若P(x
i
)小于等于0.5则说明所抽取的软件实体x
i
没有缺陷。2.根据权利要求1所述的一种基于聚类集成的软件缺陷预测方法,其特征在于,所述项目数据为待测软件项目的数据,软件实体指从程序代码或开发过程中抽取的实例模块,为方法、类、文件、包或代码变更。3.根据权利要求2所述的一种基于聚类集成的软件缺陷预测方法,其特征在于,还包括:采用z

score方法,对给定的项目数据进行归一化处理;所述归一化处理算法如下:其中,x
i
是软件实体x第i个度量元的原始值,x
i*
是x
i
归一化后的值,μ
x
是软件实体x的平均值,σ
x
是软件实体x...

【专利技术属性】
技术研发人员:李志强谢娟英祁超
申请(专利权)人:陕西师范大学
类型:发明
国别省市:

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

1