CN111831317A - 服务间依赖关系的获取方法、装置、电子设备和存储介质 - Google Patents

服务间依赖关系的获取方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN111831317A
CN111831317A CN202010490964.4A CN202010490964A CN111831317A CN 111831317 A CN111831317 A CN 111831317A CN 202010490964 A CN202010490964 A CN 202010490964A CN 111831317 A CN111831317 A CN 111831317A
Authority
CN
China
Prior art keywords
service
dependency relationship
dependency
services
acquiring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010490964.4A
Other languages
English (en)
Other versions
CN111831317B (zh
Inventor
殷岂龙
王远振
米银霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010490964.4A priority Critical patent/CN111831317B/zh
Publication of CN111831317A publication Critical patent/CN111831317A/zh
Application granted granted Critical
Publication of CN111831317B publication Critical patent/CN111831317B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了服务间依赖关系的获取方法、装置、电子设备和存储介质,涉及服务间依赖关系分析技术领域。具体实现方案为:获取软件系统之中的多个服务,多个服务分布于多个业务单元之中;获取每个业务单元的第一正向依赖关系;以及根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系。该方法能够精确而全面地分析出软件系统中多个业务单元及其之间的服务依赖关系,以辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。

Description

服务间依赖关系的获取方法、装置、电子设备和存储介质
技术领域
本申请涉及数据分析技术领域,具体涉及服务间依赖关系分析技术领域,尤其涉及一种服务间依赖关系的获取方法、装置、电子设备和存储介质。
背景技术
目前,软件系统可包括多个功能模块,且每个功能模块中往往包含多个服务,服务之间可能存在依赖关系,甚至部分服务存在跨模块的服务依赖关系。目前业内已有的服务依赖关系分析工具可分为两种,即静态代码分析工具和程序动态分析工具。
但是上述两种分析工具均不支持跨模块的服务依赖关系分析,这就导致当软件系统进行代码重构、服务升级等工作时,由于无法获取跨模块的服务之间的依赖关系,导致不能精准评估此次代码变更可能会影响到的相关模块。
发明内容
提供了一种服务间依赖关系的获取方法、装置、电子设备和存储介质,用于解决相关技术中通过静态代码分析工具、程序动态分析工具等实现软件系统中的服务依赖关系分析,无法获取跨模块的服务之间的依赖关系,导致研发、运维及测试人员无法制定完善而精准的变更测试方案和系统减负方案的技术问题。
根据第一方面,提供了一种服务间依赖关系的获取方法,包括:
获取软件系统之中的多个服务,其中,所述多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,所述第一类服务依赖于所属业务单元内的服务,所述第二类服务依赖于其他业务单元内的服务;
获取每个业务单元的第一正向依赖关系,其中,所述第一正向依赖关系包括所述业务单元内第一类服务之间的正向依赖关系以及所述业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系;以及
根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,其中,所述第二正向依赖关系包括所述每个业务单元内的第二类服务与所依赖的所述其他业务单元内的服务之间的正向依赖关系;
其中,所述正向依赖表示所述服务需要依赖于另一服务实现。
本申请实施例的服务间依赖关系的获取方法,首先获取软件系统之中的多个服务,并获取每个业务单元的第一正向依赖关系,然后根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系。由此,能够精确而全面地分析出软件系统中多个业务单元及其之间的服务依赖关系,以辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
根据第二方面,提供了一种服务的依赖关系图的生成方法,包括:
获取软件系统之中的多个服务,其中,所述多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,所述第一类服务依赖于所属业务单元内的服务,所述第二类服务依赖于其他业务单元内的服务;
获取所述业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,其中,所述第一正向依赖关系包括所述业务单元内第一类服务之间的正向依赖关系以及所述业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系,所述第二正向依赖关系包括所述每个业务单元内的第二类服务与所依赖的所述其他业务单元内的服务之间的正向依赖关系;以及
根据所述第一正向依赖关系和所述第二正向依赖关系,生成服务的依赖关系图,其中,所述服务为所述依赖关系图之中的第一类节点,所述第一类节点之间的连接线根据所述第一正向依赖关系和所述第二正向依赖关系生成。
本申请实施例的服务的依赖关系图的生成方法,首先获取软件系统之中的多个服务,然后获取业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,最后根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图,其中,服务为依赖关系图之中的第一类节点,第一类节点之间的连接线根据第一正向依赖关系和第二正向依赖关系生成。由此,生成的服务的依赖关系图,能够能直观清晰地展示出软件系统中多个业务单元及其之间的服务依赖关系,从而方便辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
根据第三方面,提供了一种服务间依赖关系的获取装置,包括:
第一获取模块,用于获取软件系统之中的多个服务,其中,所述多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,所述第一类服务依赖于所属业务单元内的服务,所述第二类服务依赖于其他业务单元内的服务;
第二获取模块,用于获取每个业务单元的第一正向依赖关系,其中,所述第一正向依赖关系包括所述业务单元内第一类服务之间的正向依赖关系以及所述业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系;以及
第三获取模块,用于根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,其中,所述第二正向依赖关系包括所述每个业务单元内的第二类服务与所依赖的所述其他业务单元内的服务之间的正向依赖关系;
其中,所述正向依赖表示所述服务需要依赖于另一服务实现。
本申请实施例的服务间依赖关系的获取装置,通过第一获取模块获取软件系统之中的多个服务,并通过第二获取模块获取每个业务单元的第一正向依赖关系,以及通过第三获取模块根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关。由此,能够精确而全面地分析出软件系统中多个业务单元及其之间的服务依赖关系,以辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
根据第四方面,提供了一种服务的依赖关系图的生成装置,包括:
第一获取模块,用于获取软件系统之中的多个服务,其中,所述多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,所述第一类服务依赖于所属业务单元内的服务,所述第二类服务依赖于其他业务单元内的服务;
第二获取模块,用于获取所述业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,其中,所述第一正向依赖关系包括所述业务单元内第一类服务之间的正向依赖关系以及所述业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系,所述第二正向依赖关系包括所述每个业务单元内的第二类服务与所依赖的所述其他业务单元内的服务之间的正向依赖关系;以及
第一生成模块,用于根据所述第一正向依赖关系和所述第二正向依赖关系,生成服务的依赖关系图,其中,所述服务为所述依赖关系图之中的第一类节点,所述第一类节点之间的连接线根据所述第一正向依赖关系和所述第二正向依赖关系生成。
本申请实施例的服务的依赖关系图的生成装置,通过第一获取模块获取软件系统之中的多个服务,并通过第二获取模块获取业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,以及通过第一生成模块根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图,其中,服务为依赖关系图之中的第一类节点,第一类节点之间的连接线根据第一正向依赖关系和第二正向依赖关系生成。由此,生成的服务的依赖关系图,能够能直观清晰地展示出软件系统中多个业务单元及其之间的服务依赖关系,从而方便辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
根据第五方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述一方面实施例所述的服务间依赖关系的获取方法。
根据第六方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述一方面实施例所述的服务的依赖关系图的生成方法。
根据第七方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其上存储有计算机程序,所述计算机指令用于使所述计算机执行上述一方面实施例所述的服务间依赖关系的获取方法。
根据第八方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其上存储有计算机程序,所述计算机指令用于使所述计算机执行上述一方面实施例所述的服务的依赖关系图的生成方法。
根据本申请的技术,能够精确而全面地分析出软件系统中多个业务单元及其之间的服务依赖关系,以辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例所涉及的一种实施环境的示意图;
图2是本申请实施例提供的一种服务间依赖关系的获取方法的流程示意图;
图3(a)是本申请实施例提供的服务间直接依赖关系的示意图;
图3(b)是本申请实施例提供的服务间间接依赖关系的示意图;
图4是本申请实施例提供的另一种服务间依赖关系的获取方法的流程示意图;
图5是本申请实施例提供的又一种服务间依赖关系的获取方法的流程示意图;
图6是本申请实施例提供的一种服务的依赖关系图的生成方法的流程示意图;
图7是本申请实施例提供的另一种服务的依赖关系图的生成方法的流程示意图;
图8是本申请实施例提供的又一种服务的依赖关系图的生成方法的流程示意图;
图9是本申请实施例提供的跨业务单元服务正逆向依赖关系树的示意图;
图10是本申请实施例提供的一种服务间依赖关系的获取装置的方框示意图;
图11是本申请实施例提供的另一种服务间依赖关系的获取装置的方框示意图;
图12是本申请实施例提供的又一种服务间依赖关系的获取装置的方框示意图;
图13是本申请实施例提供的还一种服务间依赖关系的获取装置的方框示意图;
图14是本申请实施例提供的一种服务的依赖关系图的生成装置的方框示意图;
图15是本申请实施例提供的另一种服务的依赖关系图的生成装置的方框示意图;
图16是本申请实施例提供的又一种服务的依赖关系图的生成装置的方框示意图;
图17是本申请实施例提供的还一种服务的依赖关系图的生成装置的方框示意图;
图18是本申请实施例提供的再一种服务的依赖关系图的生成装置的方框示意图;以及
图19是根据本申请实施例的服务间依赖关系的获取方法或服务的依赖关系图的生成方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面参考附图描述本申请实施例的服务间依赖关系的获取方法、装置、电子设备和存储介质,以及服务的依赖关系图的生成方法、装置、电子设备和存储介质。
本申请实施例,针对相关技术中,实现软件系统中的服务依赖关系分析,无法获取跨模块的服务之间的依赖关系,导致研发、运维及测试人员无法制定完善而精准的变更测试方案和系统减负方案的技术问题,提出一种服务间依赖关系的获取方法。
需要说明的是,该实施例中所描述的相关技术可包括目前业内主流的代码分析工具,然而这些代码分析工具均不支持跨模块的服务依赖关系分析,多是通过静态代码扫描或程序动态分析的方式,进行服务内部依赖关系的分析;同时,此类工具只支持服务的正向依赖关系分析,以PHP为例,静态代码分析工具,如PHP-Stan、PHP-Parser等,程序动态分析工具,如PhpTrace、百度华佗平台等,简要分析如下:
①、PHP-Stan和PHP-Parse,仅支持单一模块内部的服务正向依赖分析,同时,分析过程中,还需要在原代码的基础上引入新的代码,源代码做改动,这样的方式成本较高。除此之外,此类工具使用成本较高,接入到集成流水线中,有一定的难度。
②、phpTrace和百度华佗,仅支持模块内部的服务的正向依赖分析;同时,在进行全量分析代码的依赖关系分析时,需要执行代码,当部分代码无法被执行到时,服务依赖关系也将有所缺失。这种工具的优势在于单次调试、进行问题定位,但针对全量代码服务依赖关系分析时,是不适用的。
本申请实施例的服务间依赖关系的获取方法,先获取软件系统之中的多个服务,并获取每个业务单元的第一正向依赖关系,以及根据所述业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,解决了上述相关技术中的部分问题。
本申请实施例提供的服务间依赖关系的获取方法,可以由电子设备来执行,该电子设备可为PC(Personal Computer,个人计算机)电脑、平板电脑或掌上电脑等,此处不做任何限定。
在本申请实施例中,电子设备中可以设置有处理组件、存储组件和驱动组件。可选的,该驱动组件和处理组件可以集成设置,该存储组件可以存储操作系统、应用程序或其他程序模块,该处理组件通过执行存储组件中存储的应用程序来实现本申请实施例提供的服务间依赖关系的获取方法。
其中,本申请实施例提供的服务间依赖关系的获取方法中的服务可为软件系统之中的服务。因此,电子设备需要先获取该软件系统的代码,其中,该软件系统的代码可存储在云端服务器(例如,云端代码管理服务器)中。
在本申请实施例中,电子设备可通过本地代码库获取软件系统的代码,其中,该本地代码库可设置在相关人员的电子设备中,相关人员可通过操作电子设备直接调用内部存储(即,本地代码库存储)的软件系统的代码。
具体地,参见图1,图1是本申请实施例所涉及的一种实施环境的示意图,该实施环境包括:本地数据库10、电子设备1002和云端服务器1001,其中,本地数据库10设置在电子设备1002中,电子设备1002和云端服务器1001之间建立有通信连接,该通信连接可以是无线网络连接和有线网络连接的至少一种。其中,无线网络连接例如可以为采用移动通信网络、紫峰(Zigbee)或者无线保真(Wireless Fidelity,WIFI)等方式进行的通信连接。有线网络连接例如可以为采用双绞线、同轴电缆、光纤、网线或者数据线(如USB、IEEE1394、串口或并口等)等方式进行的通信连接。
其中,相关人员(例如,研发、运维或测试人员)可通过电子设备1002打开的登录云端服务器1001的界面,并输入相关的用户名和密码以登录云端服务器1001,并从中查找上述的软件系统的代码(即,待分析的代码),以及将其下载到本地数据库10,以便电子设备能够随时调用。
在本申请其他实施例中,本地代码库还可设置在本地的服务器中,相关人员通过各自的电子设备连接本地的服务器获取本地代码库中的软件系统的代码。
图2是本申请实施例提供的一种服务间依赖关系的获取方法的流程示意图。
本申请实施例的服务间依赖关系的获取方法,可由本申请实施例提供的服务间依赖关系的获取装置执行,该装置可配置于电子设备中,以实现获取软件系统之中的多个服务,并获取每个业务单元的第一正向依赖关系,以及根据所述业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系。
如图2所示,该服务间依赖关系的获取方法可以包括以下步骤:
步骤201,获取软件系统之中的多个服务,其中,多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,第一类服务依赖于所属业务单元内的服务,第二类服务依赖于其他业务单元内的服务。
需要说明的是,该实施例中所描述的多个业务单元,可为软件系统中的各个业务模块,若软件系统为办公自动化(Office Automation,简称OA)系统,则多个业务单元可包括办公用品管理模块、人事管理模块、公用酒水管理模块、资料管理模块和财务管理模块等。
进一步而言,在软件系统的各种组件之间,尤其是类、包、业务单元以及服务之间都可能存在依赖关系。其中,依赖关系可包括直接依赖关系和间接依赖关系,如图3(a)所示,服务1依赖于服务2这种直接依赖最容易识别和管理;间接依赖即直接依赖关系的衍生,如图3(b)所示,当服务1依赖服务2,而服务2又依赖服务3时,服务1就与服务3发生了间接依赖关系。其中,服务可以是类中的方法,为了实现该方法,该方法可以调用该方法所在模块内的其他方法,或调用其他模块内的方法。其中,方法中可包括多个接口和函数,且每个接口中也可包含多个函数。
在本申请实施例中,电子设备从内置的本地代码库中调出软件系统的代码,并对其进行相关的部署,以便于获取该软件系统之中的多个服务。
步骤202,获取每个业务单元的第一正向依赖关系,其中,第一正向依赖关系包括业务单元内第一类服务之间的正向依赖关系以及业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系。
需要说明的是,该实施例中所描述的正向依赖可表示服务需要依赖于另一服务实现,例如图3(a)所示的服务1依赖于服务2。下面举例说明上述的第一正向依赖关系:
假设,A业务单元中包括A1、A2、A3、A4和A5服务,B业务单元中包括B1、B2和B3服务,则A业务单元的第一正向依赖关系可包括A1~A5服务之间的正向依赖关系,以及A1~A5服务与B1、B2和B3服务之间的正向依赖关系,其中,若A1与B1之间存在的正向依赖关系,但是后面B1服务调用了B业务单元中的B2,则本申请只需得到跨业务单元直接依赖的B1服务,无需继续往下进行分析。
具体地,电子设备在获取到软件系统之中的多个服务之后,可对多个服务进行筛选和分析以确定软件系统之中每个业务单元中所包含的服务。然后电子设备通过内置的代码静态分析组件,来分析每个业务单元中服务的正向依赖关系以获取每个业务单元的第一正向依赖关系。其中,代码静态分析组件可提供代码语法分析能力。
步骤203,根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,其中,第二正向依赖关系包括每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间的正向依赖关系。
需要说明的是,该实施例中的所描述的每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间的正向依赖关系可为每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间直接和/或间接的正向依赖关系。下面举例说明上述的第二正向依赖关系:
假设,软件系统之中的A业务单元中包括A1、A2和A3服务,B业务单元中包括B1、B2和B3服务,C业务单元中包括C1、C2和C3服务,则跨业务单元的服务间的第二正向依赖关系可包括A业务单元的第二正向依赖关系、B业务单元的第二正向依赖关系和C业务单元的第二正向依赖关系,其中,A业务单元的第二正向依赖关系可包括A1服务正向依赖B1服务、B1服务正向依赖B2服务、B1服务正向依赖C1服务、C1服务正向依赖C2服务和B2服务正向依赖B3服务等。
具体地,电子设备在获取到每个业务单元的第一正向依赖关系后,可将每个业务单元的第一正向依赖关系进行存储,然后对全部第一正向依赖关系进行分析,以获取每个第一正向依赖关系中的第二类服务与跨业务单元直接依赖的依赖服务之间的正向依赖关系,再然后将该依赖服务之间的正向依赖关系进行服务间的递归调用分析,以获取跨业务单元的服务间的第二正向依赖关系。由此,可以生成软件系统中所有服务间的正向依赖关系,从而方便进行服务间依赖关系分析。
在本申请实施例中,首先获取软件系统之中的多个服务,并获取每个业务单元的第一正向依赖关系,然后根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系。由此,能够精确而全面地分析出软件系统中多个业务单元及其之间的服务依赖关系,以辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
为了清楚说明上一实施例,在本申请的一个实施例中,获取每个业务单元的第一正向依赖关系之前,可还包括获取多个服务所属的业务单元,生成多个服务与多个业务单元之间的属性关系。应说明的是,该实施例中所描述的属性关系指的是,服务隶属于某个业务单元,以办公自动化系统为例,请假服务、外出服务和出差服务等隶属于人事管理业务单元;资料填报服务、资料查询服务等隶属于资料管理业务单元。
具体地,电子设备从内置的本地代码库中调出软件系统的代码,并对其进行相关的部署,以获取该软件系统之中的多个服务以及多个服务所属的业务单元,并生成多个服务与多个业务单元之间的属性关系。然后电子设备可根据该属性关系对多个服务进行筛选和分析以确定软件系统之中每个业务单元中所包含的服务。由此,可以精确的分别出每个业务单元中所包含的服务。
为了清楚说明上一实施例,在本申请的一个实施例中,获取每个业务单元的第一正向依赖关系,可包括获取业务单元内每个服务的接口,并对每个服务的接口进行递归分析,生成业务单元的第一正向依赖关系。其中,每个服务可包括多个接口。
具体地,电子设备在获取到软件系统之中的多个服务之后,可对多个服务进行筛选和分析以确定软件系统之中每个业务单元中所包含的服务,然后分别对每个业务单元中所包含的服务所对应的代码进行分析,以获取每个业务单元内每个服务的接口,并分别对每个业务单元内每个服务的接口进行递归分析,以分别生成每个业务单元的第一正向依赖关系。由此,利用服务内的接口进行依赖关系的分析,可以提高依赖关系分析的精确度。
在本申请的一个实施例中,获取服务的接口,可包括根据服务的标识信息,获取服务对应的代码数据存储路径,以及根据存储路径,获取代码数据,并对代码数据进行扫描,获取服务的接口,其中,服务的标识信息可包括服务的名称。应说明的是,在系统代码的撰写阶段,程序员在编程的过程中,可部署服务的名称与服务的代码数据存储路径之间的映射关系,以便后续的调用,也有利于后期的代码测试。另外,程序员在编程的过程中,还会在每个服务的旁边增加注解以便于后期的维护,以及增加代码的可读性。
具体地,电子设备在获取到软件系统之中的多个服务之后,可对多个服务进行筛选和分析以确定软件系统之中每个业务单元中所包含的服务,并获取每个业务单元内每个服务的名称,并根据服务的名称的映射关系,获取服务对应的代码数据存储路径。然后电子设备根据存储路径,获取代码数据,并对代码数据进行扫描以获取服务的接口,从而为后续分析服务的依赖关系提供数据支撑,并且接口在代码中的覆盖范围较广,能够使服务间的依赖关系的分析更加的全面。
为了进一步清楚说明上一实施例,如图4所示,对每个服务的接口进行递归分析,生成业务单元的第一正向依赖关系,可包括以下步骤:
步骤401,获取每个接口的调用函数,对调用函数进行递归分析,获取当前分析的第一服务所依赖的第二服务。
需要说明的是,该实施例中所描述的接口可包括多个调用函数,多个调用函数可为该接口所在业务单元中的函数,也可为其它业务单元中的函数。其中,函数分为全局函数、全局静态函数,在类中还可以定义构造函数、析构函数、拷贝构造函数、成员函数、友元函数、运算符重载函数和内联函数等。
在本申请实施例中,对调用函数进行递归分析的过程中,接口跨业务单元调用函数,可只分析到直接调用关系,即接口跨业务单元的调用函数不会递归分析到底。
步骤402,获取第一服务和第二服务所属的业务单元,识别第二服务所属的业务单元与第一服务所属的业务单元不同,停止递归。应说明的是,若识别出第二服务所属的业务单元与第一服务所属的业务单元不同,则说明第一服务接口跨业务单元依赖的第二服务,即第一服务中的接口跨业务单元调用第二服务中的函数。
步骤403,利用业务单元内每个服务的递归分析结果生成第一正向依赖关系。
具体地,电子设备在获取到业务单元内每个服务的接口后,可对每个服务的接口进行遍历(例如,通过for循环、foreach循环或forin循环遍历接口),以获取每个接口的调用函数。然后电子设备调用代码静态分析组件递归分析每个接口的调用函数,获取当前分析的第一服务所依赖的第二服务,并判断第二服务所属的业务单元与第一服务所属的业务单元是否相同,若不同,则当前分析的接口的调用函数的递归停止;若相同,则当前分析的接口的调用函数的递归继续,直至完成当前分析的接口的调用函数的递归分析。最后电子设备可在业务单元内每个服务的递归分析结束后,利用业务单元内每个服务的递归分析结果生成第一正向依赖关系。由此,进一步提高了依赖关系分析的精确度,另外,由于函数相对于接口在代码中的覆盖范围更广,所以能够进一步提高服务间依赖关系的分析的全面性。
进一步地,为了为后续分析服务间跨业务单元的正向依赖关系提供数据支撑,同时方便相关人员后续的查看,电子设备在获取到软件系统之中每个业务单元的第一正向依赖关系之后,可将每个业务单元的第一正向依赖关系及其相关的信息存储在服务内部依赖关系库中,以及将每个业务单元内每个服务的接口及其相关的信息存储在服务接口库中。其中,服务内部依赖关系库和服务接口库均可设置在电子设备的存储空间中,该存储空间不仅限于基于实体的存储空间,例如,硬盘,上述存储空间还可以是连接电子设备的网络硬盘的存储空间(云存储空间)。
为了清楚说明图2所示的实施例,在本申请的一个实施例中,如图5所示,根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,包括以下步骤:
步骤501,针对第二类服务,获取第二类服务的依赖服务所属的业务单元,其中,第二类服务依赖于其他业务单元内的服务。
在本申请的一个实施例中,获取第二类服务的依赖服务所属的业务单元,可包括获取第二类服务的标识信息,根据标识信息获取第二类服务的接口,根据接口获取第二类服务的依赖服务。
具体地,电子设备可从内置的服务内部依赖关系库中,直接调出第二类服务的信息以获取第二类服务的标识信息,并依据第二类服务的标识信息检索内置的服务接口库,以获取第二类服务的接口。然后电子设备可对第二类服务的接口进行遍历(例如,通过for循环、foreach循环或forin循环遍历接口),以获取每个接口的调用函数,并调用代码静态分析组件递归分析每个接口的调用函数。最后电子设备可在第二类服务的接口的调用函数的递归分析结束后,利用第二类服务的接口的调用函数的递归分析结果生成第二类服务的依赖服务。由此,可以得到第二类服务直接和/或间接依赖于其他业务单元内的服务,为后续分析服务间跨业务单元的正向依赖关系提供数据支撑,同时可以使服务间跨业务单元的依赖关系分析的更深入和全面。
步骤502,对依赖服务所属的业务单元的第一正向依赖关系进行递归,获取第二类服务对应的跨业务单元的正向依赖关系。
步骤503,利用所有的第二类服务对应的跨业务的正向依赖关系,生成跨业务单元的服务间的第二正向依赖关系。
具体地,电子设备在获取到第二类服务的依赖服务后,可从内置的服务内部依赖关系库中获取该依赖服务所属的业务单元的第一正向依赖关系,并将这些第一正向依赖关系进行服务间的递归调用分析,从而生成第二类服务对应的跨业务单元的正向依赖关系,以及利用所有的第二类服务对应的跨业务的正向依赖关系,生成跨业务单元的服务间的第二正向依赖关系。由此,能够实现跨业务的服务依赖关系分析,可以更好的辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
进一步地,为了后续方便调用跨业务单元的服务间的第二正向依赖关系,同时方便相关人员后续的查看,电子设备获取到软件系统之中跨业务单元的服务间的第二正向依赖关系后,可将跨业务单元的服务间的第二正向依赖关系及其相关的信息存储在服务间依赖关系库中。其中,服务间依赖关系库可设置在电子设备的存储空间中。
为了实现业务单元内服务之间的逆向依赖关系的分析,在本申请的一个实施例中,获取每个业务单元的第一正向依赖关系之后,还可包括对第一正向依赖关系进行逆向递归,获取业务单元内服务之间的第一逆向依赖关系,其中,逆向依赖表示另一服务的实现需要依赖服务。
具体地,电子设备在获取到软件系统中每个业务单元的第一正向依赖关系之后,还可对第一正向依赖关系进行逆向递归,以获取业务单元内服务之间的第一逆向依赖关系,从而实现业务单元内服务之间的逆向依赖关系的分析,有利于准确、全面的评估变更测试方案、系统减负等带来的风险。
进一步地,电子设备在获取到业务单元内服务之间的第一逆向依赖关系后,还可将第一逆向依赖关系及其相关的信息存储在服务内部逆向依赖关系库中,从而方便后续相关人员的调用与查看。其中,服务内部逆向依赖关系库可设置在电子设备的存储空间中。
为了实现跨业务单元的服务间的逆向依赖关系的分析,在本申请的一个实施例中,获取跨业务单元的服务间的第二正向依赖关系之后,还可包括对第二正向依赖关系进行逆向递归,获取跨业务单元的服务间的第二逆向依赖关系。
具体地,电子设备在获取到软件系统中跨业务单元的服务间的第二正向依赖关系之后,还可对第二正向依赖关系进行逆向递归,以获取跨业务单元的服务间的第二逆向依赖关系,从而实现跨业务单元的服务间的逆向依赖关系的分析,更有利于准确、全面的评估变更测试方案、系统减负等带来的风险。
进一步地,电子设备在获取到跨业务单元的服务间的第二逆向依赖关系之后,还可将该第二逆向依赖关系及其相关的信息存储在服务间逆向依赖关系库中,从而方便后续相关人员的调用与查看。其中,服务间逆向依赖关系库可设置在电子设备的存储空间中。
本申请实施例,针对相关技术中,不能直观清晰的将软件系统之中的依赖关系准确且全面的展示给相关人员的技术问题,提出一种服务的依赖关系图的生成方法。
本申请实施例的服务的依赖关系图的生成方法,根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图,解决了上述相关技术中的问题,同时方便相关人员操作。
图6是本申请实施例提供的一种服务的依赖关系图的生成方法的流程示意图。在本申请实施例中,上述的服务的依赖关系图的生成方法可由预设的图形数据呈现软件执行,其中,预设的图形数据呈现软件可为Neo4j图形数据库。
本申请实施例的服务的依赖关系图的生成方法,还可由本申请实施例提供的服务的依赖关系图的生成装置执行,该装置可配置于电子设备中,以实现根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图。
如图6所示,该服务的依赖关系图的生成方法可以包括以下步骤:
步骤601,获取软件系统之中的多个服务,其中,多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,第一类服务依赖于所属业务单元内的服务,第二类服务依赖于其他业务单元内的服务。
需要说明的是,该实施例中所描述的多个业务单元,可为软件系统中的各个业务模块,若软件系统为办公自动化(Office Automation,简称OA)系统,则多个业务单元可包括办公用品管理模块、人事管理模块、公用酒水管理模块、资料管理模块和财务管理模块等。
进一步而言,在软件系统的各种组件之间,尤其是类、包、业务单元以及服务之间都可能存在依赖关系。其中,依赖关系可包括直接依赖关系和间接依赖关系,如图3(a)所示,服务1依赖于服务2这种直接依赖最容易识别和管理;间接依赖即直接依赖关系的衍生,如图3(b)所示,当服务1依赖服务2,而服务2又依赖服务3时,服务1就与服务3发生了间接依赖关系。其中,服务可以是类中的方法,为了实现该方法,该方法可以调用该方法所在模块内的其他方法,或调用其他模块内的方法。其中,方法中可包括多个接口和函数,且每个接口中也可包含多个函数。
在本申请实施例中,电子设备从内置的本地代码库中调出软件系统的代码,并对其进行相关的部署,以便于获取该软件系统之中的多个服务。
步骤602,获取业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,其中,第一正向依赖关系包括业务单元内第一类服务之间的正向依赖关系以及业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系,第二正向依赖关系包括每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间的正向依赖关系。
需要说明的是,该实施例中所描述的正向依赖可表示服务需要依赖于另一服务实现,例如图3(a)所示的服务1依赖于服务2。下面举例说明上述的第一正向依赖关系:
假设,A业务单元中包括A1、A2、A3、A4和A5服务,B业务单元中包括B1、B2和B3服务,则A业务单元的第一正向依赖关系可包括A1~A5服务之间的正向依赖关系,以及A1~A5服务与B1、B2和B3服务之间的正向依赖关系,其中,若A1与B1之间存在的正向依赖关系,但是后面B1服务调用了B业务单元中的B2,则本申请只需得到跨业务单元直接依赖的B1服务。
在本申请实施例中,每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间的正向依赖关系可为每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间直接和/或间接的正向依赖关系。下面举例说明上述的第二正向依赖关系:
假设,软件系统之中的A业务单元中包括A1、A2和A3服务,B业务单元中包括B1、B2和B3服务,C业务单元中包括C1、C2和C3服务,则跨业务单元的服务间的第二正向依赖关系可包括A业务单元的第二正向依赖关系、B业务单元的第二正向依赖关系和C业务单元的第二正向依赖关系,其中,A业务单元的第二正向依赖关系可包括A1服务正向依赖B1服务、B1服务正向依赖B2服务、B1服务正向依赖C1服务、C1服务正向依赖C2服务和B2服务正向依赖B3服务等。
具体地,电子设备可通过上述的服务间依赖关系的获取方法,可将获取到的业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系分别存储在服务内部依赖关系库和服务间依赖关系库中。当需要获取业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系时,电子设备可直接从内置的服务内部依赖关系库和服务间依赖关系库中,调出业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系及其相关的信息。
步骤603,根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图,其中,服务为依赖关系图之中的第一类节点,第一类节点之间的连接线根据第一正向依赖关系和第二正向依赖关系生成。例如,图9所示的,服务1、服务2和服务3,及它们之间的连接线。
具体地,电子设备在获取到业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系及其相关的信息之后,可将该第一正向依赖关系和该第二正向依赖关系通过预设的输入条件,输入进预设的图形数据呈现软件,以通过预设的图形数据呈现软件生成服务的依赖关系图,并将其直观清晰地展示给相关人员。例如,将该第一正向依赖关系和该第二正向依赖关系通过预设的输入条件,输入Neo4j图形数据库以生成服务的依赖关系图,而后通过Neo4j数据浏览器快速展现服务的依赖关系图,以使相关人员能够直观清晰地看到服务的依赖关系。
在本申请实施例中,首先获取软件系统之中的多个服务,然后获取业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,最后根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图,其中,服务为依赖关系图之中的第一类节点,第一类节点之间的连接线根据第一正向依赖关系和第二正向依赖关系生成。由此,生成的服务的依赖关系图,能够能直观清晰地展示出软件系统中多个业务单元及其之间的服务依赖关系,从而方便辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
另外,为了防止电子设备内置的服务内部依赖关系库和服务间依赖关系库中,没有存储业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,在本申请实施例中,电子设备在获取到软件系统之中的多个服务之后,可对多个服务进行筛选和分析以确定软件系统之中每个业务单元中所包含的服务。然后电子设备通过内置的代码静态分析组件,来分析每个业务单元中服务的正向依赖关系以获取每个业务单元的第一正向依赖关系。其中,代码静态分析组件可提供代码语法分析能力。
电子设备在获取到每个业务单元的第一正向依赖关系后,可对全部第一正向依赖关系进行分析,以获取每个第一正向依赖关系中的第二类服务与跨业务单元直接依赖的依赖服务之间的正向依赖关系,再然后将依赖服务之间的正向依赖关系进行服务间的递归调用分析,以获取跨业务单元的服务间的第二正向依赖关系。由此,可以生成软件系统中所有服务间的正向依赖关系。
为了准确且全面的展示服务的依赖关系,在本申请的一个实施例中,如图7所示,该依赖关系图的生成方法还可包括以下步骤:
步骤701,获取多个服务与多个业务单元之间的属性关系。应说明的是,该实施例中所描述的属性关系指的是,服务隶属于某个业务单元,以办公自动化系统为例,请假服务、外出服务和出差服务等隶属于人事管理业务单元;资料填报服务、资料查询服务等隶属于资料管理业务单元。
步骤702,根据第二正向依赖关系和属性关系生成多个业务单元之间的第三正向依赖关系。例如,图9所示的,业务单元A与业务单元B之间的依赖关系。
步骤703,根据第三正向依赖关系,在依赖关系图中生成业务单元之间的连接线,其中,业务单元为依赖关系图之中的第二类节点,第二类节点之间的连接线根据第三正向依赖关系生成。例如,图9所示的,业务单元A与业务单元B之间的连接线。
具体地,电子设备可从内置的本地代码库中调出软件系统的代码,并对其进行相关的部署,以获取该软件系统之中的多个服务以及多个服务所属的业务单元,并生成多个服务与多个业务单元之间的属性关系。然后电子设备可根据第二正向依赖关系和属性关系生成多个业务单元之间的第三正向依赖关系,并根据第三正向依赖关系,在依赖关系图中生成业务单元之间的连接线,从而能够准确且全面的展示服务间跨业务单元的依赖关系。
为了清楚说明上一实施例,在本申请的一个实施例中,该依赖关系图的生成方法还可包括根据属性关系,在依赖关系图中生成第一类节点与其所属的第二类节点之间的连接线。例如,图9所示的,业务单元A与服务1之间的连接线。由此,可以直观且清晰的展示出第一类节点与其所属的第二类节点之间的关系。
为了清楚说明上一实施例,在本申请的另一个实施例中,该依赖关系图的生成方法还可包括根据第二正向依赖关系和第一属性关系,在依赖关系图中生成第一类节点与其他第二类节点之间的连接线。例如,图9所示的,服务4与业务单元B之间的连接线。由此,可以直观且清晰的展示出第一类节点与其他第二类节点之间的关系。
需要说明的是,该实施例中所描述的第一属性关系可包括其他服务与其他业务单元之间的关系,例如,其他服务与其他业务之间的归属关系。
为了清楚说明上一实施例,在本申请的一个实施例中,如图8所示,根据第二正向依赖关系和第一属性关系生成第一类节点与其所属的第二类节点之间的连接线,可包括以下步骤:
步骤801,根据第二正向依赖关系,获取与任一服务存在直接或间接依赖关系的服务。
步骤802,根据第一属性关系,获取任一服务所属的第一业务单元,以及与任一服务存在直接或间接依赖关系的服务所属的第二业务单元。
步骤803,如果第二业务单元与第一业务单元不相同,则生成任一服务与第二业务单元之间的第四正向依赖关系。
步骤804,根据第四正向依赖关系,在依赖关系图中生成第一类节点与其他第二类节点之间的连接线。
具体地,电子设备可直接从服务间依赖关系库中,调出跨业务单元的服务间的第二正向依赖关系及其相关的信息,并可根据第二正向依赖关系及其相关的信息,获取与任一服务存在直接或间接依赖关系的服务。然后电子设备可根据第一属性关系,获取任一服务所属的第一业务单元,以及与任一服务存在直接或间接依赖关系的服务所属的第二业务单元,并判断第二业务单元与第一业务单元之间的关系,如果第二业务单元不是第一业务单元,则生成任一服务与第二业务单元之间的第四正向依赖关系,并根据第四正向依赖关系,在依赖关系图中生成第一类节点与其他第二类节点之间的连接线。由此,可以直观且清晰的展示出第一类节点与其他第二类节点之间的关系。
为了实现业务单元内服务之间的逆向依赖关系分析,和跨业务单元的服务间的逆向依赖关系的分析,在本申请的一个实施例中,该依赖关系图的生成方法还可包括对第一正向依赖关系进行逆向递归,获取业务单元内服务之间的第一逆向依赖关系,其中,逆向依赖表示另一服务的实现需要依赖服务;以及对第二正向依赖关系进行逆向递归,获取跨业务单元的服务间的第二逆向依赖关系。
具体地,电子设备在获取到软件系统中每个业务单元的第一正向依赖关系之后,还可对第一正向依赖关系进行逆向递归,以获取业务单元内服务之间的第一逆向依赖关系,从而实现业务单元内服务之间的逆向依赖关系的分析,有利于准确、全面的评估变更测试方案、系统减负等带来的风险。
电子设备在获取到软件系统中跨业务单元的服务间的第二正向依赖关系之后,还可对第二正向依赖关系进行逆向递归,以获取跨业务单元的服务间的第二逆向依赖关系,从而实现跨业务单元的服务间的逆向依赖关系的分析,更有利于准确、全面的评估变更测试方案、系统减负等带来的风险。
进一步地。电子设备还可将获取到的第一逆向依赖关系及其相关的信息,存储在服务内部逆向依赖关系库中,将获取到的第二逆向依赖关系及其相关的信息存储在服务间逆向依赖关系库中,从而方便后续相关人员的调用与查看。
在本申请实施例,电子设备还可将第一逆向依赖关系和第二逆向依赖关系,通过预设的输入条件,输入进预设的图形数据呈现软件,以通过预设的图形数据呈现软件生成服务的依赖关系图,从而使相关人员能够直观清晰地看到服务的逆袭依赖关系。
在本申请实施例中,每个服务可被定义为一个节点,服务的重要属性可通过节点属性添加,节点之间的关系用箭头标记,通过节点间正向和逆向的关系连接,形成方法依赖关系链,从而可以直观清晰看到业务单元内和业务单元间的服务详细依赖关系。
图10是本申请实施例提供的一种服务间依赖关系的获取装置的方框示意图。
本申请实施例的服务间依赖关系的获取装置,可配置于电子设备中,以实现获取软件系统之中的多个服务,并获取每个业务单元的第一正向依赖关系,以及根据所述业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系。
如图10所示,该服务间依赖关系的获取装置1000可以包括:第一获取模块100、第二获取模块200和第三获取模块300。
其中,第一获取模块100用于获取软件系统之中的多个服务,其中,多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,第一类服务依赖于所属业务单元内的服务,第二类服务依赖于其他业务单元内的服务。
需要说明的是,该实施例中所描述的多个业务单元,可为软件系统中的各个业务模块,若软件系统为办公自动化(Office Automation,简称OA)系统,则多个业务单元可包括办公用品管理模块、人事管理模块、公用酒水管理模块、资料管理模块和财务管理模块等。
进一步而言,在软件系统的各种组件之间,尤其是类、包、业务单元以及服务之间都可能存在依赖关系。其中,依赖关系可包括直接依赖关系和间接依赖关系,如图3(a)所示,服务1依赖于服务2这种直接依赖最容易识别和管理;间接依赖即直接依赖关系的衍生,如图3(b)所示,当服务1依赖服务2,而服务2又依赖服务3时,服务1就与服务3发生了间接依赖关系。其中,服务可以是类中的方法,为了实现该方法,该方法可以调用该方法所在模块内的其他方法,或调用其他模块内的方法。其中,方法中可包括多个接口和函数,且每个接口中也可包含多个函数。
在本申请实施例中,第一获取模块100从电子设备的本地代码库中调出软件系统的代码,并对其进行相关的部署,以便于获取该软件系统之中的多个服务。
第二获取模块200用于获取每个业务单元的第一正向依赖关系,其中,第一正向依赖关系包括业务单元内第一类服务之间的正向依赖关系以及业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系。
需要说明的是,该实施例中所描述的正向依赖可表示服务需要依赖于另一服务实现,例如图3(a)所示的服务1依赖于服务2。下面举例说明上述的第一正向依赖关系:
假设,A业务单元中包括A1、A2、A3、A4和A5服务,B业务单元中包括B1、B2和B3服务,则A业务单元的第一正向依赖关系可包括A1~A5服务之间的正向依赖关系,以及A1~A5服务与B1、B2和B3服务之间的正向依赖关系,其中,若A1与B1之间存在的正向依赖关系,但是后面B1服务调用了B业务单元中的B2,则本申请只需得到跨业务单元直接依赖的B1服务,无需继续往下进行分析。
具体地,在第一获取模块100获取到软件系统之中的多个服务之后,第二获取模块200可对多个服务进行筛选和分析以确定软件系统之中每个业务单元中所包含的服务,然后通过内置的代码静态分析组件,来分析每个业务单元中服务的正向依赖关系以获取每个业务单元的第一正向依赖关系。其中,代码静态分析组件可提供代码语法分析能力。
第三获取模块300用于根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,其中,第二正向依赖关系包括每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间的正向依赖关系。
需要说明的是,该实施例中的所描述的每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间的正向依赖关系可为每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间直接和/或间接的正向依赖关系。下面举例说明上述的第二正向依赖关系:
假设,软件系统之中的A业务单元中包括A1、A2和A3服务,B业务单元中包括B1、B2和B3服务,C业务单元中包括C1、C2和C3服务,则跨业务单元的服务间的第二正向依赖关系可包括A业务单元的第二正向依赖关系、B业务单元的第二正向依赖关系和C业务单元的第二正向依赖关系,其中,A业务单元的第二正向依赖关系可包括A1服务正向依赖B1服务、B1服务正向依赖B2服务、B1服务正向依赖C1服务、C1服务正向依赖C2服务和B2服务正向依赖B3服务等。
具体地,在第二获取模块200获取到每个业务单元的第一正向依赖关系后,第三获取模块300可将每个业务单元的第一正向依赖关系进行存储,然后对全部第一正向依赖关系进行分析,以获取每个第一正向依赖关系中的第二类服务与跨业务单元直接依赖的依赖服务之间的正向依赖关系,再然后将该依赖服务之间的正向依赖关系进行服务间的递归调用分析,以获取跨业务单元的服务间的第二正向依赖关系。由此,可以生成软件系统中所有服务间的正向依赖关系。
在本申请实施例中,通过第一获取模块获取软件系统之中的多个服务,并通过第二获取模块获取每个业务单元的第一正向依赖关系,以及通过第三获取模块根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关。由此,能够精确而全面地分析出软件系统中多个业务单元及其之间的服务依赖关系,以辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
在本申请的一个实施例中,如图11所示,第三获取模块300可包括第一获取单元310、第二获取单元320和第一生成单元330。
其中,第一获取单元310用于针对第二类服务,获取第二类服务的依赖服务所属的业务单元。
第二获取单元320对依赖服务所属的业务单元的第一正向依赖关系进行递归,获取第二类服务对应的跨业务单元的正向依赖关系。
第一生成单元330用于利用所有的第二类服务对应的跨业务的正向依赖关系,生成跨业务单元的服务间的第二正向依赖关系。
在本申请的一个实施例中,第一获取单元310具体用于获取第二类服务的标识信息,根据标识信息获取第二类服务的接口,根据接口获取第二类服务的依赖服务。
在本申请的一个实施例中,如图12所示,第二获取模块200可包括第二生成单元210,其中,第二生成单元210用于获取业务单元内每个服务的接口,对每个服务的接口进行递归分析,生成业务单元的第一正向依赖关系。
在本申请的一个实施例中,第二生成单元210具体用于获取每个接口的调用函数,对调用函数进行递归分析,获取当前分析的第一服务所依赖的第二服务;获取第一服务和第二服务所属的业务单元,识别第二服务所属的业务单元与第一服务所属的业务单元不同,停止递归;以及利用业务单元内每个服务的递归分析结果生成第一正向依赖关系。
在本申请的一个实施例中,第二获取模块200还可用于获取每个业务单元的第一正向依赖关系之前,获取多个服务所属的业务单元,生成多个服务与多个业务单元之间的属性关系。
在本申请的一个实施例中,第二获取模块200还可用于获取每个业务单元的第一正向依赖关系之后,对第一正向依赖关系进行逆向递归,获取业务单元内服务之间的第一逆向依赖关系,其中,逆向依赖表示另一服务的实现需要依赖服务。
在本申请的一个实施例中,第三获取模块300还可用于获取跨业务单元的服务间的第二正向依赖关系之后,对第二正向依赖关系进行逆向递归,获取跨业务单元的服务间的第二逆向依赖关系。
在本申请的一个实施例中,如图13所示,该服务间依赖关系的获取装置1000还可包括接口获取模块400,接口获取模块400用于获取服务的接口,其中,根据服务的标识信息,获取服务对应的代码数据存储路径,以及根据存储路径,获取代码数据,并对代码数据进行扫描,获取服务的接口。
需要说明的是,前述对服务间依赖关系的获取方法实施例的解释说明也适用于该实施例的服务间依赖关系的获取装置,此处不再赘述。
本申请实施例的服务间依赖关系的获取装置,通过第一获取模块获取软件系统之中的多个服务,并通过第二获取模块获取每个业务单元的第一正向依赖关系,以及通过第三获取模块根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关。由此,能够精确而全面地分析出软件系统中多个业务单元及其之间的服务依赖关系,以辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
图14是本申请实施例提供的一种服务的依赖关系图的生成装置的方框示意图。
本申请实施例的服务的依赖关系图的生成装置,可配置于电子设备中,以实现根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图。
如图14所示,该服务的依赖关系图的生成装置2000可以包括:第一获取模块2010、第二获取模块2020和第一生成模块2030。
其中,第一获取模块2010用于获取软件系统之中的多个服务,其中,多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,第一类服务依赖于所属业务单元内的服务,第二类服务依赖于其他业务单元内的服务。
需要说明的是,该实施例中所描述的多个业务单元,可为软件系统中的各个业务模块,若软件系统为办公自动化(Office Automation,简称OA)系统,则多个业务单元可包括办公用品管理模块、人事管理模块、公用酒水管理模块、资料管理模块和财务管理模块等。
进一步而言,在软件系统的各种组件之间,尤其是类、包、业务单元以及服务之间都可能存在依赖关系。其中,依赖关系可包括直接依赖关系和间接依赖关系,如图3(a)所示,服务1依赖于服务2这种直接依赖最容易识别和管理;间接依赖即直接依赖关系的衍生,如图3(b)所示,当服务1依赖服务2,而服务2又依赖服务3时,服务1就与服务3发生了间接依赖关系。其中,服务可以是类中的方法,为了实现该方法,该方法可以调用该方法所在模块内的其他方法,或调用其他模块内的方法。其中,方法中可包括多个接口和函数,且每个接口中也可包含多个函数。
在本申请实施例中,第一获取模块2010可从电子设备的本地代码库中调出软件系统的代码,并对其进行相关的部署,以便于获取该软件系统之中的多个服务。
第二获取模块2020用于获取业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,其中,第一正向依赖关系包括业务单元内第一类服务之间的正向依赖关系以及业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系,第二正向依赖关系包括每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间的正向依赖关系。
需要说明的是,该实施例中所描述的正向依赖可表示服务需要依赖于另一服务实现,例如图3(a)所示的服务1依赖于服务2。下面举例说明上述的第一正向依赖关系:
假设,A业务单元中包括A1、A2、A3、A4和A5服务,B业务单元中包括B1、B2和B3服务,则A业务单元的第一正向依赖关系可包括A1~A5服务之间的正向依赖关系,以及A1~A5服务与B1、B2和B3服务之间的正向依赖关系,其中,若A1与B1之间存在的正向依赖关系,但是后面B1服务调用了B业务单元中的B2,则本申请只需得到跨业务单元直接依赖的B1服务。
在本申请实施例中,每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间的正向依赖关系可为每个业务单元内的第二类服务与所依赖的其他业务单元内的服务之间直接和/或间接的正向依赖关系。下面举例说明上述的第二正向依赖关系:
假设,软件系统之中的A业务单元中包括A1、A2和A3服务,B业务单元中包括B1、B2和B3服务,C业务单元中包括C1、C2和C3服务,则跨业务单元的服务间的第二正向依赖关系可包括A业务单元的第二正向依赖关系、B业务单元的第二正向依赖关系和C业务单元的第二正向依赖关系,其中,A业务单元的第二正向依赖关系可包括A1服务正向依赖B1服务、B1服务正向依赖B2服务、B1服务正向依赖C1服务、C1服务正向依赖C2服务和B2服务正向依赖B3服务等。
具体地,电子设备可通过上述的服务间依赖关系的获取方法,可将获取到的业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系分别存储在服务内部依赖关系库和服务间依赖关系库中。当需要获取业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系时,第二获取模块2020可直接从电子设备的服务内部依赖关系库和服务间依赖关系库中,调出业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系及其相关的信息。
第一生成模块2030用于根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图,其中,服务为依赖关系图之中的第一类节点,第一类节点之间的连接线根据第一正向依赖关系和第二正向依赖关系生成。例如,图9所示的,服务1、服务2和服务3,及它们之间的连接线。
具体地,在第二获取模块2020获取到业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系及其相关的信息之后,第一生成模块2030可将该第一正向依赖关系和该第二正向依赖关系通过预设的输入条件,输入进预设的图形数据呈现软件,以通过预设的图形数据呈现软件生成服务的依赖关系图,并将其直观清晰地展示给相关人员。例如,将该第一正向依赖关系和该第二正向依赖关系通过预设的输入条件,输入Neo4j图形数据库以生成服务的依赖关系图,而后通过Neo4j数据浏览器快速展现服务的依赖关系图,以使相关人员能够直观清晰地看到服务的依赖关系。
在本申请实施例中,通过第一获取模块获取软件系统之中的多个服务,并通过第二获取模块获取业务单元内服务间的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,以及通过第一生成模块根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图,其中,服务为依赖关系图之中的第一类节点,第一类节点之间的连接线根据第一正向依赖关系和第二正向依赖关系生成。由此,生成的服务的依赖关系图,能够能直观清晰地展示出软件系统中多个业务单元及其之间的服务依赖关系,从而方便辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
在本申请的一个实施例中,如图15所示,该服务的依赖关系图的生成装置2000还可包括第三获取模块2040、第二生成模块2050和第三生成模块2060。
其中,第三获取模块2040用于获取多个服务与多个业务单元之间的属性关系。
第二生成模块2050用于根据第二正向依赖关系和属性关系生成多个业务单元之间的第三正向依赖关系。
第三生成模块2060用于根据第三正向依赖关系,在依赖关系图中生成业务单元之间的连接线,其中,业务单元为依赖关系图之中的第二类节点,第二类节点之间的连接线根据第三正向依赖关系生成。
在本申请的一个实施例中,如图16所示,该服务的依赖关系图的生成装置2000还可包括第四生成模块2070,其中,第四生成模块2070用于根据属性关系,在依赖关系图中生成第一类节点与其所属的第二类节点之间的连接线。
在本申请的一个实施例中,如图17所示,该服务的依赖关系图的生成装置2000还可包括第五生成模块2080,其中,第五生成模块2080用于根据第二正向依赖关系和第一属性关系,在依赖关系图中生成第一类节点与其他第二类节点之间的连接线。
在本申请的一个实施例中,第五生成模块2080具体用于根据第二正向依赖关系,获取与任一服务存在直接或间接依赖关系的服务;根据第一属性关系,获取任一服务所属的第一业务单元,以及与任一服务存在直接或间接依赖关系的服务所属的第二业务单元;如果第二业务单元与第一业务单元不相同,则生成任一服务与第二业务单元之间的第四正向依赖关系;以及根据第四正向依赖关系,在依赖关系图中生成第一类节点与其他第二类节点之间的连接线。
在本申请的一个实施例中,如图18所示,该服务的依赖关系图的生成装置2000还可包括第四获取模块2090和第五获取模块2100。
其中,第四获取模块2090用于对第一正向依赖关系进行逆向递归,获取业务单元内服务之间的第一逆向依赖关系;其中,逆向依赖表示另一服务的实现需要依赖服务。
第五获取模块2100用于对第二正向依赖关系进行逆向递归,获取跨业务单元的服务间的第二逆向依赖关系。
需要说明的是,前述对服务的依赖关系图的生成方法实施例的解释说明也适用于该实施例的服务的依赖关系图的生成装置,此处不再赘述。
本申请实施例的服务的依赖关系图的生成装置,通过第一获取模块获取软件系统之中的多个服务,并通过第二获取模块获取业务单元内服务间的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,以及通过第一生成模块根据第一正向依赖关系和第二正向依赖关系,生成服务的依赖关系图,其中,服务为依赖关系图之中的第一类节点,第一类节点之间的连接线根据第一正向依赖关系和第二正向依赖关系生成。由此,生成的服务的依赖关系图,能够能直观清晰地展示出软件系统中多个业务单元及其之间的服务依赖关系,从而方便辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图19所示,是根据本申请实施例的服务间依赖关系的获取方法或服务的依赖关系图的生成方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图19所示,该电子设备包括:一个或多个处理器901、存储器902,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图19中以一个处理器901为例。
存储器902即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的服务间依赖关系的获取方法或服务的依赖关系图的生成方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的服务间依赖关系的获取方法或服务的依赖关系图的生成方法。
存储器902作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的服务间依赖关系的获取方法或服务的依赖关系图的生成方法对应的程序指令/模块(例如,附图10所示的服务间依赖关系的获取装置1000包括:第一获取模块100、第二获取模块200和第三获取模块300;附图14所示的服务的依赖关系图的生成装置2000包括:第一获取模块2010、第二获取模块2020和第一生成模块2030)。处理器901通过运行存储在存储器902中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的服务间依赖关系的获取方法或服务的依赖关系图的生成方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据服务间依赖关系的获取方法或服务的依赖关系图的生成方法的电子设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至服务间依赖关系的获取方法或服务的依赖关系图的生成方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
服务间依赖关系的获取方法或服务的依赖关系图的生成方法的方法的电子设备还可以包括:输入装置903和输出装置904。处理器901、存储器902、输入装置903和输出装置904可以通过总线或者其他方式连接,图19中以通过总线连接为例。
输入装置903可接收输入的数字或字符信息,以及产生与服务间依赖关系的获取方法或服务的依赖关系图的生成方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置904可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的服务间依赖关系的获取方法的技术方案,能够精确而全面地分析出软件系统中多个业务单元及其之间的服务依赖关系,以辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
根据本申请实施例的服务的依赖关系图的生成方法的技术方案,生成的服务的依赖关系图,能够能直观清晰地展示出软件系统中多个业务单元及其之间的服务依赖关系,从而方便辅助研发、运维及测试人员制定完善而精准的变更测试方案和系统减负方案。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (34)

1.一种服务间依赖关系的获取方法,包括:
获取软件系统之中的多个服务,其中,所述多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,所述第一类服务依赖于所属业务单元内的服务,所述第二类服务依赖于其他业务单元内的服务;
获取每个业务单元的第一正向依赖关系,其中,所述第一正向依赖关系包括所述业务单元内第一类服务之间的正向依赖关系以及所述业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系;以及
根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,其中,所述第二正向依赖关系包括所述每个业务单元内的第二类服务与所依赖的所述其他业务单元内的服务之间的正向依赖关系;
其中,所述正向依赖表示所述服务需要依赖于另一服务实现。
2.根据权利要求1所述的服务间依赖关系的获取方法,其中,所述根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,包括:
针对所述第二类服务,获取所述第二类服务的所述依赖服务所属的业务单元;
对所述依赖服务所属的业务单元的第一正向依赖关系进行递归,获取所述第二类服务对应的跨业务单元的正向依赖关系;以及
利用所有的所述第二类服务对应的跨业务的正向依赖关系,生成跨业务单元的服务间的所述第二正向依赖关系。
3.根据权利要求2所述的服务间依赖关系的获取方法,其中,所述获取所述第二类服务的所述依赖服务所属的业务单元,包括:
获取所述第二类服务的标识信息,根据所述标识信息获取所述第二类服务的接口,根据所述接口获取所述第二类服务的所述依赖服务。
4.根据权利要求1所述的服务间依赖关系的获取方法,其中,所述获取每个业务单元的第一正向依赖关系,包括:
获取所述业务单元内每个服务的接口,对每个服务的接口进行递归分析,生成所述业务单元的所述第一正向依赖关系。
5.根据权利要求4所述的服务间依赖关系的获取方法,其中,所述对每个服务的接口进行递归分析,生成所述业务单元的所述第一正向依赖关系,包括:
获取每个接口的调用函数,对所述调用函数进行递归分析,获取当前分析的第一服务所依赖的第二服务;
获取所述第一服务和所述第二服务所属的业务单元,识别所述第二服务所属的业务单元与所述第一服务所属的业务单元不同,停止递归;以及
利用所述业务单元内每个服务的递归分析结果生成所述第一正向依赖关系。
6.根据权利要求1-5任一项所述的服务间依赖关系的获取方法,其中,所述获取每个业务单元的第一正向依赖关系之前,还包括:
获取所述多个服务所属的业务单元,生成所述多个服务与所述多个业务单元之间的属性关系。
7.根据权利要求1所述的服务间依赖关系的获取方法,其中,所述获取每个业务单元的第一正向依赖关系之后,还包括:
对所述第一正向依赖关系进行逆向递归,获取所述业务单元内服务之间的第一逆向依赖关系,其中,逆向依赖表示所述另一服务的实现需要依赖所述服务。
8.根据权利要求1所述的服务间依赖关系的获取方法,其中,所述获取跨业务单元的服务间的第二正向依赖关系之后,还包括:
对所述第二正向依赖关系进行逆向递归,获取跨业务单元的服务间的第二逆向依赖关系。
9.根据权利要求3或4所述的服务间依赖关系的获取方法,其中,获取所述服务的接口,包括:
根据所述服务的标识信息,获取所述服务对应的代码数据存储路径;以及
根据所述存储路径,获取所述代码数据,并对所述代码数据进行扫描,获取所述服务的接口。
10.一种服务的依赖关系图的生成方法,包括:
获取软件系统之中的多个服务,其中,所述多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,所述第一类服务依赖于所属业务单元内的服务,所述第二类服务依赖于其他业务单元内的服务;
获取所述业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,其中,所述第一正向依赖关系包括所述业务单元内第一类服务之间的正向依赖关系以及所述业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系,所述第二正向依赖关系包括所述每个业务单元内的第二类服务与所依赖的所述其他业务单元内的服务之间的正向依赖关系;以及
根据所述第一正向依赖关系和所述第二正向依赖关系,生成服务的依赖关系图,其中,所述服务为所述依赖关系图之中的第一类节点,所述第一类节点之间的连接线根据所述第一正向依赖关系和所述第二正向依赖关系生成。
11.根据权利要求10所述的服务的依赖关系图的生成方法,还包括:
获取所述多个服务与所述多个业务单元之间的属性关系;
根据所述第二正向依赖关系和所述属性关系生成所述多个业务单元之间的第三正向依赖关系;以及
根据所述第三正向依赖关系,在所述依赖关系图中生成所述业务单元之间的连接线,其中,所述业务单元为所述依赖关系图之中的第二类节点,所述第二类节点之间的连接线根据所述第三正向依赖关系生成。
12.根据权利要求11所述的服务的依赖关系图的生成方法,还包括:
根据所述属性关系,在所述依赖关系图中生成所述第一类节点与其所属的第二类节点之间的连接线。
13.根据权利要求11所述的服务的依赖关系图的生成方法,还包括:
根据所述第二正向依赖关系和第一属性关系,在所述依赖关系图中生成所述第一类节点与其他所述第二类节点之间的连接线。
14.根据权利要求13所述的服务的依赖关系图的生成方法,其中,所述根据第二正向依赖关系和所述第一属性关系生成所述第一类节点与其所属的第二类节点之间的连接线包括:
根据所述第二正向依赖关系,获取与任一服务存在直接或间接依赖关系的服务;
根据所述第一属性关系,获取所述任一服务所属的第一业务单元,以及所述与任一服务存在直接或间接依赖关系的服务所属的第二业务单元;
如果所述第二业务单元与所述第一业务单元不相同,则生成所述任一服务与所述第二业务单元之间的第四正向依赖关系;以及
根据所述第四正向依赖关系,在所述依赖关系图中生成所述第一类节点与其他所述第二类节点之间的连接线。
15.根据权利要求10-14任一项所述的服务的依赖关系图的生成方法,还包括:
对所述第一正向依赖关系进行逆向递归,获取所述业务单元内服务之间的第一逆向依赖关系;其中,逆向依赖表示所述另一服务的实现需要依赖所述服务;以及
对所述第二正向依赖关系进行逆向递归,获取跨业务单元的服务间的第二逆向依赖关系。
16.一种服务间依赖关系的获取装置,包括:
第一获取模块,用于获取软件系统之中的多个服务,其中,所述多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,所述第一类服务依赖于所属业务单元内的服务,所述第二类服务依赖于其他业务单元内的服务;
第二获取模块,用于获取每个业务单元的第一正向依赖关系,其中,所述第一正向依赖关系包括所述业务单元内第一类服务之间的正向依赖关系以及所述业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系;以及
第三获取模块,用于根据全部业务单元的第一正向依赖关系,获取跨业务单元的服务间的第二正向依赖关系,其中,所述第二正向依赖关系包括所述每个业务单元内的第二类服务与所依赖的所述其他业务单元内的服务之间的正向依赖关系;
其中,所述正向依赖表示所述服务需要依赖于另一服务实现。
17.根据权利要求16所述的服务间依赖关系的获取装置,其中,所述第三获取模块,包括:
第一获取单元,用于针对所述第二类服务,获取所述第二类服务的所述依赖服务所属的业务单元;
第二获取单元,对所述依赖服务所属的业务单元的第一正向依赖关系进行递归,获取所述第二类服务对应的跨业务单元的正向依赖关系;以及
第一生成单元,用于利用所有的所述第二类服务对应的跨业务的正向依赖关系,生成跨业务单元的服务间的所述第二正向依赖关系。
18.根据权利要求17所述的服务间依赖关系的获取装置,其中,第一获取单元,具体用于:
获取所述第二类服务的标识信息,根据所述标识信息获取所述第二类服务的接口,根据所述接口获取所述第二类服务的所述依赖服务。
19.根据权利要求16所述的服务间依赖关系的获取装置,其中,所述第二获取模块,包括:
第二生成单元,用于获取所述业务单元内每个服务的接口,对每个服务的接口进行递归分析,生成所述业务单元的所述第一正向依赖关系。
20.根据权利要求19所述的服务间依赖关系的获取装置,其中,所述第二生成单元,具体用于:
获取每个接口的调用函数,对所述调用函数进行递归分析,获取当前分析的第一服务所依赖的第二服务;
获取所述第一服务和所述第二服务所属的业务单元,识别所述第二服务所属的业务单元与所述第一服务所属的业务单元不同,停止递归;以及
利用所述业务单元内每个服务的递归分析结果生成所述第一正向依赖关系。
21.根据权利要求16-20任一项所述的服务间依赖关系的获取装置,其中,所述第二获取模块,还用于:
获取每个业务单元的第一正向依赖关系之前,获取所述多个服务所属的业务单元,生成所述多个服务与所述多个业务单元之间的属性关系。
22.根据权利要求16所述的服务间依赖关系的获取装置,其中,所述第二获取模块,还用于:
获取每个业务单元的第一正向依赖关系之后,对所述第一正向依赖关系进行逆向递归,获取所述业务单元内服务之间的第一逆向依赖关系,其中,逆向依赖表示所述另一服务的实现需要依赖所述服务。
23.根据权利要求16所述的服务间依赖关系的获取装置,其中,所述第三获取模块,还用于:
获取跨业务单元的服务间的第二正向依赖关系之后,对所述第二正向依赖关系进行逆向递归,获取跨业务单元的服务间的第二逆向依赖关系。
24.根据权利要求18或19所述的服务间依赖关系的获取装置,还包括:
接口获取模块,用于获取所述服务的接口;其中,
根据所述服务的标识信息,获取所述服务对应的代码数据存储路径;以及
根据所述存储路径,获取所述代码数据,并对所述代码数据进行扫描,获取所述服务的接口。
25.一种服务的依赖关系图的生成装置,包括:
第一获取模块,用于获取软件系统之中的多个服务,其中,所述多个服务分布于多个业务单元之中,每个业务单元中包括第一类服务和/或第二类服务,所述第一类服务依赖于所属业务单元内的服务,所述第二类服务依赖于其他业务单元内的服务;
第二获取模块,用于获取所述业务单元的第一正向依赖关系和跨业务单元的服务间的第二正向依赖关系,其中,所述第一正向依赖关系包括所述业务单元内第一类服务之间的正向依赖关系以及所述业务单元内第二类服务与直接依赖的其他业务单元内的服务之间的正向依赖关系,所述第二正向依赖关系包括所述每个业务单元内的第二类服务与所依赖的所述其他业务单元内的服务之间的正向依赖关系;以及
第一生成模块,用于根据所述第一正向依赖关系和所述第二正向依赖关系,生成服务的依赖关系图,其中,所述服务为所述依赖关系图之中的第一类节点,所述第一类节点之间的连接线根据所述第一正向依赖关系和所述第二正向依赖关系生成。
26.根据权利要求25所述的服务的依赖关系图的生成装置,还包括:
第三获取模块,用于获取所述多个服务与所述多个业务单元之间的属性关系;
第二生成模块,用于根据所述第二正向依赖关系和所述属性关系生成所述多个业务单元之间的第三正向依赖关系;以及
第三生成模块,用于根据所述第三正向依赖关系,在所述依赖关系图中生成所述业务单元之间的连接线,其中,所述业务单元为所述依赖关系图之中的第二类节点,所述第二类节点之间的连接线根据所述第三正向依赖关系生成。
27.根据权利要求26所述的服务的依赖关系图的生成装置,还包括:
第四生成模块,用于根据所述属性关系,在所述依赖关系图中生成所述第一类节点与其所属的第二类节点之间的连接线。
28.根据权利要求26所述的服务的依赖关系图的生成装置,还包括:
第五生成模块,用于根据所述第二正向依赖关系和第一属性关系,在所述依赖关系图中生成所述第一类节点与其他所述第二类节点之间的连接线。
29.根据权利要求28所述的服务的依赖关系图的生成装置,其中,所述第五生成模块,具体用于:
根据所述第二正向依赖关系,获取与任一服务存在直接或间接依赖关系的服务;
根据所述第一属性关系,获取所述任一服务所属的第一业务单元,以及所述与任一服务存在直接或间接依赖关系的服务所属的第二业务单元;
如果所述第二业务单元与所述第一业务单元不相同,则生成所述任一服务与所述第二业务单元之间的第四正向依赖关系;以及
根据所述第四正向依赖关系,在所述依赖关系图中生成所述第一类节点与其他所述第二类节点之间的连接线。
30.根据权利要求25-29任一项所述的服务的依赖关系图的生成装置,还包括:
第四获取模块,用于对所述第一正向依赖关系进行逆向递归,获取所述业务单元内服务之间的第一逆向依赖关系;其中,逆向依赖表示所述另一服务的实现需要依赖所述服务;以及
第五获取模块,用于对所述第二正向依赖关系进行逆向递归,获取跨业务单元的服务间的第二逆向依赖关系。
31.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的服务间依赖关系的获取方法。
32.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求10-15中任一项所述的服务的依赖关系图的生成方法。
33.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-9中任一项所述的服务间依赖关系的获取方法。
34.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求10-15中任一项所述的服务的依赖关系图的生成方法。
CN202010490964.4A 2020-06-02 2020-06-02 服务间依赖关系的获取方法、装置、电子设备和存储介质 Active CN111831317B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010490964.4A CN111831317B (zh) 2020-06-02 2020-06-02 服务间依赖关系的获取方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010490964.4A CN111831317B (zh) 2020-06-02 2020-06-02 服务间依赖关系的获取方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN111831317A true CN111831317A (zh) 2020-10-27
CN111831317B CN111831317B (zh) 2024-02-06

Family

ID=72897949

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010490964.4A Active CN111831317B (zh) 2020-06-02 2020-06-02 服务间依赖关系的获取方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN111831317B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826904A (zh) * 2021-01-21 2022-07-29 北京金山云网络技术有限公司 服务依赖信息获得方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016192604A1 (zh) * 2015-06-05 2016-12-08 阿里巴巴集团控股有限公司 一种全局任务节点依赖关系可视化方法、装置和系统
CN106339222A (zh) * 2016-08-23 2017-01-18 联动优势电子商务有限公司 一种服务实现方法及装置
CN109587255A (zh) * 2018-12-12 2019-04-05 深圳先进技术研究院 服务依赖关系图的构造方法、系统及存储介质
JP2020017204A (ja) * 2018-07-27 2020-01-30 富士ゼロックス株式会社 情報処理装置、情報処理システムおよびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016192604A1 (zh) * 2015-06-05 2016-12-08 阿里巴巴集团控股有限公司 一种全局任务节点依赖关系可视化方法、装置和系统
CN106339222A (zh) * 2016-08-23 2017-01-18 联动优势电子商务有限公司 一种服务实现方法及装置
JP2020017204A (ja) * 2018-07-27 2020-01-30 富士ゼロックス株式会社 情報処理装置、情報処理システムおよびプログラム
CN109587255A (zh) * 2018-12-12 2019-04-05 深圳先进技术研究院 服务依赖关系图的构造方法、系统及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
冯仁君;宋巍;马晓星;: "基于WS-BPEL过程的Web服务依赖关系分析", 计算机工程与应用, no. 02 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826904A (zh) * 2021-01-21 2022-07-29 北京金山云网络技术有限公司 服务依赖信息获得方法、装置及电子设备

Also Published As

Publication number Publication date
CN111831317B (zh) 2024-02-06

Similar Documents

Publication Publication Date Title
US8490050B2 (en) Automatic generation of user interfaces
US8584079B2 (en) Quality on submit process
US9645838B2 (en) Automatic discovery of a JavaScript API
US9811325B2 (en) Systems and methods for dynamically replacing code objects for code pushdown
US20120159443A1 (en) System and method for reducing test effort by object risk analysis
CN111752843B (zh) 用于确定影响面的方法、装置、电子设备及可读存储介质
CN112486820B (zh) 用于测试代码的方法、装置、设备以及存储介质
CN111666206A (zh) 变更代码的影响范围的获取方法、装置、设备及存储介质
US20170220613A1 (en) Systems and methods for database orientation transformation
CN111666217A (zh) 用于测试代码的方法和装置
CN111949272A (zh) 寄宿应用的编译优化方法、装置、电子设备及可读存储介质
CN111475164A (zh) 组件依赖关系检测方法、装置以及电子设备
CN112306880A (zh) 测试方法、装置、电子设备和计算机可读存储介质
US9208058B2 (en) Providing directional debugging breakpoints
CN111654495A (zh) 用于确定流量产生来源的方法、装置、设备及存储介质
US9507592B2 (en) Analysis of data integration job
CN112667795B (zh) 对话树构建方法和装置、对话树运行方法、装置以及系统
CN111831317B (zh) 服务间依赖关系的获取方法、装置、电子设备和存储介质
US9547505B2 (en) Adaptive contextual graphical representation of development entities
CN113778849A (zh) 用于测试代码的方法、装置、设备以及存储介质
CN117632710A (zh) 测试代码的生成方法、装置、设备及存储介质
US20160292067A1 (en) System and method for keyword based testing of custom components
CN110673994A (zh) 数据库测试方法及装置
US20190317877A1 (en) Application state monitoring
US11698829B2 (en) Identifying root causes of software defects

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant