当前位置: 首页 > 专利查询>湖北大学专利>正文

基于异质类关系图神经网络的软件缺陷预测方法和系统技术方案

技术编号:39863630 阅读:7 留言:0更新日期:2023-12-30 12:56
本发明专利技术公开了一种基于异质类关系图神经网络的软件缺陷预测方法和系统,包括:抽取软件类之间依赖关系和软件类之间的共改关系及其权重,构建一个异质类关系图;组合传统静态代码度量与网络嵌入度量来初始化节点属性,利用关系图神经网络模型

【技术实现步骤摘要】
基于异质类关系图神经网络的软件缺陷预测方法和系统


[0001]本专利技术涉及软件工程中缺陷预测
,特别涉及一种基于异质类关系图神经网络的软件缺陷检测方法和系统


技术介绍

[0002]现代软件系统需求不断增多
,
系统日渐复杂,维护代码变得越来越费时费力
,
导致复杂软件系统的缺陷和漏洞难以避免

国内外历史上出现过多次由于软件缺陷而导致的重大事故
,
预测软件代码缺陷以有效保证软件可信性成为普遍关注的问题

软件缺陷预测是使用代码复杂性和变更历史等软件特征构建分类器以预测可能包含缺陷的代码区域的过程
,
该技术可提前发现潜在的缺陷和漏洞

[0003]为了降低网络结构特征表示的复杂性
,
近年来网络嵌入算法研究取得重大进展

网络嵌入的核心思想是
,
在保持网络结构特性
(
一阶相似度

二阶相似度等
)
的同时
,
将高维稀疏的网络结构或者图结构映射到低维稠密的向量空间

这种嵌入后的网络特征便于输入到机器学习模型中

嵌入方法主要包括基于矩阵分解的方法

基于随机游走的方法

基于深度学习的方法

网络嵌入目前已应用到网络压缩

可视化



链路预测和节点分类等不同领域

近年来软件关联网络嵌入也开始应用于软件缺陷预测领域
,
然而
,
不同软件关联网络以及不同网络嵌入算法对缺陷预测性能的影响研究仍然很稀缺

[0004]在早期的工作中,研究者们提出了各种各样的指标来建立预测模型,通常使用静态代码属性和缺陷位置来构建,通过这些手工定义的特征,如代码行数

先前的错误

文件中方法的数量等来预测缺陷,这些特征很容易使用自动化工具从源代码中获取

然而,传统人工设计的特征只是考虑了代码的复杂性,为了提取更丰富的源代码语义和语法信息,研究者们将软件源代码建模为类似于自然语言处理中的文本序列,例如基于抽象语法树的神经网络模型,能够很好的模拟源代码,同时也保留程序的结构信息,通过遍历抽象语法树,选取需要保留的节点类型,将每个源文件解析为一系列代码标记,输入到深度神经网络中,获得软件源代码的语义特征

[0005]传统代码度量指标与语义特征的缺点是它们只关注单个元素,而很少考虑元素之间的交互信息,可以获取的信息内容是有限的

近年来,社会网络分析领域的概念衍生出来的网络度量指标引起了广泛研究者的关注

基于网络的分析将模块作为节点,提取模块之间的依赖关系作为边,构成软件源代码网络,利用获得的网络模型来建立预测模型

网络度量考虑模块之间的交互,从而对软件中的信息流与拓扑结构进行建模,这些是软件代码度量无法捕获的

[0006]在软件工程领域中,采用的处理网络结构数据的嵌入学习模型有
deepwalk

node2vec

struc2vec
等,其原理是将网络结构转换成一系列节点序列,再使用词向量模型来学习节点表示

深度学习领域中的图神经网络模型同样可以捕获网络结构特征,现今已有研究将其应用到软件缺陷预测领域中

其思想是利用整体网络结构的邻接矩阵,与其原始的节点特征矩阵相乘,得到隐藏层的嵌入特征,依次迭代,从而实现多层网络

与传统的
嵌入学习方法相比,图神经网络不仅可以学习每个节点及其邻域的结构关系,同时还可以将每个节点自身携带的特征属性融合到其中进行更全面的学习

[0007]之前的研究中,根据源代码所提取到的图结构通常都是同质的,即只有单一类型的节点和连边关系

但在真实世界中
,
事物之间的相互作用关系构成的图结构往往是异质的
,
即节点和连边具有多种类型

例如
,
在社交网络中同时存在用户

贴文和评论等类型的节点和用户

贴文

用户

评论和贴文

评论等多种关系

边和节点的异质造成了节点间语义关系的多样性
,
同时
,
边和节点所具有的属性特征也位于不同的特征空间中
,
这些原因导致传统的图神经网络方法无法高效

准确地处理异质图
.
为了解决这些问题
,Schlichtkrull[1]等人最早通过对不同类型的关系定义不同的系数矩阵
,

GCN
成功迁移到了异质图上;
Hu[2]等人在此基础上
,
进一步使用注意力机制计算不同类型关系的重要程度;后续的
Wang[3]等人则引入了元路径概念将异质图转化为同质图
,
再进行表示学习
.
这些方法被统一归纳为异质图神经网络
(heterogeneous graph neural networks,HetGNNs)。
异质图与同质图的一个显著区别是异质图中存在多种类型的边
,
从而定义了节点间的各种语义关系
.
而在图神经网络的卷积过程中
,
节点间的信息又是通过相连的边进行传递的

然而,在另一些研究工作中表明,将多个关系组合的异质图比单一关系的同质图更有优势

[0008]参考文献
[0009][1]Schlichtkrull M,Kipf TN,Bloem P,Van Den Berg R,Titov I,Welling M.Modeling relational data with graph convolutional networks.In:Gangemi A,ed.Proc.of the European Semantic Web Conf.Springer,2018.593

607

[0010][2]Hu Z,Dong Y,Wang K,Sun Y.Heterogeneous graph transformer.In:Huang Y,ed.Proc.of the Web Conf.(WWW).New York:ACM,2020.27042710

[0011][3]Wang X,Ji H,Shi C,Wa本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于异质类关系图神经网络的软件缺陷检测方法,其特征在于,具体包括以下步骤:
S1
:使用开源工具解析软件源代码文件,抽取类之间的依赖关系;
S2
:利用开源工具,获取软件修订历史,从中抽取出软件类之间的共改关系,并获取关系连边权重;
S3
:根据获取到的依赖关系和共改关系,构建一个异质类关系图;
S4
:使用
node2vec
方法学习得到软件依赖网络嵌入度量,并与传统静态代码度量进行结合,用以对节点属性进行初始化,以此得到带属性的异质类关系图;
S5
:使用关系图神经网络模型学习异质类关系图,获得软件异质网络结构特征,最终得到每个节点的预测值;
S6
:根据软件异质网络结构特征,训练一个分类器,用于缺陷预测
。2.
根据权利要求1所述的软件缺陷检测方法,其特征在于:
S1
具体包括以下子步骤:
S11
:以
Java
语言开发的软件系统作为分析对象,通过
Dependencyfinder
工具对源代码编译后产生的
.class
文件

由源代码打包而成的
.jar
文件或者包含源代码的
zip
压缩包进行依赖关系扫描,并保存为
XML
文件;
S12
:解析并提取各类文件之间的依赖关系,并提取依赖关系连边的权重;;具体依赖关系的提取方式如下:
1)
继承,假如类
v
c1
继承类
v
c2
,或实现接口
v
c2
,则存在边
e
12

(v
c1
,v
c2
)

2)
聚合,假如类
v
c1
包含类
v
c2
的属性,则存在边
e
12

(v
c1
,v
c2
)

3)
参数,假如类
v
c1
的方法调用了类
c
c2
的方法,则存在边
e
12

(v
c1
,v
c2
)
;其中,类之间的相互依赖次数代表了类之间的影响程度,连边权重的计算方式表示如下:其中
W
ij
表示节点
v
i
和节点
v
j
之间的权重,
d
ij
表示两节点之间的依赖次数,
N(j)
表示节点
v
j
的邻居集合
。3.
根据权利要求1所述的软件缺陷检测方法,其特征在于:
S2
具体包括以下子步骤:
S21
:利用自定义的解析程序从软件演化历史中的共同修改记录中提取软件源文件之间的共同修改关系;
S22
:根据源文件之间共同修改频次来获取共改关系连边的权重;首先,统计每对源文件之间的共同修改次数,然后,根据共同修改次数计算连边的权重;计算方式包括:简单计数法

归一化计数法和概率模型法
。4.
根据权利要求1所述的软件缺陷检测方法,其特征在于:
S3
具体步骤如下:基于依赖关系和共改关系,对软件系统进行图结构建模,生成软件图数据格式;具体的软件图结构模型定义如下:
HCRG(Heterogeneous Class Relation Graph)
被定义为一个无向加权网络
HCRG

(V,E,R,W)
,其中
V
表示节点集合,
E
表示边关系集合,
R
表示边关系类型的集合,
W
表示连边关系的权重

5.
根据权利要求1所述的软件缺陷检测方法,其特征在于:
S4
具体包括以下子步骤:
S41
:利用
Node2vec
方法,通过偏向性随机游走的方...

【专利技术属性】
技术研发人员:孙弋洋马菊何鹏张群陈辉郑巧仙
申请(专利权)人:湖北大学
类型:发明
国别省市:

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

1