发布信息

一种基于特征融合的算法血缘管理方法及装置 专利技术说明

作者:admin      2022-11-23 13:30:16     341

计算;推算;计数设备的制造及其应用技术1.本发明涉及数据管理技术领域,尤其涉及一种基于特征融合的算法血缘管理方法及装置。背景技术:2.近年来,随着软件领域的迅猛发展,越来越多的应用系统、网站等被人类通过网络连接、访问,软件供应链越发复杂多元,复杂的软件供应链会引入一系列的安全问题,如算法孤岛现象严重、算法来源难追溯、算法质量难保障等,软件系统的质量成为国内外的研究焦点,代码安全逐渐成为学术界、工业界的热门话题。3.为了方便对算法进行溯源分析及管理,需要将算法血缘关系进行可视化,从而将算法血缘关系清晰地呈现在用户面前。然而,现有的可视化分析方法中,基于词法的表示方法实现简单快捷,但是忽略了算法的结构特性;基于语法的表示方法虽然解决了词法的缺陷,但是忽略了算法的上下文之间的依赖,基于语义的表示方法虽然解决了基于语法的缺陷,可以方便了解程序的执行过程,但是最终模型的复杂程度巨大。4.专利文献cn112783857a公开了一种数据血缘管理方法、装置、电子设备及存储介质。其方法包括:获取目标元数据的工作流,并将工作流存储至目标节点;工作流包括至少一个流程组件;对工作流中的流程组件进行解析,确定各个流程组件的来源表、目标表以及来源表中来源字段和目标表中目标字段之间的关联关系;通过目标节点的属性信息和分枝图对数据血缘进行管理。该方法针对数据的全流程,即从数据产生到数据消亡的记录和管理,需要实时进行更新数据流内容。5.专利文献cn110363985a公开了一种交通数据分析方法、装置、存储介质及设备。该方法包括:获取交通数据;根据血缘管理算法将交通数据进行分类计算,构建包含不同类别交通数据的主题库;根据多维度分析算法对交通数据进行分析计算,构建包含不同维度交通数据的专题库;根据主题库和专题库生成交通数据分析结果。该方法通过血缘管理算法对所以数据进行了分类,并以分类结果进行多维度预测,提高最终决策的整体效益。6.传统数据血缘是用于研究数据流向下的表与表之间的关系,在预测过程中针对的是数据与数据之间的作用关系,而本技术提出的算法血缘是针对算法的语法与功能统一管理,但现阶段的算法血缘仅通过语法的表述方式进行呈现,但是对应的源码数据之间的逻辑顺序却不能很好的表达出来,从而影响了后续源码数据管理的难度。技术实现要素:7.为了解决上述问题,本发明提供了一种基于特征融合的算法血缘管理方法,该方法通过融合算法的多维特征,从而解决算法来源难以追溯,难以管理的问题。8.一种基于特征融合的算法血缘管理方法,包括:9.步骤1、获取算法信息与对应的源码数据,对所述源码数据进行解析,获得控制流图与所述控制流图中节点信息对应的抽象语法树;10.步骤2、获取源码数据在所述控制流图中对应的节点信息,计算获得节点信息对应的节点嵌入向量;11.步骤3、获得源码数据在所述抽象语法树中对应的序列标识符,计算获得序列标识符对应的词嵌入向量;12.步骤4、对步骤2获得的节点嵌入向量和步骤3获得的词嵌入向量进行融合,获得对应源码数据的融合特征向量;13.步骤5、根据步骤1获得的算法信息和步骤4获得的融合特征向量,将源码数据对应的融合特征向量进行可视化分析,获得用于溯源管理源码数据的算法血缘图谱。14.本发明通过对包含语法信息的抽象语法树和包含语义信息的控制流图进行特征提取,将提取获得的特征进行拼接融合获得兼具语义信息和语法信息的融合特征,最后以算法信息作为属性,对算法对应的融合特征进行可视化分析,获得算法血缘图谱,通过可视化的算法血缘图谱,可以方便工作人员对源码数据进行溯源分析以及管理。15.具体的,所述步骤1中的算法信息包括原始文件路径、模型名、函数名、编程语言、代码注释、输入输出类型以及功能信息。16.优选的,步骤1获得控制流图后,要对控制流图进行预处理,所述预处理包括节点信息的拼接与替换,对预处理后的控制流图进行特征提取。17.具体的,所述控制流图的表达式如下:18.g=(v,e)19.式中,v表示节点的集合,节点中包含至少一条语句,e表示有向边的集合,以语句构成的控制流图仅有唯一的入口和出口节点。20.具体的,节点信息的拼接与替换,其具体过程:依据算法的函数调用关系,将源码数据对应的控制流图节点,替换为被调用函数对应的控制流图,即将该节点的父亲节点与替换进来的控制流图的入口节点相连,该节点孩子节点与替换进来的控制流图的出口节点相连,直至构建出一个更加完整的控制流图。21.优选的,所述步骤1获得抽象语法树后,要对抽象语法树进行预处理,所述预处理包括对程序中的变量进行规范化,并添加全局自增数量,对预处理后的抽象语法树进行特征提取,所述规范化是将类型相同的变量格式进行统一,按照其类型进行替换,同时对带有小数的变量统一使用《double》表示,保证最终提取的特征维度相同,方便后续的拼接工序。22.具体的,所述抽象语法树的序列标识符是按照深度优先搜索算法(dfs)从根节点出发对预处理后的抽象语法树进行遍历生成,其具体表达式如下:23.seqast={ident1,ident2,...,identn}24.式中,identn表示第n个ast节点中的符号或变量名。25.具体的,所述步骤2的节点嵌入向量是基于控制流图的非对称传递性,采用hope算法进行特征提取,所述节点嵌入向量的长度为4。26.具体的,所述步骤3的词嵌入向量是采用word2vec算法对序列标识符进行特征提取,所述词嵌入向量的长度为50。27.具体的,所述步骤4的融合特征向量是通过拼接当前节点中所有序列标识符的词嵌入向量和节点的节点嵌入向量获得,其具体表达式如下:[0028][0029]式中,ecfg表示源码数据的节点嵌入向量,表示节点内的第k个标识符的词嵌入向量。[0030]具体的,所述步骤5的可视化分析是基于融合特征向量,采用欧氏距离计算源码数据之间的相似度,将相似度小于阈值的源码数据进行归类,并以算法信息为检索属性,构建算法血缘图谱。[0031]本发明还提供了一种算法血缘管理装置,包括计算机存储器、计算机处理器以及存储在所述计算机存储器中并可在所述计算机处理器上执行的计算机程序,所述计算机存储器中执行上述的基于融合特征的算法血缘管理方法;所述计算机处理器执行所述计算机程序时实现以下步骤:输入待检索算法的源码数据,通过可视化的算法血缘图谱进行检索,输出与目标算法具有亲和关系的算法数据集。[0032]具体的,所述亲和关系指的是目标算法与对应算法数据之间存在相同或相似的源码数据。[0033]与现有技术相比,本发明的有益效果:[0034](1)采用控制流图的节点信息来表示语义信息,抽象语法树的序列标识符来表示语法信息,从而获得同时具有语法和语义的融合特征。[0035](2)对控制流图与抽象语法树进行数据的预处理,保证两种不同维度的特征可以融合在一起。[0036](3)生成可视化的源码数据血缘图谱,可以快速获取与目标算法具有亲和关系的算法数据库,从而方便后续源码数据的日常维护工作。附图说明[0037]图1为本发明提供的一种基于特征融合的算法血缘管理方法的流程示意图。具体实施方式[0038]由于计算机算法的迅猛发展,越来越多的系统、网站会采用许多不同的算法共同搭建,但是语法、语义都不相同的算法在后续的日常管理维护过程中会引起一系列安全问题:算法孤岛现象、算法来源难以追溯、算法质量难以保证等。[0039]为了方便对算法和对应源码数据进行溯源分析及管理,本实施例提出了一种基于特征融合的算法血缘管理方法,如图1所示,包括:[0040]步骤1、获取算法信息与对应的源码数据,对源码数据进行解析,获得控制流图与所述控制流图中节点信息对应的抽象语法树;[0041]对控制流图进行预处理,依据算法的函数调用关系,将源码数据对应的控制流图节点,替换为被调用函数对应的控制流图,即将该节点的父亲节点与替换进来的控制流图的入口节点相连,该节点孩子节点与替换进来的控制流图的出口节点相连,直至构建出一个更加完整的控制流图,对预处理后的控制流图进行特征提取,其表达式如下:[0042]g=(v,e)[0043]式中,v表示节点的集合,节点中包含至少一条语句,e表示有向边的集合,以语句构成的控制流图仅有唯一的入口和出口节点;[0044]对抽象语法树进行预处理,所述预处理包括对程序中的变量进行规范化,并添加全局自增数量,按照深度优先搜索算法(dfs)从根节点出发对预处理后的抽象语法树进行遍历,生成节点序列标识符。所述规范化是将类型相同的变量格式按照其类型进行统一,同时对带有小数的变量统一使用《double》表示,其中,生成节点序列标识符具体表达式如下:[0045]seqast={ident1,ident2,...,identn}[0046]式中,identn表示第n个ast节点中的符号或变量名。[0047]步骤2、获取源码数据在控制流图中对应的节点信息,基于控制流图的非对称传递性,采用hope算法进行特征提取,其中节点嵌入向量ecfg的长度为4。[0048]步骤3、获取源码数据在抽象语法树中对应的序列标识符,采用word2vec算法对序列标识符进行特征提取,所述词嵌入向量eident的长度为50。[0049]步骤4、通过拼接当前节点中所有序列标识符的词嵌入向量和节点的节点嵌入向量获得最终的融合特征,其具体表达式如下:[0050][0051]式中,ecfg表示源码数据的节点嵌入向量,表示节点内的第k个标识符的词嵌入向量。[0052]步骤5、根据步骤1获得的算法信息和步骤4获得的融合特征向量,将源码数据对应的融合特征向量作为实体,相似度s指标作为关系,并以算法信息作为属性a与值a,构建获得用于溯源管理源码数据的算法血缘图谱:[0053][0054][0055]式子中,表示源码数据i对应的节点融合特征向量,表示源码数据j对应的节点融合特征向量,sij表示源码数据i、源码数据j之间融合特征向量的相似度;aik表示源码数据i对应的第k个属性,aik表示源码数据i对应的第k个属性的值。[0056]本实施例还提供了一种算法血缘管理装置,包括计算机存储器、计算机处理器以及存储在所述计算机存储器中并可在所述计算机处理器上执行的计算机程序,所述计算机存储器中执行上述的基于特征融合的算法血缘管理方法。[0057]当进行软件的日常维护工作时,只需要输入待更新算法的源码数据,通过可视化的算法血缘图谱进行算法溯源,输出与目标算法具有相同或相似源码数据的算法数据集,然后再通过软件对这些算法数据集进行整体替换更新,从而快速完成源码数据的日常管理与更新工作。

相关内容 查看全部