CN114860246A - 一种图中图卷积神经网络的软件系统中类交互关系预测方法 - Google Patents

一种图中图卷积神经网络的软件系统中类交互关系预测方法 Download PDF

Info

Publication number
CN114860246A
CN114860246A CN202210320575.6A CN202210320575A CN114860246A CN 114860246 A CN114860246 A CN 114860246A CN 202210320575 A CN202210320575 A CN 202210320575A CN 114860246 A CN114860246 A CN 114860246A
Authority
CN
China
Prior art keywords
graph
network
nodes
internal
external
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210320575.6A
Other languages
English (en)
Inventor
何鹏
卫操
周纯英
李辉
陈孟瑶
呙中婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hubei University
Original Assignee
Hubei University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hubei University filed Critical Hubei University
Priority to CN202210320575.6A priority Critical patent/CN114860246A/zh
Publication of CN114860246A publication Critical patent/CN114860246A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种图中图卷积神经网络的软件系统中类交互关系预测方法,利用复杂网络理论,在软件网络的基础上,构建软件系统的图中图网络结构。为了获得软件系统中更多的类信息,将CEG中单个类节点再扩展成一个CIG子图,协同两种图结构进行信息挖掘。引入深度学习模型,利用图卷积神经网络和注意力机制来自动学习内部图网络CIG的特征信息,利用图卷积神经网络自动学习外部图网络CEG的全局结构信息。通过构建的图中图卷积神经网络模型对软件系统中类交互关系进行预测,提高了预测精度。

Description

一种图中图卷积神经网络的软件系统中类交互关系预测方法
技术领域
本发明涉及软件工程软件网络分析技术领域,尤其涉及一种图中图卷积神经网络的软件系统中类交互关系预测方法。
背景技术
随着网络的规模不断扩大,软件系统的复杂度随之不断提升,软件中存在缺陷是在所难免的。并且软件系统也是一个复杂的人工制品,软件系统内部的类之间的交互关系对软件质量有着潜在影响,如软件缺陷的级联传播效应就是一个典型。如何准确预测软件系统中类之间合理关系,优化设计结构是软件质量保障的一个开放问题。
在软件工程领域,软件系统的质量与寿命很大程度上取决于其内部结构。类作为软件系统中粒度较为适中的一个元素,它们之间的关系常被用于刻画软件系统的结构,并且作为“高内聚,低耦合”设计原则与重构依据。随着软件系统规模的增大,类文件之间的交互关系也愈加复杂,例如新功能的添加,软件中类之间可能会产生新的交互关系。若不对软件系统全局结构进行适当调整,有可能导致开发偏离最初设计,从而严重影响软件质量,这种现象被称为软件衰退或者软件设计偏移,导致维护成本很高。
从上世纪90年代开始,人们发现网络结构非常适合表示现实世界中高度复杂的系统,将现实世界中存在的各种复杂系统抽象为网络而得到的模型被称之为复杂网络(complex network)。复杂网络是将现实世界中的实体和实体间关系映射成网络的表示形式。软件网络(software network)作为一种常规的复杂网络,对软件工程领域相关问题的解决起着至关重要的作用。有研究者从模块、包、类等粒度对软件系统进行建模,利用复杂网络理论度量软件系统的复杂性,分析网络的拓扑结构和形成机理以及演化规律。因此,将复杂网络中节点交互关系度量的方法引入软件网络,为分析软件内部结构的交互关系带来了一种新的视角。
软件系统是具有一定深度的结构,所以可从多粒度进行网络建模,能够从包、类、方法三个粒度上,利用复杂网络度量指标分析软件的演化情况。也可围绕Lehman演化定律,从包、类、方法三个粒度,分析多个软件系统的演化情况。软件作为一种人工的复杂系统,软件内各元素之间交互关系的识别对于工程师分析维护系统至关重要。
当软件在整个生命周期中施加违反设计时架构意图的更改时,软件体系结构就会降级。这种现象被称为架构侵蚀,这种思想将软件工程问题重新定义为模块搜索与优化问题。有一种修复面向对象软件系统类结构的方法,它使用属性-方法网络和方法-方法网络来表示属性、方法以及它们之间的依赖关系,采用社区探测的方式通过类之间的关系预测,进行软件重构指导。
为了解决依赖目标和源代码文件之间的依赖关系挖掘问题,前人将构建配置文件(例如Make file)通过逆向工程转换为依赖图,其中图中的节点对应于配置文件中的实体,而图中的边对应于这些实体之间的关系,然后将该问题映射为预测依赖图中缺失边(链接)的预测问题,同时对比分析了多种常规链路预测算法的效果,力图寻求使得软件架构最优的方法。
而在软件工程领域,有的学者把重点放在制作构建工具上,目标是进一步提高类间缺失依赖关系预测的有效性。也有利用系统以前版本的结构特征,引入线性规划技术,通过机器学习成功预测了下一个版本的模块依赖性。
不难发现该领域以往的工作主要将问题抽象成链路预测问题加以解决,这是一个较好的切入思路,也能得到同领域广泛的认可,但是解决链路预测问题的手段主要还挺留在传统的数学方法或机器学习方法,导致预测精度不高。
发明内容
本发明提出一种图中图卷积神经网络的软件系统中类交互关系预测方法,用以解决现有技术的方法存在的预测精度不高的技术问题。
为了解决上述技术问题,本发明采取的技术方案如下:
提供一种图中图卷积神经网络的软件系统中类交互关系预测方法,包括:
S1:利用开源工具解析软件代码源文件,构建图中图网络结构,其中,图中图网络结构包括外部图和内部图,外部图中,节点表示类,边表示类之间的交互关系,内部图中,节点表示方法或属性,边表示类内部的方法或者属性之间的关系;
S2:基于图中图网络结构和深度学习理论,构建图中图卷积神经网络模型,其中,图中图卷积神经网络模型包括内部图网络模块、外部图网络模块和预测模型,内部图网络模块用于利用网络嵌入方法,对图中图网络结构中的内部图节点进行学习,得到内部图节点的嵌入向量;外部图网络模块用于利用网络嵌入方法,将到的内部图节点的嵌入向量作为外部图的初始输入向量,并聚集外部图的邻域信息,对两层软件网络中的外部图网络的节点进行学习,得到外部图节点的嵌入向量;预测模块,用于根据外部图节点的嵌入向量进行类与类的交互关系的预测;
S3:对构建的图中图卷积神经网络模型进行训练,得到训练好的图中图卷积神经网络模型;
S4:利用训练好的图中图卷积神经网络模型进行软件系统中类交互关系的预测。
在一种实施方式中,步骤S1包括:
S1.1:利用开源工具对源代码编译后产生的各类文件进行依赖关系扫描,并保存为统一的文件格式:
S1.2:解析并提取S1.1中保存的文件中类之间的依赖关系和类内部的依赖关系,并将不同的类作为外部图节点,同一个类中的方法或者属性作为内部图节点;
S1.3:将内部图节点与外部图节点相关联,构建图中图网络结构,其中,每个外部节点对应一个内部图网络,形成图中图结构的图网络数据格式,图网络数据格式格式为
Figure BDA0003570374190000036
其中
Figure BDA0003570374190000037
外部节点i,Gi为节点i对应的内部图网络。
在一种实施方式中,内部图网络模块的处理过程包括:
对内部网络图进行多层图卷积运算获取内部图节点的特征,计算公式如下:
M(l+1)=GCNl(A,Ml)
Figure BDA0003570374190000031
其中,A为内部图网络的邻接矩阵,GCNl表示第l层的图卷积神经网络WI∈Wk为第I层的权重矩阵,I是单位矩阵,
Figure BDA0003570374190000032
为内部图网络第l层的隐含特征矩阵,M(l+1)表示内部图网络第l+1层的隐含特征矩阵,
Figure BDA0003570374190000033
是内部图G带自连接的邻接矩阵,
Figure BDA0003570374190000034
Figure BDA0003570374190000035
的对角度矩阵,包含每个节点的度,σ为激活函数,选择ReLU(x)=max(0,x)作为激活函数;
根据得到的内部图节点的特征进行自注意力池化处理,得到类的多尺度子结构特征,得到内部图网络的隐含特征向量xG
在一种实施方式中,外部图网络模块的处理过程包括:将每个外部图节点的特征与其它关联节点的特征相结合,使得外部图网络中每一个节点在迭代学习过程中都会聚合其邻居节点在上一层得到的嵌入向量,并与自身在上一层的嵌入向量相结合,从而得到外部图节点的嵌入向量。
在一种实施方式中,外部图节点的嵌入向量的计算方式为:
Figure BDA0003570374190000041
其中,
Figure BDA0003570374190000042
表示类i的内部图Gi在模型的第l层的隐含嵌入向量,d为隐含嵌入向量的维度,初始化时,令
Figure BDA0003570374190000043
表示类i的内部图网络的隐含特征向量,N(Gi)表示Gi在外部图中的邻居,
Figure BDA0003570374190000044
表示节点Gi在i层的邻居节点Gj的信息,
Figure BDA0003570374190000045
为得到的外部图节点的嵌入向量,σ表示的是非线性激活函数。
在一种实施方式中,预测模块的预测过程将类与类的交互关系预测视为一个链接预测问题,将两个图表示的点积用作两个图的链接概率:
Figure BDA0003570374190000046
其中,
Figure BDA0003570374190000047
为外部图节点i的转置矩阵,
Figure BDA0003570374190000048
表示外部图节点j的邻接矩阵,σ是激活函数。
在一种实施方式中,步骤S3的训练过程中,采用交叉熵损失函数对图中图卷积神经网络模型进行优化,函数形式为:
Figure BDA0003570374190000049
其中i、j和m代表外部图节点的编号,
Figure BDA00035703741900000410
表示抽样的分布情况,pj表除节点j以外m可取节点的范围,pim为外部图节点i和m链接的概率。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
(1)利用复杂网络理论,在软件网络的基础上,构建软件系统的图中图网络结构。为了获得软件系统中更多的类信息,将CEG中单个类节点再扩展成一个CIG子图,协同两种图结构进行信息挖掘。
(2)引入深度学习模型,利用图卷积神经网络和注意力机制来自动学习内部图网络CIG的特征信息,利用图卷积神经网络自动学习外部图网络CEG的全局结构信息。
(3)提出一种图中图卷积神经网络模型,用于对(1)中所提的图中图软件网络的内部图CIG与外部图CEG分别使用(2)中的技术方法并且使得两层网络进行交互,尽可能的保留了软件网络所携带的信息,利用交叉熵损失函数不断优化调参,获得保留最多特征的类节点向量,并将学习结果应用于软件系统的类间交互关系预测,提高了预测精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的图中图卷积神经网络的软件系统中类交互关系预测方法的框架图;
图2为本发明实施例中软件系统图中图结构示意图;
图3为本发明实施例中构建图中图的简单示意图。
具体实施方式
本申请发明人通过大量的研究与实践发现:
现有技术中的方法,主要将问题抽象成链路预测问题来进行类交互关系预测,但是解决链路预测问题的手段主要还挺留在传统的数学方法或机器学习方法,该方法虽可解决问题,但效果欠佳,为了使软件内类间交换关系预测的精度可更进一步,有必要引入深度学习方法来优化软件网络的体系结构,并在此基础上指导与设计出更优的软件系统架构。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种图中图卷积神经网络的软件系统中类交互关系预测方法,包括:
S1:利用开源工具解析软件代码源文件,构建图中图网络结构,其中,图中图网络结构包括外部图和内部图,外部图中,节点表示类,边表示类之间的交互关系,内部图中,节点表示方法或属性,边表示类内部的方法或者属性之间的关系;
S2:基于图中图网络结构和深度学习理论,构建图中图卷积神经网络模型,其中,图中图卷积神经网络模型包括内部图网络模块、外部图网络模块和预测模型,内部图网络模块用于利用网络嵌入方法,对图中图网络结构中的内部图节点进行学习,得到内部图节点的嵌入向量;外部图网络模块用于利用网络嵌入方法,将到的内部图节点的嵌入向量作为外部图的初始输入向量,并聚集外部图的邻域信息,对两层软件网络中的外部图网络的节点进行学习,得到外部图节点的嵌入向量;预测模块,用于根据外部图节点的嵌入向量进行类与类的交互关系的预测;
S3:对构建的图中图卷积神经网络模型进行训练,得到训练好的图中图卷积神经网络模型;
S4:利用训练好的图中图卷积神经网络模型进行软件系统中类交互关系的预测。
请参见图1,为本发明实施例提供的图中图卷积神经网络的软件系统中类交互关系预测方法的框架图。该图中,内部图的隐含特征是CIG的隐含特征向量xG,邻域聚集网络的作用是为了收集外部图CEG中每个节点的邻域信息,即网络结构所包含的信息,内部图的表征是CEG中节点的初始向量,CEG中节点进行外部图网络模块的操作得到CEG节点的嵌入向量。
具体来说,步骤S1是提出图中图网络结构,S2在S1的图中图网络的结构的基础上,进入深度学习模型的相关理论,构建了图中图卷积神经网络模型,利用图卷积神经网络和注意力机制来自动学习内部图网络的特征信息,利用图卷积神经网络自动学习外部图网络的全局结构信息。图中图卷积神经网络模型可以使得两层网络进行交互,尽可能的保留软件网络所携带的信息,获得保留最多特征的类节点向量,并将学习结果应用于软件系统的类间交互关系预测,提高了预测精度。步骤S3是模型的训练,步骤S4是模型的具体应用。
请参见图2,为本发明实施例中软件系统图中图结构示意图。
图中图网络结构中,将类之间交互关系组成的图称为类的外部图(Classexternal graph,CEG),记为
Figure BDA0003570374190000071
其中,
Figure BDA0003570374190000072
是节点集,每个节点代表一个类,
Figure BDA0003570374190000073
是CEG中所有的边集。实际上,类之间的交互是建立在它们内部元素之间的交互基础上形成,因此,每个类内部的方法或属性之间构成的图称为类的内部图(Class internal graph,CIG),用Gi=(Vi,Ri)表示类i的内部图
Figure BDA0003570374190000074
|Vi|=n表示类i中方法或属性节点的个数,为了便于描述,可以将方法和属性节点统称为特征节点,Ri表示类i的局部图Gi中所有的边。
请参见图3,为本发明实施例中构建图中图的简单示意图。
在一种实施方式中,步骤S1包括:
S1.1:利用开源工具对源代码编译后产生的各类文件进行依赖关系扫描,并保存为统一的文件格式:
S1.2:解析并提取S1.1中保存的文件中类之间的依赖关系和类内部的依赖关系,并将不同的类作为外部图节点,同一个类中的方法或者属性作为内部图节点;
S1.3:将内部图节点与外部图节点相关联,构建图中图网络结构,其中,每个外部节点对应一个内部图网络,形成图中图结构的图网络数据格式,图网络数据格式格式为
Figure BDA0003570374190000075
其中
Figure BDA0003570374190000076
外部节点i,Gi为节点i对应的内部图网络。
具体实施过程中,软件系统可以由不同的语言进行开发,例如Java、C++等。例如,可以选择以Java语言开发的软件系统作为分析对象,通过Dependencyfinder工具对源代码编译后产生的.class文件、由源代码打包而成的.jar文件或者包含源代码的zip压缩包进行依赖关系扫描,并保存为XML文件。
在一种实施方式中,内部图网络模块的处理过程包括:
对内部网络图进行多层图卷积运算获取内部图节点的特征,计算公式如下:
M(l+1)=GCNl(A,Ml)
Figure BDA0003570374190000081
其中,A为内部图网络的邻接矩阵,GCNl表示第l层的图卷积神经网络WI∈Wk为第I层的权重矩阵,I是单位矩阵,
Figure BDA0003570374190000082
为内部图网络第l层的隐含特征矩阵,M(l+1)表示内部图网络第l+1层的隐含特征矩阵,
Figure BDA0003570374190000083
是内部图G带自连接的邻接矩阵,
Figure BDA0003570374190000084
Figure BDA0003570374190000085
的对角度矩阵,包含每个节点的度,σ为激活函数,选择ReLU(x)=max(0,x)作为激活函数;
根据得到的内部图节点的特征进行自注意力池化处理,得到类的多尺度子结构特征,得到内部图网络的隐含特征向量xG
在一种实施方式中,外部图网络模块的处理过程包括:将每个外部图节点的特征与其它关联节点的特征相结合,使得外部图网络中每一个节点在迭代学习过程中都会聚合其邻居节点在上一层得到的嵌入向量,并与自身在上一层的嵌入向量相结合,从而得到外部图节点的嵌入向量。
具体来说,由于类的CEG表示为
Figure BDA0003570374190000086
单个类的内部图
Figure BDA0003570374190000087
为了更好地提取CEG中节点全局结构的隐藏特征,本实施方式采用将每个节点的特征与图中其它关联节点的特征相结合的方式来得到外部图节点的嵌入向量。
外部图节点指的是类节点,它的关联节点是指与该类节点有交互关系的节点,类节点间会相互调用,这种调用关系就是交互关系,也就是外部图节点的连边。
在一种实施方式中,外部图节点的嵌入向量的计算方式为:
Figure BDA0003570374190000088
其中,
Figure BDA0003570374190000089
表示类i的内部图Gi在模型的第l层的隐含嵌入向量,d为隐含嵌入向量的维度,初始化时,令
Figure BDA00035703741900000810
表示类i的内部图网络的隐含特征向量,N(Gi)表示Gi在外部图中的邻居,
Figure BDA00035703741900000811
表示节点Gi在i层的邻居节点Gj的信息,
Figure BDA00035703741900000812
为得到的外部图节点的嵌入向量,σ表示的是非线性激活函数。
具体实施过程中,非线性激活函数,使用的是ReLU(x)=max(0,x)函数。
在一种实施方式中,预测模块的预测过程将类与类的交互关系预测视为一个链接预测问题,将两个图表示的点积用作两个图的链接概率:
Figure BDA0003570374190000091
其中,
Figure BDA0003570374190000092
为外部图节点i的转置矩阵,
Figure BDA0003570374190000093
表示外部图节点j的邻接矩阵,σ是激活函数。
具体来说,
在一种实施方式中,步骤S3的训练过程中,采用交叉熵损失函数对图中图卷积神经网络模型进行优化,函数形式为:
Figure BDA0003570374190000094
其中i、j和m代表外部图节点的编号,
Figure BDA0003570374190000095
表示抽样的分布情况,pj表除节点j以外m可取节点的范围,pim为外部图节点i和m链接的概率。
具体来说,为确保pij∈(0,1)的函数sigmoid。为了鼓励模型为观察到的边缘分配比随机的非边缘更高的概率,本实施方式遵循之前的研究,并通过负抽样来估计模型。对于每个正边对(Gi、Gj),通过随机选择一个分子图Gm,采样一个随机的负边(Gi、Gm)。并采用交叉熵损失函数来优化模型。
下面通过具体的数据对本发明提出的方法进行详细说明。
本实施例是选择以Java语言开发的软件系统作为研究对象,选取了公开PROMISE软件工程库(http://promise.site.uottawa.ca/SERepository/)中的项目,包括Apache开源平台上6个项目,分别为JMeter、Commons-codec、Ivy、Ant-1.3、Ant-1.5和Maven,其中JMeter是一款用于测试Java程序的工具,最初只用于Java Web应用程序的测试,后来推广到所有的Java应用程序;Commons-codec是Apache开源组织提供的用于摘要运算、编码的包;Ivy是一个免费基于Java的依赖管理器,它提供了一些强大的功能包括依赖传递、ant集成、maven存储库兼容等;Ant是Java的一个编译工具,选取了1.3和1.5这两个版本;Maven是一款服务于Java平台自动化构建的工具。6个项目CEG的节点规模从57-3958个,连边从60-10811条,CIG的平均节点规模最大为21.18,连边为14.11。所选取的6个数据集在类内网络CIG上规模相近,在类间结构CEG上呈现递增效果,贴合实际生产环境中不同规模的软件,能较好代表现实生活中不同功能需求的软件。
所选数据集按8:2划分为训练集和测试集,将两个类节点的相似性作为交互关系的参考依据,将所选训练集用于前期的模型训练工作,并使用交叉熵损失函数来不断优化模型,最后将训练好的模型用于测试数据集,并采用AUC和AP指标来评价类与类交互关系预测的准确性。
如图1所示,为具体实施方式中图中图卷积神经网络的软件系统中类交互关系预测方法,包括以下步骤:
A.利用开源工具解析软件代码源文件,构建软件网络模型,包括以下子步骤;
步骤A1,选择以Java语言开发的软件系统作为分析对象,通过Dependencyf inder工具对源代码编译后产生的.class文件、由源代码打包而成的.jar文件或者包含源代码的zip压缩包进行依赖关系扫描,并保存为XML文件,XML文件中存放的是DependencyFinder对于Java源代码的分析结果,以一种嵌套的结构来表示源代码中包、类和方法三个粒度元素的基本信息和元素之间的依赖关系。最外层的<package>标签表示包,<class>表示类,<feature>表示方法/字段,最内层的<outbound>和<inbound>标签分别表示依赖与被依赖关系。本发明使用自主开发的解析程序对解析的XML文件进行标签解析,从中提取软件类之间依赖关系,并保存为文件格式以便下游工作使用。
步骤A2,编写代码解析并提取A1中XML源代码中类之间的依赖关系和类内部节点的依赖关系,首先提取出带有<class>标签的节点,记录其与其余<class>节点的交互关系,并以文件格式保存。随后,将父节点<class>相同的<feature>节点记录为该类节点的所有内部节点,抽取类内部方法节点的交互关系,并以文件格式保存。所保存的文件作为图中图软件网络的基础,具体的两层软件网络模型定义如下:
将类之间交互关系组成的图称为类的外部图(Class external graph,CEG),记为
Figure BDA0003570374190000101
其中,
Figure BDA0003570374190000102
是节点集,每个节点代表一个类,
Figure BDA0003570374190000103
是CEG中所有的边集。实际上,类之间的交互是建立在它们内部元素之间的交互基础上形成,因此,每个类内部的方法或属性之间构成的图称为类的内部图(Class internal graph,CIG),用Gi=(Vi,Ri)表示类i的内部图
Figure BDA00035703741900001111
|Vi|=n表示类i中方法或属性节点的个数,为了便于描述,我们将方法和属性节点统称为特征节点,Ri表示类i的局部图Gi中所有的边。
步骤A3,将A2中处理得到的内部图CIG与外部图CEG节点相关联,每个外部节点对应一个内部图网络,形成图中图结构的图网络数据格式。具体数据格式为
Figure BDA0003570374190000111
其中
Figure BDA0003570374190000112
外部节点i,Gi为节点i对应的内部图结构,并保存为文件格式,以便后续进行嵌入操作,
Figure BDA0003570374190000113
便相当于Gi的标签。
B.利用网络嵌入方法,对图中图软件网络中的内部图网络CIG的节点进行学习,得到CIG节点的嵌入向量,包括以下子步骤:
步骤B1,读取A3中的文件,将每个类的内部图Gi进行图嵌入操作。为每个方法和属性节点进行one-hot编码,得到方法和属性节点的初始向量,即得到类的初始内部图节点嵌入。
步骤B2,提取内部图节点的邻居信息,对内部输入图CIG进行多层图卷积运算获取内部图节点的邻域信息,具体公式如下:
M(l+1)=GCNl(A,Ml)
Figure BDA0003570374190000114
其中
Figure BDA0003570374190000115
为内部图G第l层的隐含特征矩阵,
Figure BDA0003570374190000116
是内部图G带自连接的邻接矩阵,
Figure BDA0003570374190000117
Figure BDA0003570374190000118
的对角度矩阵,包含每个节点的度。Wk是权重矩阵,σ为激活函数,选择ReLU(x)=max(0,x)作为激活函数。
步骤B2,根据步骤B1得到的特征继续进行自注意力分层池化处理,得到类的多尺度子结构特征,形成一个CIG的隐含特征向量xG,其具体过程如下:
将每个图卷积层的输出作为自注意力图池化层的输入,通过学习该层内部图G中每个方法节点的自注意力得分
Figure BDA0003570374190000119
从而从中选择最具代表性的子结构(社区):
Figure BDA00035703741900001110
其中
Figure BDA0003570374190000121
是池化层的注意力权重矩阵。为了选择有代表性的子结构,图的池化层计算内部图中每个方法的注意力分值,并返回得分最高的top-k个方法。
idx=top(sl,k)
smask=sidx
Msel=M⊙smask
其中,top()函数返回注意力得分最高的前k个方法节点的索引,smask∈{0,1}n×1是由注意力分值决定的mask向量,⊙表示mask的内积,Msel是内部图CIG中选定的方法节点的特征矩阵,M是内部图节点的邻接矩阵,sl是每个方法节点的自注意力得分,sidx表示前k个方法的自注意力得分。对于选中的方法Msel进行求和平均池化操作,得到该层卷积操作的内部图隐含特征。经过多层图卷积和自注意力池化层后,将各层得到的图隐含特征进行拼接,形成一个CIG的隐含特征向量xG
由于采用分层图池化结构,使得图表示方法能有效地保留子结构信息。可以识别在类的交互中起关键作用的功能子模块,并用这些子模块来表示类。
C.利用网络嵌入方法,将B2的输出向量xG作为外部图CEG的初始出入向量,通过聚集外部图的邻域信息,对两层软件网络中的外部图网络CEG的节点进行学习,得到CEG节点的嵌入向量,具体说明如下:
如A2介绍,类的CEG表示为
Figure BDA0003570374190000122
单个类的内部图
Figure BDA0003570374190000123
为了更好地提取CEG中节点全局结构的隐藏特征,本发明将每个节点的特征与图中其它关联节点的特征相结合,使得CEG中每一个节点在迭代学习过程中都会聚合其邻居节点在上一层得到的嵌入向量,并与自身在上一层的嵌入向量相结合,具体表示如下:
Figure BDA0003570374190000124
其中,
Figure BDA0003570374190000125
表示类i的内部图Gi在模型的第l层的隐含嵌入向量,d为嵌入向量的维度,初始化时,令
Figure BDA0003570374190000126
N(Gi)表示Gi在外部图中的邻居,σ表示的是非线性激活函数,使用的是ReLU(x)=max(0,x)函数。
D.基于步骤C所得到的类节点的特征向量,对类与类的交互关系进行评估,同时利用交叉熵损失函数来优化模型,获得更好的预测效果,步骤如下:
将类与类的交互关系预测视为一个链接预测问题。两个类嵌入表示的点积用作两个类节点的交互概率:
Figure BDA0003570374190000131
其中σ是激活函数,为softmax函数。本实施方式的模型中将无链接视为负链接为了使模型为观察到的边缘分配比随机的非边缘更高的概率,根据前人已有的研究,本实施方式通过负抽样来估计模型。对于每个正边对(Gi、Gj),通过随机选择一个分子图Gm,采样一个随机的负边(Gi、Gm)。同时使用以下交叉熵损失函数来优化模型:
Figure BDA0003570374190000132
本发明的保护范围不限于上述的实施例,显然,本领域的技术人员可以对本发明进行各种改动和变形而不脱离本发明的范围和精神。倘若这些改动和变形属于本发明权利要求及其等同技术的范围,则本发明的意图也包含这些改动和变形在内。

Claims (7)

1.一种图中图卷积神经网络的软件系统中类交互关系预测方法,其特征在于,包括:
S1:利用开源工具解析软件代码源文件,构建图中图网络结构,其中,图中图网络结构包括外部图和内部图,外部图中,节点表示类,边表示类之间的交互关系,内部图中,节点表示方法或属性,边表示类内部的方法或者属性之间的关系;
S2:基于图中图网络结构和深度学习理论,构建图中图卷积神经网络模型,其中,图中图卷积神经网络模型包括内部图网络模块、外部图网络模块和预测模型,内部图网络模块用于利用网络嵌入方法,对图中图网络结构中的内部图节点进行学习,得到内部图节点的嵌入向量;外部图网络模块用于利用网络嵌入方法,将到的内部图节点的嵌入向量作为外部图的初始输入向量,并聚集外部图的邻域信息,对两层软件网络中的外部图网络的节点进行学习,得到外部图节点的嵌入向量;预测模块,用于根据外部图节点的嵌入向量进行类与类的交互关系的预测;
S3:对构建的图中图卷积神经网络模型进行训练,得到训练好的图中图卷积神经网络模型;
S4:利用训练好的图中图卷积神经网络模型进行软件系统中类交互关系的预测。
2.如权利要求1所述的软件系统中类交互关系预测方法,其特征在于,步骤S1包括:
S1.1:利用开源工具对源代码编译后产生的各类文件进行依赖关系扫描,并保存为统一的文件格式:
S1.2:解析并提取S1.1中保存的文件中类之间的依赖关系和类内部的依赖关系,并将不同的类作为外部图节点,同一个类中的方法或者属性作为内部图节点;
S1.3:将内部图节点与外部图节点相关联,构建图中图网络结构,其中,每个外部节点对应一个内部图网络,形成图中图结构的图网络数据格式,图网络数据格式格式为
Figure FDA0003570374180000011
其中
Figure FDA0003570374180000012
外部节点i,Gi为节点i对应的内部图网络。
3.如权利要求1所述的软件系统中类交互关系预测方法,其特征在于,内部图网络模块的处理过程包括:
对内部网络图进行多层图卷积运算获取内部图节点的特征,计算公式如下:
M(l+1)=GCNl(A,Ml)
Figure FDA0003570374180000021
其中,A为内部图网络的邻接矩阵,GCNl表示第l层的图卷积神经网络WI∈Wk为第I层的权重矩阵,I是单位矩阵,
Figure FDA0003570374180000022
为内部图网络第l层的隐含特征矩阵,M(l+1)表示内部图网络第l+1层的隐含特征矩阵,
Figure FDA0003570374180000023
是内部图G带自连接的邻接矩阵,
Figure FDA0003570374180000024
Figure FDA0003570374180000025
的对角度矩阵,包含每个节点的度,σ为激活函数,选择ReLU(x)=max(0,x)作为激活函数;
根据得到的内部图节点的特征进行自注意力池化处理,得到类的多尺度子结构特征,得到内部图网络的隐含特征向量xG
4.如权利要求1所述的软件系统中类交互关系预测方法,其特征在于,外部图网络模块的处理过程包括:将每个外部图节点的特征与其它关联节点的特征相结合,使得外部图网络中每一个节点在迭代学习过程中都会聚合其邻居节点在上一层得到的嵌入向量,并与自身在上一层的嵌入向量相结合,从而得到外部图节点的嵌入向量。
5.如权利要求4所述的软件系统中类交互关系预测方法,其特征在于,外部图节点的嵌入向量的计算方式为:
Figure FDA0003570374180000026
其中,
Figure FDA0003570374180000027
表示类i的内部图Gi在模型的第l层的隐含嵌入向量,d为隐含嵌入向量的维度,初始化时,令
Figure FDA0003570374180000028
Figure FDA0003570374180000029
表示类i的内部图网络的隐含特征向量,N(Gi)表示Gi在外部图中的邻居,
Figure FDA00035703741800000210
表示节点Gi在i层的邻居节点Gj的信息,
Figure FDA00035703741800000211
为得到的外部图节点的嵌入向量,σ表示的是非线性激活函数。
6.如权利要求1所述的软件系统中类交互关系预测方法,其特征在于,预测模块的预测过程将类与类的交互关系预测视为一个链接预测问题,将两个图表示的点积用作两个图的链接概率:
Figure FDA0003570374180000031
其中,
Figure FDA0003570374180000032
为外部图节点i的转置矩阵,
Figure FDA0003570374180000033
表示外部图节点j的邻接矩阵,σ是激活函数。
7.如权利要求1所述的软件系统中类交互关系预测方法,其特征在于,步骤S3的训练过程中,采用交叉熵损失函数对图中图卷积神经网络模型进行优化,函数形式为:
Figure FDA0003570374180000034
其中i、j和m代表外部图节点的编号,
Figure FDA0003570374180000035
表示抽样的分布情况,pj表除节点j以外m可取节点的范围,pim为外部图节点i和m链接的概率。
CN202210320575.6A 2022-03-29 2022-03-29 一种图中图卷积神经网络的软件系统中类交互关系预测方法 Pending CN114860246A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210320575.6A CN114860246A (zh) 2022-03-29 2022-03-29 一种图中图卷积神经网络的软件系统中类交互关系预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210320575.6A CN114860246A (zh) 2022-03-29 2022-03-29 一种图中图卷积神经网络的软件系统中类交互关系预测方法

Publications (1)

Publication Number Publication Date
CN114860246A true CN114860246A (zh) 2022-08-05

Family

ID=82628607

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210320575.6A Pending CN114860246A (zh) 2022-03-29 2022-03-29 一种图中图卷积神经网络的软件系统中类交互关系预测方法

Country Status (1)

Country Link
CN (1) CN114860246A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111368074A (zh) * 2020-02-24 2020-07-03 西安电子科技大学 一种基于网络结构和文本信息的链路预测方法
CN111913702A (zh) * 2020-08-11 2020-11-10 湖北大学 一种基于图神经网络的软件系统中关键类的识别方法
CN114022786A (zh) * 2021-12-10 2022-02-08 深圳大学 基于图中图卷积网络的高光谱图像分类方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111368074A (zh) * 2020-02-24 2020-07-03 西安电子科技大学 一种基于网络结构和文本信息的链路预测方法
CN111913702A (zh) * 2020-08-11 2020-11-10 湖北大学 一种基于图神经网络的软件系统中关键类的识别方法
CN114022786A (zh) * 2021-12-10 2022-02-08 深圳大学 基于图中图卷积网络的高光谱图像分类方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
田迎: "基于图神经网络的软件系统中类之间关系预测研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Similar Documents

Publication Publication Date Title
CN110597735B (zh) 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
WO2021103492A1 (zh) 一种企业经营风险预测方法和系统
CN109918511B (zh) 一种基于bfs和lpa的知识图谱反欺诈特征提取方法
CN109857457B (zh) 一种在双曲空间中学习源代码中的函数层次嵌入表示方法
CN113344700B (zh) 一种基于多目标优化的风控模型构建方法、装置和电子设备
CN112417063B (zh) 一种基于异构关系网络的相容功能项推荐方法
CN112508265A (zh) 面向业务流程管理的时间与活动多任务预测方法及系统
CN114898121A (zh) 基于图注意力网络的混凝土坝缺陷图像描述自动生成方法
CN113361559A (zh) 基于深宽度联合神经网络的多模态数据知识信息提取方法
CN114331122A (zh) 重点人员风险等级评估方法及相关设备
Nural et al. Using meta-learning for model type selection in predictive big data analytics
CN114821340A (zh) 一种土地利用分类方法及系统
CN116861924A (zh) 基于人工智能的项目风险预警方法及系统
Wang et al. R2-trans: Fine-grained visual categorization with redundancy reduction
CN111723021B (zh) 一种基于知识库和表示学习的缺陷报告自动分派方法
Sahu et al. Classification of crop leaf diseases using image to image translation with deep-dream
CN115827878A (zh) 语句情感分析方法、装置以及设备
CN114860246A (zh) 一种图中图卷积神经网络的软件系统中类交互关系预测方法
CN115544307A (zh) 基于关联矩阵的有向图数据特征提取与表达方法和系统
CN114818681A (zh) 一种实体识别方法及系统、计算机可读存储介质及终端
CN113643141A (zh) 解释性结论报告生成方法、装置、设备及存储介质
CN113296784A (zh) 一种基于配置代码表征的容器基础镜像推荐方法及系统
CN112835797A (zh) 一种基于程序中间结构特征的蜕变关系预测方法
de Oliveira et al. Time Series Compression for IoT: A Systematic Literature Review
CN116579722B (zh) 一种基于深度学习的商品分销出入库管理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination