一种基于图结构的跨项目软件缺陷预测方法技术

技术编号:37851024 阅读:23 留言:0更新日期:2023-06-14 22:41
本发明专利技术公开了一种基于图结构的跨项目软件缺陷预测方法,该方法包括:首先将软件映射为类依赖图,并通过社区划分算法将类依赖图分解为多个子图,图中节点的属性为类的缺陷度量元。然后构建跨项目软件缺陷预测模型,该模型为一个基于生成对抗思想改进的图神经网络,包括三个部分,特征学习网络、判别网络和分类网络,用图卷积层构建特征学习网络,学习节点特征向量,判别网络和分类网络由多层感知机构成,用于消除项目之前分布差异性和实现节点的缺陷分类。接着训练构建的模型,最后对目标项目中的类进行是否有缺陷的辨别。本发明专利技术提出的方法通过研究软件图结构的特性,同时用生成对抗网络思想改进图神经网络,在学习软件图结构信息的同时实现了跨项目软件缺陷预测。信息的同时实现了跨项目软件缺陷预测。信息的同时实现了跨项目软件缺陷预测。

【技术实现步骤摘要】
一种基于图结构的跨项目软件缺陷预测方法


[0001]本专利技术涉及软件缺陷领域,具体涉及一种基于图结构的跨项目软件缺陷预测方法

技术介绍

[0002]随着互联网技术的快速发展,软件的应用领域在深度和广度上不断扩大,软件一些小小的错误将会导致巨大的损失,因此软件缺陷预测对保障软件质量十分重要。其中软件的跨项目软件缺陷预测(cross

project software defectprediction,CPDP)是一项非常重要的研究。该研究主要解决的问题是需要预测的项目(目标项目)是一个未知的情况下,只能利用已知的一些软件项目(源项目)数据来训练软件缺陷模型。由于源项目和目标项目的开发者不同,且每个项目的开发都是应用于不同的情况,因此源项目与目标项目的数据分布不同。如何消除源项目和目标项目之前数据分布不一致的问题,成为跨项目软件缺陷预测的一个困难点。为了解决上述问题,本文构建的方法如下:首先将源项目和目标项目中的软件映射为图结构,并利用社区划分算法将图结构划分为子图。然后根据生成对抗思想构建一个改进的图神经网络,包括特征学习网络、判别网络和分类网络:特征学习网络由图卷积神经网络搭建而成,用于学习节点的表征向量,判别网络消除源项目和目标项目数据分布不一致问题,同时利用分类网络对节点进行是否有缺陷判断。

技术实现思路

[0003]要解决的技术问题
[0004]为解决源项目和目标项目数据分布不一致以及忽略软件项目的图结构问题,本专利技术提出一种基于图结构的跨项目软件缺陷预测方法。r/>[0005]技术方案
[0006]一种基于图结构的跨项目软件缺陷预测方法,其特征在于,包括步骤如下:
[0007]S1:构建训练集和测试集:将软件项目分为源项目和目标项目,源项目中的类有标签,目标项目中的类没有标签,首先将所有软件项目映射为类依赖图,然后对类依赖图进行社区划分得到多个子图,最后获取类的软件缺陷度量元作为节点的属性,其中训练集包括源项目的图结构信息、标签和目标项目的图结构信息,测试集为目标项目的图结构信息;
[0008]S2:构建跨项目软件缺陷预测模型:模型是一个基于生成对抗思想改进的图神经网络,网络分为三个部分,分别为特征学习网络、判别网络和分类网络,特征学习网络分别与判别网络和分类网络相连,首先将图结构信息输入到特征学习网络,该网络利用图卷积层搭建而成,对类和类之间的结构信息进行学习得到类的特征向量,然后将特征向量分别输入到判别网络和分类网络,判别网络对源项目中类的特征向量和目标项目中类的特征向量进行辨别,同时利用源项目中类特征向量和标签训练分类网络;
[0009]S3:模型训练:首先将源项目和目标项目经过S1处理后得到训练集和测试集,然后训练集输入到步骤S2的模型中进行训练,通过Adam优化器最小化损失函数,对特征学习网络、判别网络和分类网络进行参数调整,当判别网络无法辨别类是来自源项目还是目标项
目,并且分类网络的损失值小于设定的值后停止训练;
[0010]S4:模型测试:将S3中的测试集输入到训练好的模型中,每个类将得到一个是否有缺陷的标签;
[0011]步骤S2所述的特征学习网络由图卷积层构成,通过图卷积的方式学习社区内节点与相邻节点的相互影响,节点表征向量更新公式如下:
[0012][0013]式(1)中v表示一个节点序号,v∈V
i
,节点的缺陷度量元表示为X
v
,表示第k层节点v的表征向量,k代表迭代的层次,N
(v)
表示v的一组相邻节点,在这初始化MLP是一个多层感知机;
[0014]通过多次图卷积学习深层次的图结构信息,为了利用每一层的表征向量,将所有的表征向量进行加权就和,节点的最终特征向量由以下公式所示:
[0015][0016]式(2)中,w
(k)
是第k层的一个可学习参数,初始值设置为(1/len,1/len),其中len为节点表示向量的长度,为第k层节点v的表征向量,num_gcn表示图卷积的层数,表示节点v的所有表征向量加权求和的结果;
[0017]步骤S2所述的判别网络和分类网络都由多层感知机组成,判别网络用于消除源项目和目标项目的分布差异性,分类网络给予类一个是否有缺陷的标签;
[0018]步骤S3中损失函数由判别网络损失函数和分类网络损失函数共同组成,总的损失函数如下所示:
[0019]loss_all=loss_b+loss_real+loss_fake
ꢀꢀꢀ
(3)
[0020]loss_b=loss_fun_1(pred_source,y_source)
ꢀꢀꢀ
(4)
[0021]loss_real=loss_fun_2(dis_source,y_real)
ꢀꢀꢀ
(5)
[0022]loss_fake=loss_fun_2(dis_target,y_fake)
ꢀꢀꢀ
(6)
[0023]上列等式中loss_fun_1和loss_fun_2都为交叉熵损失函数,式(4)中pred_source是通过分类网络得到的预测标签,y_source为真实标签,式(5)中dis_source是源项目中类的特征向量经过判别网络后的结果,y_real=(1,1,

,1),式(6)中dis_target是目标项目中类的特征向量经过判别网络后的结果,y_fake=(0,0,

,0)。
[0024]有益效果:设计了一个同时考虑软件图结构和软件项目之间的差异性的跨项目软件缺陷预测模型,这是一个端到端的训练方式,将两个问题同时解决,而不是一个问题接着一个问题的解决,这样能够动态的调整两个问题之间相互影响。
附图说明
[0025]图1为本专利技术方法的流程图
[0026]图2为数据预处理流程图
[0027]图3为图卷积过程图
[0028]图4为判别网络和分类网络结构图
具体实施方式
[0029]现结合实例和附图对本专利技术作进一步描述,本专利技术包括但不限于下述实例。
[0030]本专利技术提出一种基于图结构的跨项目软件缺陷预测方法,本方法的流程图如图1所示,在本专利技术的本实施例中,软件缺陷预测方法包括以下步骤:
[0031]S1.构建训练集和测试集。
[0032]将软件项目分为源项目和目标项目,源项目中的类有标签,目标项目中的类没有标签,如图2所示对软件进行预处理,首先将所有软件项目映射为类依赖图,然后对类依赖图进行社区划分得到多个子图,最后获取类的软件缺陷度量元作为节点的属性,其中训练集包括源项目的图结构信息、标签和目标项目的图结构信息,测试集为目标项目的图结构信息;
[0033]S2.构建跨项目软件缺陷预测模型。
[0034]本模型是一个基于生成对抗思想改进的图神经网络,网络分为三个部分,分别为特征学习网络本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于图结构的跨项目软件缺陷预测方法,其特征在于,包括步骤如下:S1:构建训练集和测试集:将软件项目分为源项目和目标项目,源项目中的类有标签,目标项目中的类没有标签,首先将所有软件项目映射为类依赖图,然后对类依赖图进行社区划分得到多个子图,最后获取类的软件缺陷度量元作为节点属性,其中训练集包括源项目的图结构信息、标签和目标项目的图结构信息,测试集为目标项目的图结构信息;S2:构建跨项目软件缺陷预测模型:模型是一个基于生成对抗思想改进的图神经网络,网络分为三个部分,分别为特征学习网络、判别网络和分类网络,特征学习网络分别与判别网络和分类网络相连,首先将图结构信息输入到特征学习网络,该网络利用图卷积层搭建而成,对类和类之间的结构信息进行学习得到类的特征向量,然后将特征向量分别输入到判别网络和分类网络,判别网络对源项目中类的特征向量和目标项目中类的特征向量进行辨别,同时利用源项目中类特征向量和标签训练分类网络;S3:模型训练:首先将源项目和目标项目经过S1处理后得到训练集和测试集,然后训练集输入到步骤S2的模型中进行训练,通过Adam优化器最小化损失函数,对特征学习网络、判别网络和分类网络进行参数调整,当判别网络无法辨别类是来自源项目还是目标项目,并且分类网络的损失值小于设定的值后停止训练;S4:模型测试:将S3中的测试集输入到训练好的模型中,每个类将得到一个是否有缺陷的标签;步骤S2所述的特征学习网络由图卷积层构成,通过图卷积的方式学习社区内节点与相邻节点的相互影响,节点表征向量更新公式如下:式(1)中v表示一个节点序号,v∈V
i
,节点的缺陷度量元表示为X
v
,表示第k层节点v的表征向量,k代表迭代的层次,N
(v)
表示v的一组相邻节点,在这初始化M...

【专利技术属性】
技术研发人员:崔梦天龙松林陈雅茜
申请(专利权)人:西南民族大学
类型:发明
国别省市:

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

1