首页> 中国专利> 生成组件依赖关系图的方法和装置

生成组件依赖关系图的方法和装置

摘要

本发明提供了一种生成组件依赖关系图的方法和装置。所述方法包括:读取每一组件对应的字节码信息,根据所述每一组件对应的字节码信息生成组件的依赖关系信息文本;获取选定的组件;在所述依赖关系信息文本记录的组件之间依赖关系中查找得到与所述选定的组件相关的依赖关系;按照所述查找得到的依赖关系渲染生成所述选定的组件对应的组件依赖关系图。所述系统包括:读取模块、选定获取模块、查找模块和渲染模块。采用本发明能提高灵活性。

著录项

  • 公开/公告号CN103810172A

    专利类型发明专利

  • 公开/公告日2014-05-21

    原文格式PDF

  • 申请/专利权人 金蝶软件(中国)有限公司;

    申请/专利号CN201210438593.0

  • 发明设计人 周万宝;

    申请日2012-11-06

  • 分类号G06F17/30(20060101);

  • 代理机构44224 广州华进联合专利商标代理有限公司;

  • 代理人何平

  • 地址 518057 广东省深圳市南山区深南大道市高新技术工业村W1-B4

  • 入库时间 2024-02-20 00:11:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-07-04

    授权

    授权

  • 2014-06-18

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20121106

    实质审查的生效

  • 2014-05-21

    公开

    公开

说明书

技术领域

本发明涉及计算机应用技术,特别是涉及一种生成组件依赖关系图的方法 和装置。

背景技术

随着计算机技术的发展,常常通过各种应用系统来提供较为强大的功能, 以满足用户需求。例如,在基于J2EE(Java 2 Platform,Enterprise Edition,Java2 平台企业版)的这一企业级开发平台部署多个组件所得到的应用系统中,进而 在组件以及若干个组件之间的配合实现相应的功能。为此,应用系统所包括的 多个组件之间将存在着错综复杂的依赖关系。

为了分析应用系统所部署的组件之间的依赖关系,通常会使用一些开源工 具,例如JarAnalyzer这一组件依赖管理工具,能够在组织目录中分析所有的组 件,并生成标识了组件之间的依赖关系的文本文件。

该文本文件由于是以字符的形式来表现组件之间的依赖关系,难以较为清 晰的进行依赖关系的描述,因此,还需要通过图形绘制工具将文本文件中组件 之间的依赖关系描绘成可视化的图形,即组件关系依赖图,例如,图形绘制工 具可以是开源的Graphviz(Graph Visualization Software)工具。

然而,在生成组件关系依赖图的过程中,由于文本文件包含了应用系统中 所有组件之间的依赖关系,因此,通过图形绘制工具所绘制得到的组件关系依 赖图也将包含了所有组件之间的依赖关系,无法仅仅根据用户所关注的组件生 成表现该组件所存在的依赖关系,缺乏灵活性。

发明内容

基于此,有必要针对组件依赖关系图的生成缺乏灵活性的问题,提供一种 能提高灵活性的生成组件依赖关系图的方法。

此外,还有必要提供一种能提高灵活性的生成组件依赖关系图的装置。

一种生成组件依赖关系图的方法,包括如下步骤:

读取每一组件对应的字节码信息,根据所述每一组件对应的字节码信息生 成组件的依赖关系信息文本;

获取选定的组件;

在所述依赖关系信息文本记录的组件之间依赖关系中查找得到与所述选定 的组件相关的依赖关系;

按照所述查找得到的依赖关系渲染生成所述选定的组件对应的组件依赖关 系图。

在其中一个实施例中,所述读取每一组件对应的字节码信息,根据所述每 一组件对应的字节码信息生成组件的依赖关系信息文本的步骤为:

在每一组件中读取包含的字节码文件,并逐一读取所述字节码文件对应的 包名称和所述字节码文件依赖的包名称,形成每一组件对应的字节码信息;

根据每一组件对应的字节码信息记录的字节码文件依赖的包名称得到依赖 的组件,将每一组件与依赖的组件相关得到对应的依赖关系;

通过所述得到的依赖关系生成依赖关系信息文本。

在其中一个实施例中,所述获取选定的组件的步骤为:

根据所述依赖关系信息文本在界面中生成组件列表,并获取所述组件列表 中组件的选定操作得到所述选定的组件。

在其中一个实施例中,所述在所述依赖关系信息文本记录的组件之间依赖 关系中查找得到与所述选定的组件相关的依赖关系的步骤为:

对所述依赖关系信息文本记录的依赖关系进行查找得到与所述选定的组件 相关的依赖关系;

拆分所述依赖关系信息文本得到记录所述查找得到的依赖关系的文本。

在其中一个实施例中,所述按照所述查找得到的依赖关系渲染生成所述选 定的组件对应的组件依赖关系图的步骤之后还包括:

获取组件依赖关系图中选取得到的待钻取的组件;

在所述依赖关系信息文本记录的依赖关系中查找与所述待钻取的组件相关 的依赖关系;

拆分所述依赖关系信息文本得到记录与所述待钻取的组件相关的依赖关系 的文本;

按照所述与所述待钻取的组件相关的依赖关系的文本进行渲染得到待钻取 的组件所属的组件依赖关系图。

一种生成组件依赖关系图的装置,包括:

读取模块,用于读取每一组件对应的字节码信息,根据所述每一组件对应 的字节码信息生成组件的依赖关系信息文本;

选定获取模块,用于获取选定的组件;

查找模块,用于在所述依赖关系信息文本记录的组件之间依赖关系中查找 得到与所述选定的组件相关的依赖关系;

渲染模块,用于按照所述查找得到的依赖关系渲染生成所述选定的组件对 应的组件依赖关系图。

在其中一个实施例中,读取模块包括:

字节码文件处理单元,用于在每一组件中读取包含的字节码文件,并逐一 读取所述字节码文件对应的包名称和所述字节码文件所依赖的包名称,形成每 一组件对应的字节码信息;

关系获取单元,用于根据每一组件对应的字节码信息记录的字节码文件依 赖的包名称得到依赖的组件,将每一组件与依赖的组件相关得到对应的依赖关 系;

文本生成单元,用于通过所述得到的依赖关系生成依赖关系信息文本。

在其中一个实施例中,所述选定获取模块还用于根据所述依赖关系信息文 本在界面中生成组件列表,并获取所述组件列表中组件的选定操作得到所述选 定的组件。

在其中一个实施例中,所述查找模块包括:

关系查找单元,用于对所述依赖关系信息文本记录的依赖关系进行查找得 到与所述选定的组件相关的依赖关系;

拆分单元,用于拆分所述依赖关系信息文本得到记录所述查找得到的依赖 关系的文本。

在其中一个实施例中,所述选定获取模块还用于获取组件依赖关系图中选 取得到的待钻取的组件;

查找模块还用于在所述依赖关系信息文本记录的依赖关系中查找与所述待 钻取的组件相关的依赖关系,并拆分所述依赖关系信息文本得到记录与所述待 钻取的组件相关的依赖关系的文本;

所述渲染模块还用于按照所述与所述待钻取的组件相关的依赖关系的文本 进行渲染得到待钻取的组件所属的组件依赖关系图。

上述生成组件依赖关系图的方法和装置,在通过读取每一组件对应的字节 码信息之后将生成依赖关系信息文本,进而在依赖关系信息文本记录的的依赖 关系中查找与选定的组件相关的依赖关系,时而按照查找得到的依赖关系进行 组件依赖关系图的渲染,由于选定的组件是当前关注的组件,因此渲染得到的 组件依赖关系图将展示当前关注的组件所拥有的所有依赖关系,不再需要从包 含了所有组件的依赖关系的组件依赖关系图中查看当着关注的组件拥有的依赖 关系,提高了灵活性,并且由于仅仅生成与关注的组件相关的、局部的组件依 赖关系图,因此也将大大地节省了生成组件依赖关系图所耗费的时间。

附图说明

图1为一个实施例中生成组件依赖关系图的方法流程图;

图2为图1中读取每一组件对应的字节码信息,根据每一组件对应的字节 码信息生成组件的依赖关系信息文本的方法流程图;

图3为图1中在依赖关系信息文本记录的组件之间依赖关系中查找得到与 选定的组件相关的依赖关系的方法流程图;

图4为另一个实施例中生成组件依赖关系图的方法流程图;

图5为一个实施例中生成组件依赖关系图的装置的结构示意图;

图6为图5中读取模块的结构示意图;

图7为图5中查找模块的结构示意图。

具体实施方式

如图1所示,在一个实施例中,一种生成组件依赖关系图的方法,包括如 下步骤:

步骤S110,读取每一组件对应的字节码信息,根据每一组件对应的字节码 信息生成组件的依赖关系信息文本。

本实施例中,组件是应用系统架构中可复用的功能模块,可通过JAR文件 (Java Archive,Java归档文件)来实现,其中,每一个JAR文件均包含了若干 个字节码文件(Class文件),每一字节码文件是按照Jar包名称存放的,并且每 一字节码文件均有对应的包名称以及该字节码文件所依赖的所有包名称,因此, 组件中每一字节码文件对应的包名称即为该组件对应的包名称,字节码文件所 依赖的所有包名称均为该组件所依赖的组件对应的包名称。

每一组件所对应的字节码信息包括了该组件对应的包名称和依赖的组件所 对应的包名称。根据组件对应的字节码信息即可得到两个组件之间存在的依赖 关系,进而记录于文本文件中形成依赖关系信息文本,例如,在依赖关系信息 文本所记录的依赖关系可以是“组件A→组件B”的形式,用于表示组件A和 组件B之间的依赖关系,其中,组件A为依赖方,组件B为被依赖方。在优选 的实施例中,依赖关系信息文本是使用DOT语言描述的,以方便后续进行图形 化界面的绘制。

步骤S130,获取选定的组件。

本实施例中,通过对组件的选定操作得到当前用户所关注的某一组件,以 方便对该组件的依赖关系进行分析。

在一个实施例中,上述步骤S130的具体过程为:根据依赖关系信息文本在 界面中生成组件列表,并获取组件列表中组件的选定操作得到选定的组件。

本实施例中,根据依赖关系信息文本得到应用系统架构中包含的所有组件 以及组件之间的依赖关系,进而通过列表的形式显示于界面中。用户可通过查 看界面中的组件列表来实现当前关注的组件的选定操作,组件列表中的任一组 件均可进行选取,大大方便了用户进行组件依赖关系的分析,提高了灵活性。

步骤S150,在依赖关系信息文本记录的组件之间依赖关系中查找得到与选 定的组件相关的依赖关系。

本实施例中,对依赖关系信息文本中记录的依赖关系进行查找得到若干个 与选定的组件相关的依赖关系,查找得到的依赖关系中记录的组件必然包含了 选定的组件,但是,选定的组件在查找得到的依赖关系中可以作为依赖方,也 可以作被依赖方。

步骤S170,按照查找得到的依赖关系渲染生成选定的组件对应的组件依赖 关系图。

本实施例中,通过绘制图形的形式将与选定的组件相关的依赖关系清晰的 展现出来,以方便用户查看。进一步的,查找得到的依赖关系是以DOT语言描 述的,由于DOT语言是一种文本图形描述语言,通过开源工具包Graphviz(Graph Visualization Software)绘制DOT语言描述的图形,因此能够非常方便的进行组 件依赖关系图的渲染,所得到的组件依赖关系图将为图像文件存储格式(PNG)。

如图2所示,在一个实施例中,上述步骤S110的具体过程为:

步骤S111,在每一组件中读取包含的字节码文件,并逐一读取字节码文件 对应的包名称和字节码文件依赖的包名称,形成每一组件对应的字节码信息。

本实施例中,逐一对每一组件进行包名称的读取,以得到每一组件所包含 的字节码文件对应的包名称和该字节码文件依赖的包名称,每一组件所包含的 字节码文件对应的包名称和该字节码文件依赖的包名称组成了这一组件的字节 码信息,并缓存组件的字节码信息。

步骤S113,根据每一组件对应的字节码信息记录的字节码文件依赖的包名 称得到依赖的组件,将每一组件与依赖的组件相关得到对应的依赖关系。

本实施例中,从组件对应的字节码信息中记录的字节码文件依赖的包名称 可以得到与该组件存在依赖关系的组件,即对于得到的组件而言,该组件的依 赖关系中也将存在着与选定的组件相关依赖关系。

步骤S115,通过得到的依赖关系生成依赖关系信息文本。

本实施例中,将得到的若干个依赖关系保存为文本的形式,以得到依赖关 系信息文本。

如图3所示,在一个实施例中,上述S150的具体过程为:

步骤S151,对依赖关系信息文本记录的依赖关系进行查找得到与选定的组 件相关的依赖关系。

本实施例中,在依赖关系信息文本中记录的内容进行查找得到与选定的组 件相关的依赖关系,查找得到的依赖关系中记录的两个组件必然有一个是选定 的组件。

步骤S153,拆分依赖关系信息文本得到记录查找得到的依赖关系的文本。

本实施例中,在依赖关系信息文本中排除与选定的组件不相关的依赖关系, 拆分出仅与选定的组件相关的依赖关系,并保存为文本的形式。在优选的实施 例中,在保存的文本中记录的与选定的组件相关的依赖关系也是应用DOT语言 描述的。

如图4所示,在另一个实施例中,上述步骤S170之后还包括:

步骤S210,获取组件依赖关系图中选取得到的待钻取的组件。

本实施例中,在用户查找渲染得到的组件依赖关系图时,也可根据当前的 需求从展示的组件依赖关系图再次进行组件的选取,以进一步请求查看与再次 选取的组件相关的组件依赖关系图,实现组件依赖关系图中任一组件的向上钻 取和向下钻取。

步骤S230,在依赖关系信息文本记录的依赖关系中查找与待钻取的组件相 关的依赖关系。

本实施例中,从保存的依赖关系信息文本中查找得到与待钻取的组件相关 的依赖关系,查找依赖关系的方式与上述与选定的组件相关的依赖关系的查找 方式相同,在此不再赘述。

步骤S250,拆分依赖关系信息文本得到记录与所述待钻取的组件相关的依 赖关系的文本。

本实施例中,根据查找得到的依赖关系,在依赖关系信息文本中排除与查 找得到的依赖关系各不相同的依赖关系,并保存为文本的形式,以拆分得到仅 包含了待钻取的组件相关的依赖关系的文本。

步骤S270,按照与所述待钻取的组件相关的依赖关系的文本进行渲染得到 待钻取的组件所属的组件依赖关系图。

如图5所示,在一个实施例中,一种生成组件依赖关系图的装置,包括读 取模块110、选定获取模块130、查找模块150和渲染模块170。

读取模块110,用于读取每一组件对应的字节码信息,根据每一组件对应的 字节码信息生成组件的依赖关系信息文本。

本实施例中,组件是应用系统架构中可复用的功能模块,可通过JAR文件 来实现,其中,每一个JAR文件均包含了若干个字节码文件(Class文件),每 一字节码文件是按照Jar包名称存放的,并且每一字节码文件均有对应的包名称 以及该字节码文件所依赖的所有包名称,因此,组件中每一字节码文件对应的 包名称即为该组件对应的包名称,字节码文件所依赖的所有包名称均为该组件 所依赖的组件对应的包名称。

每一组件所对应的字节码信息包括了该组件对应的包名称和依赖的组件所 对应的包名称。读取模块110根据组件对应的字节码信息即可得到两个组件之 间存在的依赖关系,进而记录于文本文件中形成依赖关系信息文本,例如,在 依赖关系信息文本所记录的依赖关系可以是“组件A→组件B”的形式,用于表 示组件A和组件B之间的依赖关系,其中,组件A为依赖方,组件B为被依赖 方。在优选的实施例中,依赖关系信息文本是使用DOT语言描述的,以方便后 续进行图形化界面的绘制。

选定获取模块130,用于获取选定的组件。

本实施例中,选定获取模块130通过对组件的选定操作得到当前用户所关 注的某一组件,以方便对该组件的依赖关系进行分析。

在另一个实施例中,上述选定获取模块130还用于根据依赖关系信息文本 在界面中生成组件列表,并获取组件列表中组件的选定操作得到选定的组件。

本实施例中,选定获取模块130根据依赖关系信息文本得到应用系统架构 中包含的所有组件以及组件之间的依赖关系,进而通过列表的形式显示于界面 中。用户可通过查看界面中的组件列表来实现当前关注的组件的选定操作,组 件列表中的任一组件均可进行选取,大大方便了用户进行组件依赖关系的分析, 提高了灵活性。

查找模块150,用于在依赖关系信息文本记录的组件之间依赖关系中查找得 到与选定的组件相关的依赖关系。

本实施例中,查找模块150对依赖关系信息文本中记录的依赖关系进行查 找得到若干个与选定的组件相关的依赖关系,查找得到的依赖关系中记录的组 件必然包含了选定的组件,但是,选定的组件在查找得到的依赖关系中可以作 为依赖方,也可以作被依赖方。

渲染模块170,用于按照查找得到的依赖关系渲染生成选定的组件对应的组 件依赖关系图。

本实施例中,渲染模块170通过绘制图形的形式将与选定的组件相关的依 赖关系清晰的展现出来,以方便用户查看。进一步的,查找得到的依赖关系是 以DOT语言描述的,由于DOT语言是一种文本图形描述语言,通过开源工具 包Graphviz绘制DOT语言描述的图形,因此能够非常方便的进行组件依赖关系 图的渲染,所得到的组件依赖关系图将为图像文件存储格式(PNG)。

如图6所示,在一个实施例中,上述读取模块110包括字节码文件处理单 元111、关系获取单元113和文本生成单元115。

字节码处理单元111,用于在每一组件中读取包含的字节码文件,并逐一读 取字节码文件对应的包名称和字节码文件所依赖的包名称,形成每一组件对应 的字节码信息。

本实施例中,字节码处理单元111逐一对每一组件进行包名称的读取,以 得到每一组件所包含的字节码文件对应的包名称和该字节码文件依赖的包名 称,每一组件所包含的字节码文件对应的包名称和该字节码文件依赖的包名称 组成了这一组件的字节码信息,并缓存组件的字节码信息。

关系获取单元113,用于根据每一组件对应的字节码信息记录字节码文件依 赖的包名称得到依赖的组件,将每一组件与依赖的组件相关得到对应的依赖关 系。

本实施例中,关系获取单元113从组件对应的字节码信息中记录的字节码 文件依赖的包名称可以得到与该组件存在依赖关系的组件,即对于得到的组件 而言,该组件的依赖关系中也将存在着与选定的组件相关依赖关系。

文本生成单元115,用于通过得到的依赖关系生成依赖关系信息文本。

本实施例中,文本生成单元115将得到的若干个依赖关系保存为文本的形 式,以得到依赖关系信息文本。

如图7所示,在一个实施例中,上述查找模块150包括关系查找单元151 和拆分单元153。

关系查找单元151,用于对依赖关系信息文本记录的依赖关系进行查找得到 与选定的组件相关的依赖关系。

本实施例中,关系查找单元151在依赖关系信息文本中记录的内容进行查 找得到与选定的组件相关的依赖关系,查找得到的依赖关系中记录的两个组件 必然有一个是选定的组件。

拆分单元153,用于拆分依赖关系信息文本得到记录查找得到的依赖关系的 文本。

本实施例中,拆分单元153在依赖关系信息文本中排除与选定的组件不相 关的依赖关系,拆分出仅与选定的组件相关的依赖关系,并保存为文本的形式。 在优选的实施例中,在保存的文本中记录的与选定的组件相关的依赖关系也是 应用DOT语言描述的。

在另一个实施例中,上述生成组件依赖关系图的装置中,上述选定获取模 块130还用于获取组件依赖关系图中选取得到的待钻取的组件。

本实施例中,在用户查找渲染得到的组件依赖关系图时,也可根据当前的 需求从展示的组件依赖关系图再次进行组件的选取,以进一步请求查看与再次 选取的组件相关的组件依赖关系图,实现组件依赖关系图中任一组件的向上钻 取和向下钻取。

上述查找模块150还用于在依赖关系信息文本记录的依赖关系中查找与待 钻取的组件相关的依赖关系,并拆分依赖关系信息文本得到记录与待钻取的组 件相关的依赖关系的文本。

本实施例中,查找模块150从保存的依赖关系信息文本中查找得到与待钻 取的组件相关的依赖关系,查找依赖关系的方式与上述与选定的组件相关的依 赖关系的查找方式相同,在此不再赘述。

查找模块150根据查找得到的依赖关系,在依赖关系信息文本中排除与查 找得到的依赖关系各不相同的依赖关系,并保存为文本的形式,以拆分得到仅 包含了待钻取的组件相关的依赖关系的文本。

上述渲染模块170还用于按照与待钻取的组件相关的依赖关系的文本进行 渲染得到待钻取的组件所属的组件依赖关系图。

上述生成组件依赖关系图的方法和装置,在通过读取每一组件对应的字节 码信息之后将生成依赖关系信息文本,进而在依赖关系信息文本记录的的依赖 关系中查找与选定的组件相关的依赖关系,时而按照查找得到的依赖关系进行 组件依赖关系图的渲染,由于选定的组件是当前关注的组件,因此渲染得到的 组件依赖关系图将展示当前关注的组件所拥有的所有依赖关系,不再需要从包 含了所有组件的依赖关系的组件依赖关系图中查看当着关注的组件拥有的依赖 关系,提高了灵活性,并且由于仅仅生成与关注的组件相关的、局部的组件依 赖关系图,因此也将大大地节省了生成组件依赖关系图所耗费的时间。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算 机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。 其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域 的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和 改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附 权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号