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

一种基于图神经网络的软件系统中关键类的识别方法技术方案

技术编号:26303744 阅读:62 留言:0更新日期:2020-11-10 19:58
本发明专利技术公开了一种基于图神经网络的软件系统中关键类识别的方法,包括:(1)利用开源工具解析软件源代码文件,提取类之间的各种关联关系,并根据这些关系构建类之间的加权软件网络模型;(2)利用网络嵌入方法,对加权软件网络中的节点进行学习,得到节点的嵌入向量;(3)构建基于图神经网络的排序模型(4)利用pairwise排序损失训练模型,以实现对网络中节点重要性排序。本发明专利技术的优点在于:在确保识别精度的情况下,可以在极低的时间复杂度内对大型软件系统进行分析,并从中识别出潜在的关键类。可以为开发者们理解软件结构,提高软件系统稳定性提供帮助。

【技术实现步骤摘要】
一种基于图神经网络的软件系统中关键类的识别方法
本专利技术涉及软件工程软件网络分析
,特别涉及一种基于图神经网络的软件系统中关键类的识别方法。
技术介绍
随着网络的规模不断扩大,软件系统的复杂度随之不断提升,软件中存在缺陷是在所难免的。发现这些缺陷也变得愈发困难,这些缺陷一旦在软件使用过程中暴露出来,影响到的往往不仅是缺陷所在的模块本身,有可能是整个软件系统崩溃。有研究指出,软件系统中的缺陷与疾病的传播模型类似,会随着软件系统中的各种模块间依赖关系,例如方法调用和参数传递等,传播到其它没有缺陷的模块中,导致无缺陷的模块最后也同样出现问题。但软件系统的高复杂性已经成为现代软件的一个基本特征,所以软件行业必须以软件高度复杂为前提,设法提升软件质量。然而,软件开发者们的精力和时间是有限的,必须优先发现可能对系统造成致命打击的缺陷和漏洞。研究表明,大部分软件缺陷能给系统带来的影响是极为有限的,但处于软件系统中关键位置的类如果存在缺陷,造成系统出现重大故障的概率会更大。因此,如果可以使用自动化的方式挖掘软件系统中关键类,着重对这些关键类给予关注和完本文档来自技高网...

【技术保护点】
1.一种基于图神经网络的软件网络中关键类识别的方法,其特征在于,包括以下步骤:/nA.解析软件代码源文件,构建加权网络模型,包括以下子步骤,/n步骤A1,以Java语言开发的软件系统为例,运用Dependencyfinder工具对源代码编译后产生的.class文件、由源代码打包而成的.jar文件或者包含源代码的zip压缩包进行依赖关系扫描,并保存为XML文件;/n步骤A2,从得到的XML文件中,提取源代码中类之间的各种依赖关系,并生成网络数据格式,具体的软件网络模型定义如下:/n类级别软件网络CSN定义为一个有向加权网络CSN=(V,E,W),其中节点v

【技术特征摘要】
1.一种基于图神经网络的软件网络中关键类识别的方法,其特征在于,包括以下步骤:
A.解析软件代码源文件,构建加权网络模型,包括以下子步骤,
步骤A1,以Java语言开发的软件系统为例,运用Dependencyfinder工具对源代码编译后产生的.class文件、由源代码打包而成的.jar文件或者包含源代码的zip压缩包进行依赖关系扫描,并保存为XML文件;
步骤A2,从得到的XML文件中,提取源代码中类之间的各种依赖关系,并生成网络数据格式,具体的软件网络模型定义如下:
类级别软件网络CSN定义为一个有向加权网络CSN=(V,E,W),其中节点vi(vi∈V)代表软件系统的一个类或者接口,如果两个节点之间存在依赖关系,则它们之间存在一条连边eij(eij=(vi,vj)∈E),连边权重wij(wij=(vi,vj)∈W)表示连边eij的权值;在CSN的建模过程中,类节点依赖关系主要涉及下面三种:
(1)继承,假如类i与类j之间存在继承或接口实现关系,则它们对应的类节点vi和vj之间存在一条连边eij;
(2)聚合,假如类i包含类j的属性,则它们对应的类节点vi和vj之间存在一条连边eij;
(3)参数,假如类i中的方法调用了类j的方法,则它们对应的类节点vi和vj之间存在一条连边eij;
在软件网络建模过程中使用类之间的依赖次数作为连接两个类节点边的权重,两个类之间每存在一次以上三种依赖关系,则连接两个类节点的边权重增加1,类节点之间的连边权重并不直接决定节点的重要性,而是代表了两个类之间的紧密程度;
B.利用网络嵌入方法,对加权软件网络中的节点进行学习,得到节点的嵌入向量,包括以下子步骤:
步骤B1,将网络中节点之间的连边关系通过偏向性随机游走转化为节点序列,并将这种序列类比为自然语言处理中的文本序列;
步骤B2,根据步骤B1得到的节点序列,通过词向量模型Skip-gram方法来学习网络节点的特征向量,即将网络中每个节点v转化为一个c维的表征向量
C.构建基于图神经网络的排序模型,包括以下子步骤:
在软件网络CSN=(V,E,W)定义基础上,令N(v)={u∈V|(v,u)∈E)表示节点v的直接邻居节点集,表示节点v通过网络嵌入学习方法获得的网络嵌入向量,c为向量维度;表示目标节点v在模型第k层的隐含嵌入向量,d为隐含嵌入向量的维度,初始时,让为了简化模型,本发明保持不同层中隐含嵌入向量的维度d一样;
步骤C1,构建一个编码器,通过图神经网络使用迭代更新模式,网络中每一个节点在迭代中都进行加权平均的领域聚合其邻居节点在上一层迭代中的嵌入向量,并与自身在上一层迭代中的嵌入向量相结合,得到新一层的嵌入向量,以此获得网络全局的隐藏特征;表...

【专利技术属性】
技术研发人员:何鹏陈宇轩张健雄王展王雪纯
申请(专利权)人:湖北大学
类型:发明
国别省市:湖北;42

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

1