CN114489588A - 时序图生成方法、装置、电子设备和存储介质 - Google Patents

时序图生成方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN114489588A
CN114489588A CN202210116315.7A CN202210116315A CN114489588A CN 114489588 A CN114489588 A CN 114489588A CN 202210116315 A CN202210116315 A CN 202210116315A CN 114489588 A CN114489588 A CN 114489588A
Authority
CN
China
Prior art keywords
calling
generating
determining
tree structure
calling method
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.)
Pending
Application number
CN202210116315.7A
Other languages
English (en)
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.)
Jingdong Technology Information Technology Co Ltd
Original Assignee
Jingdong Technology Information 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 Jingdong Technology Information Technology Co Ltd filed Critical Jingdong Technology Information Technology Co Ltd
Priority to CN202210116315.7A priority Critical patent/CN114489588A/zh
Publication of CN114489588A publication Critical patent/CN114489588A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种时序图生成方法、装置、电子设备和计算机可读存储介质,涉及时序处理技术领域。其中,时序图生成方法包括:响应于事件的触发操作,确定所述事件对应的运行程序;获取用于执行所述运行程序的调用方法以及定位所述方法的嵌套关系;基于所述方法和对应的所述嵌套关系生成调用链式的树状结构;基于对所述树状结构的遍历结果生成时序图。通过本公开的技术方案,一方面,有利于减少了研发人员梳理与绘制时序图的工作量,另一方面,有利于保证生成的时序图与运行程序之间的一致性。

Description

时序图生成方法、装置、电子设备和存储介质
技术领域
本公开涉及软件开发技术领域,尤其涉及一种时序图生成方法、装置、电子设备和计算机可读存储介质。
背景技术
软件系统的设计和开发过程中,时序图用于描述子系统、模块、对象之间发送消息的时间顺序,以显示多个对象之间的动态协作和交互操作等,而现有系统的模块或对象间的交互时的时序图通常采用人工处理的方式。
由于人工处理需要研发人员去熟悉和整理系统场景,随着系统复杂性的增加,也会导致增加研发人员对场景梳理和时序图处理等工作的复杂性。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种时序图生成方法、装置、电子设备和计算机可读存储介质,至少在一定程度上能够改善相关技术中由研发人员对场景梳理和时序图处理导致的人工投入工作量较大的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种时序图生成方法,包括:响应于事件的触发操作,确定所述事件对应的运行程序;获取用于执行所述运行程序调用方法以及定位所述调用方法的嵌套关系;基于所述调用方法和对应的所述嵌套关系生成调用链式的树状结构;基于对所述树状结构的遍历结果生成时序图。
在一个实施例中,所述获取用于执行所述运行程序的调用方法以及定位所述调用方法的嵌套关系,具体包括:基于指定应用框架的监控组件监测所述运行程序,以获取用于执行所述运行程序的多个调用方法的执行顺序;以及获取定位每个所述调用方法的嵌套关系。
在一个实施例中,所述监控组件包括第一监测接口和第二监测接口,所述获取定位每个所述调用方法的嵌套关系,具体包括:基于所述第一监测接口对用于执行所述运行程序所需的调用方法进行定位;基于所述第二监测接口对用于执行所述运行程序的所需对象进行定位;基于所述监控组件的增强确定从所述对象到达对应的所述调用方法的第一嵌套关系;确定所述对象所属的模块,以及从所述增强到达所述对象的第二嵌套关系;基于所述第二嵌套关系和所述第一嵌套关系确定定位所述调用方法的嵌套关系。
在一个实施例中,基于所述调用方法和对应的所述嵌套关系生成调用链式的树状结构,具体包括:基于所述调用方法的嵌套关系生成树节点;基于所述执行顺序确定依次执行的两个所述调用方法之间的连接边;基于所述树节点和所述连接边生成所述链式的树状结构。
在一个实施例中,所述基于对所述树状结构的遍历结果生成时序图,具体包括:对所述树状结构执行遍历操作;基于预设绘图模型对所述遍历操作的遍历结果执行语法转化;基于所述语法转化的结果生成所述时序图。
在一个实施例中,所述基于预设绘图模型对所述遍历操作的遍历结果执行语法转化,具体包括:基于所述遍历结果依次得到所述树状结构中每个所述树节点的节点信息;将所述节点信息中记录的所述对象确定为所述预设绘图模型的交互对象;将所述节点信息中记录的所述调用方法确定为所述交互对象之间进行交互的交互消息;将所述节点信息中记录的所述模块确定为所述交互消息的注解。
在一个实施例中,所述基于所述语法转化的结果生成所述时序图,具体包括:基于所述交互对象、所述交互消息和所述注解生成所述时序图。
在一个实施例中,在响应于事件的触发操作,确定所述事件对应的运行程序之前,还包括:将接收到的用户输入的指定操作确定为所述触发操作;和/或将获取到的调用系统接口的操作确定为所述触发操作;和/或将到达执行实践的定时设置的执行任务确定为所述触发操作。
根据本公开的第二方面,提供一种时序图生成装置,包括:确定模块,用于响应于事件的触发操作,确定所述事件对应的运行程序;获取模块,用于获取用于执行所述运行程序调用方法以及定位所述调用方法的嵌套关系;第一生成模块,用于基于所述调用方法和对应的所述嵌套关系生成调用链式的树状结构;第二生成模块,用于基于对所述树状结构的遍历结果生成时序图。
根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述任意一项的时序图生成方法。
根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任意一项的时序图生成方法。
本公开的实施例所提供的时序图生成方案,通过在事件触发时确定对应的运行程序,则可基于对执行运行程序的调用方法和定位调用方法的嵌套关系进行监测的结果,生成对应的树状结构,并进一步基于对树状结构的遍历结果生成时序图,实现了在运行程序运行的过程中能够自动生成时序图,该时序图的生成方式,一方面,有利于减少了研发人员梳理与绘制时序图的工作量,另一方面,有利于保证生成的时序图与运行程序之间的一致性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开实施例中一种时序图生成系统结构的示意图;
图2示出本公开实施例中一种时序图生成方法的流程图;
图3示出本公开实施例中一种时序图生成方案的树状结构示意图;
图4示出本公开实施例中另一种时序图生成方法的流程图;
图5示出本公开实施例中再一种时序图生成方法的流程图;
图6示出本公开实施例的又一种时序图生成方法的流程图;
图7示出本公开实施例中又一种时序图生成方法的流程图;
图8示出本公开实施例中一种时序图生成方案的时序图;
图9示出本公开实施例中一种时序图生成装置的示意图;
图10示出本公开实施例中一种电子设备的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本申请提供的方案,通过在事件触发时确定对应的运行程序,则可基于对执行运行程序的调用方法和定位调用方法的嵌套关系进行监测的结果,生成对应的树状结构,并进一步基于对树状结构的遍历结果生成时序图,实现了在运行程序运行的过程中能够自动生成时序图,该时序图的生成方式,一方面,有利于减少了研发人员梳理与绘制时序图的工作量,另一方面,有利于保证生成的时序图与运行程序之间的一致性。
为了便于理解,下面首先对本申请涉及到的几个名词进行解释。
Spring Boot:由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Spring:是一个开放源代码的J2EE运行程序框。
Java EE(Java Platform,Enterprise Edition)是sun公司(2009年4月20日甲骨文将其收购)推出的企业级运行程序版本。
Plantuml:是一个快速创建UML图形的组件。
IDEA:全称IntelliJ IDEA,是java编程语言开发的集成环境。
Spring AOP:AOP的全称是“Aspect Oriented Programming”,即面向切面编程,它将业务逻辑的各个部分进行隔离,使开发人员在编写业务逻辑时可以专心于核心业务,从而提高了开发效率。
图1示出本公开实施例中一种时序图生成系统的结构示意图,包括多个终端120和服务器集群140。
终端120可以是手机、游戏主机、平板电脑、电子书阅读器、智能眼镜、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、智能家居设备、AR(Augmented Reality,增强现实)设备、VR(Virtual Reality,虚拟现实)设备等移动终端,或者,终端120也可以是个人计算机(Personal Computer,PC),比如膝上型便携计算机和台式计算机等等。
其中,终端120中可以安装有用于提供的时序图生成的运行程序。
终端120与服务器集群140之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。
服务器集群140是一台服务器,或者由若干台服务器组成,或者是一个虚拟化平台,或者是一个云计算服务中心。服务器集群140用于为提供时序图生成运行程序提供后台服务。可选地,服务器集群140承担主要计算工作,终端120承担次要计算工作;或者,服务器集群140承担次要计算工作,终端120承担主要计算工作;或者,终端120和服务器集群140之间采用分布式计算架构进行协同计算。
在一些可选的实施例中,服务器集群140用于存储时序图生成模型等。
可选地,不同的终端120中安装的运行程序的客户端是相同的,或两个终端120上安装的运行程序的客户端是不同控制系统平台的同一类型运行程序的客户端。基于终端平台的不同,该运行程序的客户端的具体形态也可以不同,比如,该运行程序客户端可以是手机客户端、PC客户端或者全球广域网(World Wide Web,Web)客户端等。
本领域技术人员可以知晓,上述终端120的数量可以更多或更少。比如上述终端可以仅为一个,或者上述终端为几十个或几百个,或者更多数量。本申请实施例对终端的数量和设备类型不加以限定。
可选的,该系统还可以包括管理设备(图1未示出),该管理设备与服务器集群140之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(ExtensibleMarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(InternetProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
下面,将结合附图及实施例对本示例实施方式中的时序图生成方法中的各个步骤进行更详细的说明。
图2示出本公开实施例中一种时序图生成方法流程图。本公开实施例提供的方法可以由任意具备计算处理能力的电子设备执行,例如如图1中的终端120和/或服务器集群140。在下面的举例说明中,以终端120为执行主体进行示例说明。
如图2所示,终端120执行时序图生成方法,包括以下步骤:
步骤S202,响应于事件的触发操作,确定事件对应的运行程序。
其中,事件的触发操作包括但不限于:将接收到的用户输入的指定操作确定为触发操作;和/或将获取到的调用系统接口的操作确定为触发操作;和/或将到达执行实践的定时设置的执行任务确定为触发操作。
具体地,基于户输入的指定操作触发的事件包括但不限于接收到的用户多某个UI按键的点击操作,用于输入的访问某个页面的链接操作等。
响应于事件的触发操作,事件触发后会有对应的运行程序执行,具体执行需要根据实际的场景确定,比如:提交表单、页面展示、文件上传或者下载等。
步骤S204,获取用于执行运行程序的调用方法以及定位调用方法的嵌套关系。
具体地,由于一个Java项目可以称为一个模块,多个函数打包或数据封装形成一个类,一个模块中包括至少一个类,将类实例化处理,得到对象,对象的函数称为方法。
由于一个模块包括多个类,而一个类又包括多个调用方法,获取用于执行运行程序的调用方法以及定位调用方法的嵌套关系可以通过分别确定模块、类和方法,以及模块和类之间的嵌套关系、类和方法之间的嵌套关系的方式实施。
如图3所示,响应于事件触发的操作,进入调用方法的入口,包括:模块A-方法1,然后依次执行模型B-方法2以及模型B-方法3,然后并发执行模型C-方法4以及模型C-方法5,在执行完毕模型C-方法4后,执行模型D-方法6。
步骤S206,基于调用方法和对应的嵌套关系生成调用链式的树状结构。
其中,通过使用抽象的方式将调用方法和对应的嵌套关系进行处理,得到对应的树状结构。
其中,嵌套关系可以包括第一方法和第一方法调用的第二方法之间的关系。
例如,以表单提交作为触发事件,表单提交对应的运行程序包括但不限于校验、数据的计算和数据存储等,通过获取执行这些运行程序的调用方法和定位调用方法的嵌套关系,则可以对应构建出树状结构。
步骤S208,基于对树状结构的遍历结果生成时序图。
其中,时序图描述了对象之间传递消息的时间顺序,用来表示用例中的行为顺序,是强调消息时间顺序的交互图。
基于对树状结构的遍历结果生成时序图,即基于调用方法和调用方法的嵌套关系能够直接确定对象和对象之间的交互信息,以进一步生成时序图。
在该实施例中,通过在事件触发时确定对应的运行程序,则可基于对执行运行程序的调用方法和定位调用方法的嵌套关系进行监测的结果,生成对应的树状结构,并进一步基于对树状结构的遍历结果生成时序图,实现了在运行程序运行的过程中能够自动生成时序图,该时序图的生成方式,一方面,有利于减少了研发人员梳理与绘制时序图的工作量,另一方面,有利于保证生成的时序图与运行程序之间的一致性。
进一步地,在涉及到较复杂的运行程序的系统中,通过基于获取到的用于执行运行程序调用方法以及定位调用方法的嵌套关系生成时序图,也能够保证对多个对象之间的交互的描述的准确性。
在一个实施例中,获取用于执行运行程序的调用方法以及定位调用方法的嵌套关系,具体包括:基于指定应用框架的监控组件监测运行程序,以获取用于执行运行程序的多个调用方法的执行顺序;以及获取定位每个调用方法的嵌套关系。
其中,指定应用框架具体为Spring框架,基于Spring的AOP(Aspect OrientedProgramming,面向切面编程),确定横切关注点,即对哪些方法进行监测,指定应用框架的监控组件,即Spring切面,Spring切面为对横切关注点的抽象,基于Spring切面监测运行程序,以获取用于执行运行程序的多个调用方法的执行顺序,以及获取定位每个调用方法的嵌套关系。
其中,多个调用方法的执行顺序可以为串行和/或并行,对于每个调用方法,基于Spring切面均能够确定其对应的嵌套关系,也就是如何从模块中对象,如何从对象中确定调用方法的过程。
在该实施例中,通过创建业务逻辑接口和实现类,实现Spring切面的设置,通过设置Spring切面,实现对运行程序中涉及到的调用方法及其获取路线的监控,进而获取到事件触发后用于运行程序的多个调用方法,以便于进一步生成对应的树状结构。
在一个实施例中,监控组件包括第一监测接口和第二监测接口,获取定位每个调用方法的嵌套关系,具体包括:基于第一监测接口对用于执行运行程序所需的调用方法进行定位;基于第二监测接口对用于执行运行程序的所需对象进行定位;基于监控组件的增强确定从对象到达对应的调用方法的第一嵌套关系;确定对象所属的模块,以及从增强到达对象的第二嵌套关系;基于第二嵌套关系和第一嵌套关系确定定位调用方法的嵌套关系。
在一种具体的实施方式中,监控组件为Spring切面,第一监测接口为ClassFilter接口,第二监测接口为MethodMatcher接口,另外,在执行对运行程序的监控过程中,在Spring切面中插入的点为连接点,连接点可以理解为在监控过程中被监控拦截到的方法,Spring切面还包括Pointcut接口,Pointcut接口为Spring AOP中的最顶层抽象,用于对连接点的捕捉,而ClassFilter与MethodMatcher分别用于在不同的级别上限定连接点的匹配范围,满足不同粒度的匹配,ClassFilter限定在类级别(即对象的定位)上,MethodMatcher接口限定在方法级别(即对方法的定位)。
如图4所示,获取定位每个调用方法的嵌套关系,具体包括:
步骤S402,基于MethodMatcher接口对用于执行运行程序所需的调用方法进行定位。
其中,切面包括切点和增强。
步骤S404,基于ClassFilter接口对用于执行运行程序的所需对象进行定位。
其中,对象即为类的实例化。
步骤S406,基于Spring切面的增强确定从对象到达对应的调用方法的第一嵌套关系。
其中,增强是织入目标类连接点上的一段程序代码,只有结合切点和增强才能确定特定的连接点并实施增强逻辑。
步骤S408,确定对象所属的模块,以及从增强到达对象的第二嵌套关系。
其中,这里的模块是指的是Java的工程中相同或相似功能的文件等组成的一个包。对象是java语言在编译运行过程中通过类的定义创建出来的一个对应的内容,存储与内存中。调用方法和其他编程语言一样,是具备输入和输出能够完成某个工作的命令集。
步骤S410,基于第二嵌套关系和第一嵌套关系确定定位调用方法的嵌套关系。
其中,不同的模块包嵌套关系中可以有相同名字的类,不同的类中也可能有相同调用方法的名字。所以通过模块+对象+调用方法可以唯一的确定这个节点对应的调用方法。
在该实施例中,模块和对象可以认为是生成的调用方法所对应的全嵌套关系的描述符,模块结合对象与调用方法名称则可以作为该调用方法的唯一标识,从而实现对某一调用方法的具体的定位,以得到每个调用方法在树状结构中的具体表示。
如图5所示,在一个实施例中,基于调用方法和对应的嵌套关系生成调用链式的树状结构,具体包括:
步骤S502,基于调用方法的嵌套关系生成树节点。
步骤S504,基于执行顺序确定依次执行的两个调用方法之间的连接边。
步骤S506,基于树节点和连接边生成链式的树状结构。
在该实施例中,链式的树状结构包括多个树节点,以及连接相邻两个树节点的连接边,通过将每个调用方法以及该调用方法的嵌套关系作为一个树节点,嵌套关系具体为相关的模块、类(对象)和调用方法之间的关系,将相邻的前后两个调用方法采用连接边连接,以构造出链式的树状结构,该链式树状结构一方面能够保证对调用方法的执行顺序的描述的可靠性,另一方面,也能够保证其对调用方法与所属的类以及模块之间的嵌套关系的描述的可靠性。
在一个实施例中,基于对树状结构的遍历结果生成时序图,具体包括:
对树状结构执行遍历操作。
基于预设绘图模型对遍历操作的遍历结果执行语法转化。具体地,预设绘图模型为plantuml,即基于plantuml对遍历操作的遍历结果执行语法转化。
例如,通过上述的Spring切面等处理过程能够获取到类似于模块+类(对象)+调用方法的字符串,例如字符串为:
org.springframework.web.bind.annotation.RestController#test。
其中,模块名为:org.springframework.web.bind.annotation。
类名为:RestController。
方法名为:test。
将字符串转化为A->B:a的格的语法结构,即:
root->org.springframework.web.bind.annotation.RestController:test。
其中,A为root,B为“org.springframework.web.bind.annotation.RestController”,C为“test”,基于该语法结构可知,在模块+类(A)的调用方法a中调用了模块+类(B),然后即可按照树状结构进行遍历。
进一步地,基于语法转化的结果生成时序图。
其中,Plantuml用于快速创建UML(Unified Modeling Language,统一建模语言)图像,通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作,即对象之间的消息流动顺序。
在该实施例中,通过对树状结构执行遍历操作,即可得到用于描述对象之间发送消息的事件顺序,以及不同对象之间如何传递消息,进而实现对时序图的自动生成过程。
如图6所示,在一个实施例中,以将Plantuml作为预设绘制模型为例,基于预设绘图模型对遍历操作的遍历结果执行转换操作,以生成时序图,具体包括:
步骤S602,基于遍历结果依次得到树状结构中每个树节点的节点信息。
步骤S604,将节点信息中记录的对象确定为plantuml的交互对象。
步骤S606,将节点信息中记录的调用方法确定为交互对象之间进行交互的交互消息。
步骤S608,将节点信息中记录的模块确定为交互消息的注解。
步骤S610,基于交互对象、交互消息和注解生成时序图。
在该实施例中,节点信息包括模块、对象和调用方法,通过将记录的对象作为对应plantuml中的参与者,而树状结构中的调用方法名作为plantuml参与者间交互的消息信息,同时可以通过将树状结构中的类进行分类得到对应的模块,并在调用方法上增加注解的方式将其内容作为plantuml参与者间消息信息的具体描述,在自动生成时序图的同时,也保证了生成的plantuml时序图具有较好的阅读性。
如图7所示,根据本公开的另一个实施例的时序图的构造调用方法,具体包括:
步骤S702,响应于事件的触发操作,确定事件对应的运行程序。
具体地,事件可以包括用户的操作(比如点击按钮、访问某个页面)、其他系统调用接口、定时的任务执行等等;在软件系统中,事件触发后会有对应的程序执行,具体执行需要根据实际的场景确定,比如:提交表单、页面展示、文件上传或者下载等。
步骤S704,基于Spring切面记录运行程序调用的模块、对象和调用方法的执行过程,并形成调用链式的树状结构。
软件系统运行时由事件触发后执行的程序通过抽象后可以简化为调用链的树状结构。
具体地,抽象可以简单认为是一个简化的过程,比如表单提交后可能有很多的动作,如数据的校验、数据的计算和数据存储等,通过抽象后则可以是检验、处理和存储,不需要再关心具体校验的逻辑、数据处理的方式和算法和存储的方式和位置等因素。
为了获取树状结构,需要依赖并通过Spring切面进行处理和记录,具体地,树状结构的每个节点都是程序中的一个调用方法,而模块和对象则可以认为是生成该调用方法所对应的全路径的描述符,模块和对象结合调用方法名称可以作为唯一的标识,这样就能够定位具体的某一个调用方法。
通过Spring切面技术切入每个调用方法并记录下此调用方法的类名和模块名,例如:
通过对不同方法的依次调用,即可生成调用链的树状结构。
步骤S706,基于plantuml语法对树状结构语法转化。
生成的树状结构还需要通过转换器后生成plantuml的代码,其中简要的对应关系如下:树状结构中记录的类名对应plantuml中的参与者,而树状结构中的调用方法名作为plantuml参与者间交互的消息信息。同时可以通过将树状结构中的类进行分类划分出模块/系统,还可以在调用方法上增加注解的方式将其内容作为plantuml参与者间消息信息的具体描述,这样能使生成的plantuml时序图有更好的阅读性。
步骤S708,基于转化结果生成时序图。
基于上述的时序图的生成方案,通过运行时自动生成时序图的方式,减少了研发人员梳理及画制时序图的工作量。同时能够保证自动生成的时序图与系统保证完全的一致性。
具体地,基于plantuml语法对树状结构语法转化的代码包括:
actor root
root->com.XX.demo.controller,TestController:test
com.XX.demo.controller,TestController->com.XX.demo.service.TestService:getService
com.XX.demo.service.TestService->com.XX.demo.service.DemoService:testDemo
com.XX.demo.service.TestService<--com.XX.demo.service.DemoService
com.XX.demo.controller.TestController<--com.XX.demo.service.TestService
root->com.XX.demo.controller,TestController
其中,com.XX.demo.controller,TestController为第一对象。
com.XX.demo.service.TestService为第二对象。
com.XX.demo.service.DemoService为第三对象。
Test为调用方法A,getService为调用方法B,testDemo为调用方法C。
对应生成的时序图如图8所示。
需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图9来描述根据本发明的这种实施方式的时序图生成装置900。图9所示的时序图生成装置900仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
时序图生成装置900以硬件模块的形式表现。时序图生成装置900的组件可以包括但不限于:确定模块902,用于响应于事件的触发操作,确定事件对应的运行程序;获取模块904,用于获取用于执行运行程序的调用方法以及定位调用方法的嵌套关系;第一生成模块906,用于基于调用方法和对应的嵌套关系生成调用链式的树状结构;第二生成模块908,用于基于对树状结构的遍历结果生成时序图。
在一个实施例中,获取模块904还用于:基于指定应用框架的监控组件监测运行程序,以获取用于执行运行程序的多个调用方法的执行顺序;以及获取定位每个调用方法的嵌套关系。
在一个实施例中,监控组件包括第一监测接口和第二监测接口,获取模块904还用于:基于第一监测接口对用于执行运行程序所需的调用方法进行定位;基于第二监测接口对用于执行运行程序的所需对象进行定位;基于监控组件的增强确定从对象到达对应的调用方法的第一嵌套关系;确定对象所属的模块,以及从增强到达对象的第二嵌套关系;基于第二嵌套关系和第一嵌套关系确定定位调用方法的嵌套关系。
在一个实施例中,第一生成模块906还用于:基于调用方法的嵌套关系生成树节点;基于执行顺序确定依次执行的两个调用方法之间的连接边;基于树节点和连接边生成链式的树状结构。
在一个实施例中,第二生成模块908还用于:对树状结构执行遍历操作;基于预设绘图模型对遍历操作的遍历结果执行语法转化;基于语法转化的结果生成时序图。
在一个实施例中,第二生成模块908还用于:基于遍历结果依次得到树状结构中每个树节点的节点信息;将节点信息中记录的对象确定为预设绘图模型的交互对象;将节点信息中记录的调用方法确定为交互对象之间进行交互的交互消息;将节点信息中记录的模块确定为交互消息的注解。
在一个实施例中,第二生成模块908还用于:基于交互对象、交互消息和注解生成时序图
在一个实施例中,还包括:确定模块910,用于将接收到的用户输入的指定操作确定为触发操作;和/或将获取到的调用系统接口的操作确定为触发操作;和/或将到达执行实践的定时设置的执行任务确定为触发操作。
下面参照图10来描述根据本发明的这种实施方式的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030。
其中,存储单元存储有程序代码,程序代码可以被处理单元1010执行,使得处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1010可以执行如图2中所示的步骤S202至步骤S206,以及本公开的时序图生成方法中限定的其他步骤。
存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)10201和/或高速缓存存储单元10202,还可以进一步包括只读存储单元(ROM)10203。
存储单元1020还可以包括具有一组(至少一个)程序模块10205的程序/实用工具10204,这样的程序模块10205包括但不限于:操作系统、一个或者多个运行程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1000也可以与一个或多个外部设备1060(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1050进行。并且,电子设备1000还可以通过网络适配器1050与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1050通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
根据本发明的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

Claims (11)

1.一种时序图生成方法,其特征在于,包括:
响应于事件的触发操作,确定所述事件对应的运行程序;
获取用于执行所述运行程序的调用方法以及定位所述调用方法的嵌套关系;
基于所述调用方法和对应的所述嵌套关系生成调用链式的树状结构;
基于对所述树状结构的遍历结果生成时序图。
2.根据权利要求1所述的时序图生成方法,其特征在于,所述获取用于执行所述运行程序的调用方法以及定位所述调用方法的嵌套关系,具体包括:
基于指定应用框架的监控组件监测所述运行程序,以获取用于执行所述运行程序的多个调用方法的执行顺序;以及
获取定位每个所述调用方法的所述嵌套关系。
3.根据权利要求2所述的时序图生成方法,其特征在于,所述监控组件包括第一监测接口和第二监测接口,所述获取定位每个所述调用方法的所述嵌套关系,具体包括:
基于所述第一监测接口对用于执行所述运行程序所需的调用方法进行定位;
基于所述第二监测接口对用于执行所述运行程序的所需对象进行定位;
基于所述监控组件的增强确定从所述对象到达对应的所述调用方法的第一嵌套关系;
确定所述对象所属的模块,以及从所述增强到达所述对象的第二嵌套关系;
基于所述第二嵌套关系和所述第一嵌套关系确定定位所述调用方法的嵌套关系。
4.根据权利要求3所述的时序图生成方法,其特征在于,基于所述调用方法和对应的所述嵌套关系生成调用链式的树状结构,具体包括:
基于所述调用方法的嵌套关系生成树节点;
基于所述执行顺序确定依次执行的两个所述调用方法之间的连接边;
基于所述树节点和所述连接边生成所述链式的树状结构。
5.根据权利要求4所述的时序图生成方法,其特征在于,所述基于对所述树状结构的遍历结果生成时序图,具体包括:
对所述树状结构执行遍历操作;
基于预设绘图模型对所述遍历操作的遍历结果执行语法转化;
基于所述语法转化的结果生成所述时序图。
6.根据权利要求5所述的时序图生成方法,其特征在于,所述基于预设绘图模型对所述遍历操作的遍历结果执行语法转化,具体包括:
基于所述遍历结果依次得到所述树状结构中每个所述树节点的节点信息;
将所述节点信息中记录的所述对象确定为所述预设绘图模型的交互对象;
将所述节点信息中记录的所述调用方法确定为所述交互对象之间进行交互的交互消息;
将所述节点信息中记录的所述模块确定为所述交互消息的注解。
7.根据权利要求6所述的时序图生成方法,其特征在于,所述基于所述语法转化的结果生成所述时序图,具体包括:
基于所述交互对象、所述交互消息和所述注解生成所述时序图。
8.根据权利要求1至7中任一项所述的时序图生成方法,其特征在于,在响应于事件的触发操作,确定所述事件对应的运行程序之前,还包括:
将接收到的用户输入的指定操作确定为所述触发操作;和/或
将获取到的调用系统接口的操作确定为所述触发操作;和/或
将到达执行实践的定时设置的执行任务确定为所述触发操作。
9.一种时序图生成装置,其特征在于,包括:
确定模块,用于响应于事件的触发操作,确定所述事件对应的运行程序;
获取模块,用于获取用于执行所述运行程序的调用方法以及定位所述调用方法的嵌套关系;
第一生成模块,用于基于所述调用方法和对应的所述嵌套关系生成调用链式的树状结构;
第二生成模块,用于基于对所述树状结构的遍历结果生成时序图。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~8中任意一项所述的时序图生成方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~8中任意一项所述的时序图生成方法。
CN202210116315.7A 2022-02-07 2022-02-07 时序图生成方法、装置、电子设备和存储介质 Pending CN114489588A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210116315.7A CN114489588A (zh) 2022-02-07 2022-02-07 时序图生成方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210116315.7A CN114489588A (zh) 2022-02-07 2022-02-07 时序图生成方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN114489588A true CN114489588A (zh) 2022-05-13

Family

ID=81478789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210116315.7A Pending CN114489588A (zh) 2022-02-07 2022-02-07 时序图生成方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114489588A (zh)

Similar Documents

Publication Publication Date Title
CN110716748B (zh) 业务处理方法、装置、计算机可读介质及电子设备
US9996336B2 (en) Apparatus and method for validating application deployment topology in cloud computing environment
CN110083455B (zh) 图计算处理方法、装置、介质及电子设备
WO2009140250A1 (en) Framework-based model-driven software development
US20210304142A1 (en) End-user feedback reporting framework for collaborative software development environments
US20150006584A1 (en) Managing a complex object in a cloud environment
US20200050533A1 (en) Observer for simulation test and verification
US8938712B2 (en) Cross-platform virtual machine and method
CN112256406B (zh) 作业流程平台化调度方法
US20150143267A1 (en) SYSTEM AND METHOD FOR DEVELOPING A RULE-BASED EVENT-DRIVEN MULTI-LAYERED FRONTEND FOR BUSINESS SERVICES AND RENDERING THE GUIs ON MULTIPLE CLIENT DEVICES
CN113835693A (zh) 代码生成方法、装置、电子设备、存储介质
CN111178849A (zh) 线性流程引擎实现方法、装置、设备及存储介质
CN114077430A (zh) 界面生成方法、装置、电子设备及存储介质
CN112631590A (zh) 组件库生成方法、装置、电子设备和计算机可读介质
US10922208B2 (en) Observer for simulation test and verification
CN110868324A (zh) 一种业务配置方法、装置、设备和存储介质
CN114048415A (zh) 表单生成方法及装置、电子设备和计算机可读存储介质
CN115964185A (zh) 面向技术资源共享的微服务管理系统
US11200049B2 (en) Automated test authorization management
CN117389647A (zh) 插件生成方法、应用程序开发方法、装置、设备及介质
CN114489588A (zh) 时序图生成方法、装置、电子设备和存储介质
US20220365758A1 (en) Tool for Introspection in Object-Oriented Source Code
CN111880775A (zh) 多模块分层架构实现方法、装置、电子设备、存储介质
US11360877B2 (en) Forming microservices from monolithic applications
JP2013235508A (ja) オブジェクト指向プログラム生成装置、その方法、プログラム

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