一种应用系统架构的分析方法及装置与流程

文档序号:36483647发布日期:2023-12-25 16:32阅读:37来源:国知局
一种应用系统架构的分析方法及装置与流程

本技术涉及系统架构分析,尤其涉及一种应用系统架构的分析方法及装置。


背景技术:

1、目前,对应用系统架构的分析方案仅从代码质量维度入手,对代码的可靠性、安全性、可维护性以及代码重复率这些指标进行分析。现有的分析方式对应用系统架构考虑不全,缺少对业务维度和交易维度的分析。代码质量是分析应用系统架构基础的一点,而业务维度的分析和交易维度的分析也是应用系统生产展业时关键的一点。因此,目前亟需一种方案,用以从多个维度对应用系统架构进行全面高质量的分析。


技术实现思路

1、本技术提供一种应用系统架构的分析方法及装置,用以从多个维度对应用系统架构进行全面高质量的分析。

2、第一方面,本技术提供应用系统架构的分析方法,该方法包括:接收待分析应用系统架构;基于各维度的分析规则,对所述待分析应用系统架构进行业务维度、交易维度和代码维度的分析,分别得到业务维度的分析结果、交易维度的分析结果和代码维度的分析结果;对所述业务维度的分析结果、所述交易维度的分析结果和所述代码维度的分析结果进行分析总结,得到所述待分析应用系统架构的分析报告。

3、上述技术方案中,从业务维度、交易维度和代码维度对应用系统架构进行分析,使得分析结果更全面准确。

4、在一种可能的设计中,对所述待分析应用系统架构进行业务维度的分析,得到业务维度的分析结果,包括:采集所述待分析应用系统架构的业务数据;对于任一业务分析规则,将所述业务数据和业务分析规则对应的提示语输入至大语言模型,对所述业务数据进行分析,得到针对所述业务分析规则对应的分析结果;将各业务分析规则对应的分析结果进行汇总,得到所述业务维度的分析结果。

5、上述技术方案中,通过对大语言模型的问答,自动摘要以及文档生成功能加以利用,对应用系统业务维度数据进行模型训练,设计业务架构分析相关的prompt提示语,向模型提问,模型给出业务维度的分析结果,可以为业务分析提供更多元化、全面优质的数据分析解决方案,推动企业业务分析的升级与转型。此外,本技术在数据采集和分析过程中,可以处理大量的非结构化数据,将多样的数据源进行整合并进行深度分析,提高了业务数据的利用率以及分析效率。

6、在一种可能的设计中,对所述待分析应用系统架构进行交易维度的分析,得到交易维度的分析结果,包括:在所述待分析应用系统架构执行交易的过程中,通过javaagent插件获取任一交易分析规则所需的执行信息,并对所述执行信息进行分析,得到各交易分析规则对应的分析结果;将各交易分析规则对应的分析结果进行汇总,得到所述交易维度的分析结果。

7、上述技术方案中,基于javaagent技术,开发交易动态执行分析插件,在待分析应用系统架构执行交易的过程中,对执行信息进行分析,实现交易动态分析规则算法,提供了从交易维度动态分析应用系统架构的解决方案。

8、在一种可能的设计中,通过javaagent插件获取任一交易分析规则所需的执行信息之前,所述方法还包括:强制触发编译器,将javaagent插件中的字节码编译为机器码;将所述机器码加载至指定的处理器核心;通过javaagent插件获取任一交易分析规则所需的执行信息,包括:通过所述指定的处理器核心执行所述机器码,从而获取任一交易分析规则所需的执行信息。

9、上述技术方案中,javaagent插件在程序运行时通过强制触发编译器,将字节码编译生成本地机器代码,简单高效,不会损耗额外的性能,可以提高代码执行的速度和效率。

10、在一种可能的设计中,所述强制触发编译器,将javaagent插件中的字节码编译为机器码,包括:强制触发编译器,将javaagent插件中涉及循环计算操作的字节码转换为矢量化指令,所述矢量化指令用于对所述循环计算操作进行并行处理。

11、上述技术方案中,使用单指令流单数据流技术把字节码转换成矢量化指令,来优化程序中的循环和计算等操作。simd技术利用处理器并行计算的能力,将多个数据同时计算,从而提高程序的执行效率。

12、在一种可能的设计中,所述将所述机器码加载至指定的处理器核心,包括:将所述机器码存储在内存的指定缓存块中;所述指定缓存块的大小根据所述字节码编译为所述机器码的转化率确定;通过线程将所述机器码从所述指定缓存块取出并加载至指定的处理器核心。

13、上述技术方案中,在内存中申请单独的缓存块缓存机器码,固定大小的缓存块有利于提高java程序的内存使用效率和访问速度,降低内存碎片,可以带来更好的程序性能;将javaagent执行线程绑定到多核处理器的指定处理器核心上,获取预加载在内存的指定缓存块中的机器码在该处理器核心上执行,这样可以避免在代码执行过程中处理器核心切换和上下文切换等操作,从而提高程序的执行效率,实现更快的代码执行速度,并且在单独固定的cpu核心上执行,一定程度隔离了业务机器指令集,减小了对业务机器指令执行的影响,提高程序的稳定性。

14、在一种可能的设计中,所述将所述机器码加载至指定的处理器核心,包括:将所述javaagent插件的机器码注入所述指定的处理器核心的java虚拟机中;得到各交易分析规则对应的分析结果之后,还包括:将所述javaagent插件从所述java虚拟机中卸载;其中,在javaagent插件启用期间,当需要禁用javaagent插件时,将javaagent插件从所述java虚拟机中移除;当需要重新启用javaagent插件时,将javaagent插件注入所述java虚拟机中。

15、上述技术方案中,可以动态加载和卸载javaagent插件,不需要重新启动jvm,这样可以避免传统javaagent技术中加入代理会导致jvm崩溃或出现其他问题的情况。

16、在一种可能的设计中,所述将javaagent插件中的字节码编译为机器码之前,还包括:获取第一版本的字节码作为所述javaagent插件的字节码;所述第一版本的字节码与所述java虚拟机和所述指定的处理器核心所处的操作系统匹配;若不存在所述第一版本的字节码,则获取第二版本的字节码并对将修改后的第二版本的字节码,作为所述javaagent插件的字节码;所述第二版本的字节码为与所述第一版本的字节码最类似的字节码。

17、上述技术方案中,能够根据当前环境的需求,动态选择javaagent插件的版本、或者自动修改javaagent插件的版本,保证javaagent插件与当前环境的兼容性,并且可以使在不同的环境中高效地运行。

18、在一种可能的设计中,所述将javaagent插件中的字节码编译为机器码之前,还包括:获取已加载的类及对应的类加载器;遍历各个类加载器,检查是否存在其它插件占用javaagent插件的javaagent接口;若存在其它插件占用javaagent接口,则卸载当前的javaagent插件,并定时检测所述其它插件是否已释放所述javaagent接口;若所述其它插件已释放所述javaagent接口,则重新加载javaagent插件。

19、上述技术方案中,自适应javaagent版本可以适应其他插件的需求,避免与其他插件之间的冲突。当其他插件需要占用代理接口时,javaagent版本可以及时卸载代理,避免冲突发生,从而保证jvm的稳定性。

20、在一种可能的设计中,对所述待分析应用系统架构进行代码维度的分析,得到代码维度的分析结果,包括:采集所述待分析应用系统架构的源代码;将所述待分析应用系统架构的源代码解析为抽象语法树,基于预先配置的过滤规则,对所述抽象语法树的各节点进行裁剪,得到裁剪后的抽象语法树;所述过滤规则用于裁剪掉所述待分析应用系统架构中与设计模式无关的代码;对所述裁剪后的抽象语法树通过各设计模式对应的分析单元进行分析,初步得到各设计模式对应的抽象语法子树;针对任一设计模式对应的抽象语法子树,通过对所述设计模式对应的抽象语法子树进行结构对比和行为对比,最终所述抽象语法子树所属的设计模式;对所述设计模式对应的抽象语法子树对应的源代码进行染色,得到所述设计模式的源代码;不同设计模式对应的抽象语法子树对应的源代码的颜色不同;根据所述设计模式的设计模式规则对所述设计模式的源代码进行检查,得到所述设计模式规则的分析结果;将各设计模式规则对应的分析结果进行汇总,得到所述代码维度的分析结果。

21、上述技术方案中,通过经代码解析为抽象语法树的方式,识别出使用了实际模式的代码,并对使用了设计模式的代码进行分析,可以提高代码质量管理和维护的效率,减少出错的可能性。

22、在一种可能的设计中,所述对所述裁剪后的抽象语法树通过各设计模式对应的分析单元进行分析,初步得到各设计模式对应的抽象语法子树,包括:针对任一设计模式对应的分析单元,根据所述设计模式的结构特征确定所述裁剪后的抽象语法树的分析起点;从所述分析起点开始,在所述裁剪后的抽象语法树中查找与所述设计模式相匹配的方法,并分析得到与所述设计模式相匹配的方法相似的相似方法;生成与所述设计模式相匹配的方法的数据结构,所述数据结构包括方法的名称、方法接收的参数列表、方法返回的结果类型,以及所述相似方法的列表;集合与所述设计模式相匹配的各个方法的数据结构,得到所述设计模式对应的抽象语法子树。

23、在一种可能的设计中,所述针对任一设计模式对应的抽象语法子树,通过对所述设计模式对应的抽象语法子树进行结构对比,包括:生成所述设计模式对应的抽象语法子树的第一结构抽象表示;将所述第一结构抽象表示与样本库中所述设计模式的第二结构抽象表示进行对比,判断所述第一结构抽象表示与所述第二结构抽象表示是否相同;若相同,则所述设计模式对应的抽象语法子树的结构对比通过。

24、上述技术方案中,通过对设计模式对应的抽象语法子树,和设计模式对应的抽象语法子树进行结构对比,可以进一步确认代码是否使用了设计模式。

25、在一种可能的设计中,所述针对任一设计模式对应的抽象语法子树,通过对所述设计模式对应的抽象语法子树进行行为对比,包括:获取所述设计模式对应的抽象语法子树中的方法;对于每个方法,提取方法的操作符、操作数及控制流结构,得到每个方法的方法表示;对于所述设计模式的每个子设计模式,将属于同一子设计模式的方法表示进行归类,得到每个子设计模式对应的方法集合;比较各子设计模式对应的方法集合之间的相似度,将相似度高于设定阈值的方法集合进行合并。

26、上述技术方案中,通过对设计模式对应的抽象语法子树,和设计模式对应的抽象语法子树进行行为对比,可以进一步确认代码是否使用了设计模式。

27、第二方面,本技术实施例提供一种应用系统架构的分析装置,该装置包括:

28、接入模块,用于接入待分析应用系统架构;

29、分析模块,基于各维度的分析规则,对所述待分析应用系统架构进行业务维度、交易维度和代码维度的分析,分别得到业务维度的分析结果、交易维度的分析结果和代码维度的分析结果;

30、总结模块,用于对所述业务维度的分析结果、所述交易维度的分析结果和所述代码维度的分析结果进行分析总结,得到所述待分析应用系统架构的分析报告。

31、在一种可能的设计中,所述分析模块,在对所述待分析应用系统架构进行业务维度的分析,得到业务维度的分析结果时,具体用于:采集所述待分析应用系统架构的业务数据;对于任一业务分析规则,将所述业务数据和业务分析规则对应的提示语输入至大语言模型,对所述业务数据进行分析,得到针对所述业务分析规则对应的分析结果;将各业务分析规则对应的分析结果进行汇总,得到所述业务维度的分析结果。

32、在一种可能的设计中,所述分析模块,在对所述待分析应用系统架构进行交易维度的分析,得到交易维度的分析结果时,具体用于:在所述待分析应用系统架构执行交易的过程中,通过javaagent插件获取任一交易分析规则所需的执行信息,并对所述执行信息进行分析,得到各交易分析规则对应的分析结果;将各交易分析规则对应的分析结果进行汇总,得到所述交易维度的分析结果。

33、在一种可能的设计中,所述分析模块,在通过javaagent插件获取任一交易分析规则所需的执行信息之前,还用于强制触发编译器,将javaagent插件中的字节码编译为机器码;将所述机器码加载至指定的处理器核心;通过javaagent插件获取任一交易分析规则所需的执行信息,包括:通过所述指定的处理器核心执行所述机器码,从而获取任一交易分析规则所需的执行信息。

34、在一种可能的设计中,所述分析模块,在所述强制触发编译器,将javaagent插件中的字节码编译为机器码时,具体用于强制触发编译器,将javaagent插件中涉及循环计算操作的字节码转换为矢量化指令,所述矢量化指令用于对所述循环计算操作进行并行处理。

35、在一种可能的设计中,所述分析模块,在所述将所述机器码加载至指定的处理器核心时,具体用于将所述机器码存储在内存的指定缓存块中;所述指定缓存块的大小根据所述字节码编译为所述机器码的转化率确定;通过线程将所述机器码从所述指定缓存块取出并加载至指定的处理器核心。

36、在一种可能的设计中,所述分析模块,在所述将所述机器码加载至指定的处理器核心时,具体用于将所述javaagent插件的机器码注入所述指定的处理器核心的java虚拟机中;所述分析模块,在得到各交易分析规则对应的分析结果之后,还用于将所述javaagent插件从所述java虚拟机中卸载;其中,在javaagent插件启用期间,当需要禁用javaagent插件时,将javaagent插件从所述java虚拟机中移除;当需要重新启用javaagent插件时,将javaagent插件注入所述java虚拟机中。

37、在一种可能的设计中,所述分析模块,在所述将javaagent插件中的字节码编译为机器码之前,还用于获取第一版本的字节码作为所述javaagent插件的字节码;所述第一版本的字节码与所述java虚拟机和所述指定的处理器核心所处的操作系统匹配;若不存在所述第一版本的字节码,则获取第二版本的字节码并对将修改后的第二版本的字节码,作为所述javaagent插件的字节码;所述第二版本的字节码为与所述第一版本的字节码最类似的字节码。

38、在一种可能的设计中,所述分析模块,在所述将javaagent插件中的字节码编译为机器码之前,还用于获取已加载的类及对应的类加载器;遍历各个类加载器,检查是否存在其它插件占用javaagent插件的javaagent接口;若存在其它插件占用javaagent接口,则卸载当前的javaagent插件,并定时检测所述其它插件是否已释放所述javaagent接口;若所述其它插件已释放所述javaagent接口,则重新加载javaagent插件。

39、在一种可能的设计中,所述分析模块,在对所述待分析应用系统架构进行代码维度的分析,得到代码维度的分析结果时,具体用于采集所述待分析应用系统架构的源代码;将所述待分析应用系统架构的源代码解析为抽象语法树,基于预先配置的过滤规则,对所述抽象语法树的各节点进行裁剪,得到裁剪后的抽象语法树;所述过滤规则用于裁剪掉所述待分析应用系统架构中与设计模式无关的代码;对所述裁剪后的抽象语法树通过各设计模式对应的分析单元进行分析,初步得到各设计模式对应的抽象语法子树;针对任一设计模式对应的抽象语法子树,通过对所述设计模式对应的抽象语法子树进行结构对比和行为对比,最终所述抽象语法子树所属的设计模式;对所述设计模式对应的抽象语法子树对应的源代码进行染色,得到所述设计模式的源代码;不同设计模式对应的抽象语法子树对应的源代码的颜色不同;根据所述设计模式的设计模式规则对所述设计模式的源代码进行检查,得到所述设计模式规则的分析结果;将各设计模式规则对应的分析结果进行汇总,得到所述代码维度的分析结果。

40、在一种可能的设计中,所述分析模块,在所述对所述裁剪后的抽象语法树通过各设计模式对应的分析单元进行分析,初步得到各设计模式对应的抽象语法子树时,具体用于针对任一设计模式对应的分析单元,根据所述设计模式的结构特征确定所述裁剪后的抽象语法树的分析起点;从所述分析起点开始,在所述裁剪后的抽象语法树中查找与所述设计模式相匹配的方法,并分析得到与所述设计模式相匹配的方法相似的相似方法;生成与所述设计模式相匹配的方法的数据结构,所述数据结构包括方法的名称、方法接收的参数列表、方法返回的结果类型,以及所述相似方法的列表;集合与所述设计模式相匹配的各个方法的数据结构,得到所述设计模式对应的抽象语法子树。

41、在一种可能的设计中,所述分析模块,在所述针对任一设计模式对应的抽象语法子树,通过对所述设计模式对应的抽象语法子树进行结构对比时,具体用于:生成所述设计模式对应的抽象语法子树的第一结构抽象表示;将所述第一结构抽象表示与样本库中所述设计模式的第二结构抽象表示进行对比,判断所述第一结构抽象表示与所述第二结构抽象表示是否相同;若相同,则所述设计模式对应的抽象语法子树的结构对比通过。

42、在一种可能的设计中,所述分析模块,在所述针对任一设计模式对应的抽象语法子树,通过对所述设计模式对应的抽象语法子树进行行为对比,包括时,具体用于获取所述设计模式对应的抽象语法子树中的方法;对于每个方法,提取方法的操作符、操作数及控制流结构,得到每个方法的方法表示;对于所述设计模式的每个子设计模式,将属于同一子设计模式的方法表示进行归类,得到每个子设计模式对应的方法集合;比较各子设计模式对应的方法集合之间的相似度,将相似度高于设定阈值的方法集合进行合并。

43、第三方面,本技术实施例还提供一种计算设备,包括:

44、存储器,用于存储程序指令;

45、处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如第一方面的任一种可能的设计中所述的方法。

46、第四方面,本技术实施例还提供一种计算机可读存储介质,其中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得上述第一方面的任一种可能的设计中所述的方法实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1