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

一种基于云服务源码的多模式架构逆向解析方法技术

技术编号:35352424 阅读:14 留言:0更新日期:2022-10-26 12:22
本发明专利技术涉及一种基于云服务源码的多模式架构逆向解析方法,通过工具获取云服务器上仓库上的程序源代码,然后通过解析源代码来完成逆向解析出用整个程序的架构。该方法可以调用解析工具,获取所有源代码文件的抽象语法树,根据抽象语法树信息构造源代码工程的程序分析树,并分析程序分析树的元素(文件、类、函数、变量)耦合信息,构造树节点间的依赖关系,整合程序分析树的元素耦合信息,构造所有源代码文件的依赖关系图;可对生成的源代码文件依赖图针对经典模式、Maven项目单模块模式、Maven项目多模块模式聚合出源代码模块的依赖关系图和组件的关系依赖图。和组件的关系依赖图。和组件的关系依赖图。

【技术实现步骤摘要】
一种基于云服务源码的多模式架构逆向解析方法


[0001]本专利技术涉及一种解析方法,具体涉及一种基于云服务源码的多模式架构逆向解析方法,属于软件维护中多模式架构逆向解析的


技术介绍

[0002]逆向工程(Reverse Engineering)技术被定义为通过对系统的分析,实现对目标系统由低层到高层的抽象,描述软件系统的结构、逻辑以及组件之间的相互作用。通常首先以―种容易理解和分析的形式收集系统信息,然后逆向恢复到更高抽象层次上的系统模型(如组件图)。这些数据还可以进一步被用于逆向分析,从而获得更高抽象层次上的系统表示,如用于设计模式、系统体系结构等的逆向恢复。“架构分层结构信息恢复方法”实际上属于“逆向工程”的研究和实践范畴,属于软件架构恢复
,其主要目的是从工程项目中获取所需的架构信息。
[0003]在当今软件飞速发展的时代,软件系统的复杂度将随着软件的演化而不断增大,比如Android演化到如今的代码规模已经突破亿行。同时软件系统的质量随着软件的演化而逐渐下降,对该软件系统的维护也越来越难,维护成本也随之提高。在这种情况下,人们逐渐认识到软件架构在软件工程中的重要性,软件架构能为用户提供一个设计层次上的视图,使用户能够更加容易理解系统,并且能够准确定位所需维护的代码和影响的记围。软件架构可以帮助开发人员在保持外部行为不变的前提下,通过改变软件内部结构来增加软件易理解性、可扩展性和可重用性等,进而改进软件质量。
[0004]虽然已有一些架构逆向解析的方法,但存在很多问题,如不完全能够全自动恢复、恢复时间长、无法恢复超大型项目、恢复的架构缺乏层次易理解性差等问题。本专利技术从项目源码出发,通过逆向解析技术获得源码的文件依赖关系图、模块依赖关系图、组件依赖关系图,并可为超大型项目提供架构恢复服务。

技术实现思路

[0005]本专利技术正是针对现有技术中存在的问题,提供一种基于云服务源码的多模式架构逆向解析方法,该技术方案提供基于云服务源码的多模式架构逆向解析方法,通过分析云服务源码分析树的元素(文件、类、函数、变量)耦合信息,提取程序不同粒度层次实体间的信息进一步提取出架构层面的耦合关系,来完成对整个云服务程序的逆向解析。
[0006]为了实现上述目的,本专利技术的技术方案如下,一种基于云服务源码的多模式架构逆向解析方法,所述方法包括以下步骤:
[0007]步骤1:获取云服务源码,配置获取云服务器上源码的工具,获取所需要逆向解析项目的源码及相关代码信息。
[0008]步骤2:根据解析获取的源代码,提取源码信息,生成源码文件的依赖关系图:
[0009]步骤3:根据生成的源码文件的依赖关系图,进一步构建模块的关系依赖图:
[0010]步骤4:根据生成的源码模块的依赖关系图,进一步构建组件的依赖关系图,完成
逆向解析。
[0011]步骤2具体如下:
[0012]1)编写源码解析器,获取所有源代码文件的抽象语法树;
[0013]2)根据抽象语法树信息构造源代码工程的程序分析树,分析程序分析树的元素(文件、类、函数、变量)耦合信息,构造树节点间的依赖关系;
[0014]3)整合程序分析树的元素耦合信息,构造所有源代码文件的依赖关系图。
[0015]步骤3具体如下:
[0016]1)进行模块化预处理,依据文件间依赖关系以及目录结构信息,对文件依赖图进行聚合,消除噪音文件,并使聚合的模块的粒度介于文件与目录之间;
[0017]2)模块化过程:
[0018]a)经典项目模式的模块化:通过判断两个节点是否存在继承、实现、声明定义,判断两个节点是否存在双向依赖、闭环依赖等规则在文件依赖图的基础上去除了强依赖类型和结构,从而完成模块化;
[0019]b)Maven单模块模式的模块化:Maven单模块在模块化处理过程中,查找项目中符合controller、dao、service命名规则的目录名,完成模块化处理;
[0020]c)Maven多模块模式的模块化:Maven是一个以POM文件作为项目对象模型,通过一小段描述信息来管理项目的构建,通过解析POM文件得到源码的POM依赖树,查找POM依赖树中的叶子节点,完成模块化处理;
[0021]3)整合模块化过程中产生的信息,生成源码模块的依赖关系图。
[0022]步骤4:根据生成的源码模块的依赖关系图,进一步构建组件的依赖关系图,完成逆向解析,分为三种不同的组件化规则:
[0023]1)经典项目模式的组件化,
[0024]a)借助模块的依赖关系图计算考量两实体间依赖关系的强弱的数值,即模块间的依赖强度;
[0025]b)将所有的依赖密集对根据实体间的依赖强度大小排序,依赖强度大的实体优先聚合,不断迭代,最终得到组件依赖图;
[0026]2)Maven单模块项目的组件化,
[0027]在Maven项目单模块的组件化过程中,由于POM依赖树只有单节点,所以将
[0028]项目名称作为组件名,且只有一个组件。
[0029]3)Maven多模块项目的组件化,
[0030]遍历POM依赖树,将POM根节点下的第一层POM文件节点的名称作为组件名,完成Maven多模块组件化处理。
[0031]本专利技术方法从云服务器获取程序源码,提取程序源码中不同粒度层次实体间的信息进一步提取出架构层面的耦合关系,来完成对整个云服务程序的逆向解析。
[0032]相对于现有技术,本专利技术具有如下优点,本专利技术方法通过从云服务器上获取得到的源码,提取出程序源码的语法树,进而提取出源码中不同层次粒度实体间的依赖关系进而逆向解析出系统架构。本专利技术与现有逆向解析方法相比,主要有以下一些优点:
[0033]1、本专利技术采用逆向解析方法,是针对部署在云服务器上的程序,能够全自动化获取程序源码,能够有效的缩短逆向解析云服务程序的时间。传统的逆向解析方法,需要手动
将云服务上的项目下载到本地。随着软件的快速发展,系统复杂度越来越大,开发人员越来越多,从而云服务器程序在开发过程中会部署在Gitlab上,难以将程序导入至逆向解析工具中。而本专利技术采用的逆向解析方法,集成了云服务器代码管理工具,可以自动化操作部署在云服务器上的程序源码,解决了传统逆向解析方法对于云服务源码难获取的缺点,能够效的缩短逆向解析云服务程序的时间;
[0034]2、与传统逆向解析方法相比,本方法基于源代码的多信息架构提取即是通过对源代码的自动分析,提取出代码各逻辑实体的相关信息,如文件间的引用关系,类之间的泛化关系(继承、实现)、关联关系(组合、聚合及其它关联关系)及依赖关系(参数类型依赖、返回类型依赖、声明变量类型依赖),函数间的调用关系等。本方法解析源码中所有实体间的相关信息,并对全部实体相关信息进行简化处理,进一步提取出云服务程序的文件依赖图。
[0035]3、与传统逆向解析方法相比,本方法采用自底向上与自顶向下相结合的方法,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于云服务源码的多模式架构逆向解析方法,其特征在于,所述方法包括以下步骤:步骤1:获取云服务源码:步骤2:根据解析获取的源代码,提取源码信息,生成源码文件的依赖关系图:步骤3:根据生成的源码文件的依赖关系图,进一步构建模块的关系依赖图:步骤4:根据生成的源码模块的依赖关系图,进一步构建组件的依赖关系图,完成逆向解析。2.根据权利要求1所述的基于云服务源码的多模式架构逆向解析方法,其特征在于,步骤1:获取云服务源码,配置获取云服务器上源码的工具,获取所需要逆向解析项目的源码及相关代码信息。3.根据权利要求2所述的基于云服务源码的多模式架构逆向解析方法,其特征在于,步骤2具体如下:1)编写源码解析器,获取所有源代码文件的抽象语法树;2)根据抽象语法树信息构造源代码工程的程序分析树,分析程序分析树的元素耦合信息,构造树节点间的依赖关系;3)整合程序分析树的元素耦合信息,构造所有源代码文件的依赖关系图。4.根据权利要求3所述的基于云服务源码的多模式架构逆向解析方法,其特征在于,步骤3具体如下:1)进行模块化预处理,依据文件间依赖关系以及目录结构信息,对文件依赖图进行聚合,消除噪音文件,并使聚合的模块的粒度介于文件与目录之间;2)模块化过程:a)经典项目模式的模块化:通过判断两个节点是否存在继承、实现、声明定义,判断两个节点是否存在双向依赖、闭环依赖等规则在文件依赖图...

【专利技术属性】
技术研发人员:李必信曹志成王璐璐廖力孔祥龙周颖
申请(专利权)人:东南大学
类型:发明
国别省市:

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

1