【技术实现步骤摘要】
一种基于图神经网络的架构恢复方法和架构恢复装置
[0001]本专利技术涉及自动化的软件架构恢复,具体而言,涉及一种基于图神经网络的架构恢复方法和架构恢复装置。
技术介绍
[0002]软件架构恢复是使用自动化的技术进行软件架构的恢复,主要使用的是软件的聚簇技术,旨在将软件实体例如文件、函数、类等映射到有意义的模块中。软件架构恢复技术算法通常是利用知识和结构的信息进行软件模块聚类,目前大多数的架构恢复算法技术并没有同时利用软件的知识信息和结构信息,即程序语义和文件实体之间的依赖关系。本专利技术提出的基于图神经网络的软件架构恢复装置可以同时兼顾软件系统的结构信息和软件系统的知识信息,从而更准确更全面的获取软件的架构信息。
技术实现思路
[0003]本专利技术所要解决的问题:对软件系统进行自动化架构恢复。
[0004]为解决上述问题,本专利技术采用的方案如下:一种基于图神经网络的架构恢复方法,该方法将软件系统中的实体例如软件的文件进行分析,具体为将从文件中提取的语义信息和文件中提取的依赖信息进行结合,在图神经 ...
【技术保护点】
【技术特征摘要】
1.一种基于图神经网络的架构恢复方法,其特征在于,包括如下步骤:S1:输入软件系统每个文件中的语义信息;所述的文件中的语义信息是软件产品源代码文件中单词的集合,包含常见的宏,变量名和函数名以及注释中出现的单词;所述的文件中的语义信息是由clang/llvm等程序语义分析工具提取的文本数据;S2:输入软件系统文件之间的依赖关系;所述的依赖关系是指软件产品源代码文件之间的调用关系,包括include依赖,函数依赖,符号依赖等,可以使用静态分析以及动态分析获取;S3:将S1和S2获取的软件的信息整合为图的数据结构;S4:使用无监督图神经网络算法将S3得到图数据结构进行训练得到每个节点的向量表达;S5:使用无监督聚类算法K
‑
means算法将S4步骤获取的图数据中的节点的向量表达进行聚类,根据设定的K值将节点分为K类,得到每个文件节点具体的类别,每个节点代表了软件架构的某一类,共同构成了一个软件的架构。2.根据权利要求1所述的基于图神经网络的架构恢复方法,其特征在于,所述步骤S3中,其具体包括如下步骤:S31:使用pyg.data库中的data数据结构来表示图的数据,首先将S1中的获取的语义单词向量化,向量中每个位代表的是单词是否出现在文件中,向量对应的位为1表示单词出现在文件中,对应的位为0代表单词不在文件中;S32:将S2获取的图的依赖边使用邻接矩阵表示,将S31中的文件向量赋值在pyg.data.x中,将邻接矩阵赋值到pyg.data.edge中,作为图的边的信息。3.根据权利要求1所述的基于图神经网络的架构恢复方法,其特征在于,所述步骤S4中,其具体包括如下步骤:S41:将图神经网络模型GCN初始化为2层模型,第一层模型的单元为输入图的向量最大维度的一半,第二层模型的单元为输出的向量表达的维度,手动选定为想要聚簇的类别数K,设定函数的损失函数为邻居节点相似度作为损失函数;S42:将数据在GCN模型中进行训练,在损失函数收敛后停止训练,获取节点的低维度表达。4.一种基于图神经网络的架构恢复装置,其...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。