CN111176724A - 一种软件架构分析的计算机实现方法及其装置 - Google Patents

一种软件架构分析的计算机实现方法及其装置 Download PDF

Info

Publication number
CN111176724A
CN111176724A CN201911399723.2A CN201911399723A CN111176724A CN 111176724 A CN111176724 A CN 111176724A CN 201911399723 A CN201911399723 A CN 201911399723A CN 111176724 A CN111176724 A CN 111176724A
Authority
CN
China
Prior art keywords
module
calling
modules
layer
architecture
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
CN201911399723.2A
Other languages
English (en)
Other versions
CN111176724B (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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN111176724A publication Critical patent/CN111176724A/zh
Priority to PCT/CN2020/121893 priority Critical patent/WO2021073637A1/zh
Priority to EP20877281.4A priority patent/EP4036714A4/en
Priority to US17/720,797 priority patent/US20220236983A1/en
Application granted granted Critical
Publication of CN111176724B publication Critical patent/CN111176724B/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/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

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

Abstract

本申请公开了一种软件架构分析的计算机实现方法和装置。架构分析装置接收用户输入的架构模型,对架构模型内包括的多个模块进行分析,获得模块之间的调用关系。随后,根据用户输入的架构设置,将这多个模块划分入不同的层中,并且对多个模块之间的调用关系是否符合调用规则进行检测,将检测结果通过界面展示给用户。该方法提升了用户分析软件架构的效率,加快了软件架构优化的速度。

Description

一种软件架构分析的计算机实现方法及其装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种软件架构分析的计算机实现方法,以及执行该方法的装置以及计算机系统。
背景技术
用户在软件架构开发过程中,常需要将软件架构分层,以通过分层来实现业务复杂度、技术复杂度,以及业务内容的隔离。层内高内聚,层间低耦合,提高了软件架构的可复用性,使得软件架构易于维护。由于上述优点,分层架构是目前比较流行,而且应用比较广泛的架构模式。现有技术中,软件架构的开发人员对分层架构的管理手段效率低下。
发明内容
本申请提供了一种软件架构分析的计算机实现方法,提升了对软件架构分析和管理的效率。
本申请的第一方面提供了一种软件架构分析的计算机实现方法,该方法通过计算机实现,该方法包括以下步骤:
架构分析模块导入架构模型,所述架构模型包括多个模块,每个模块包括至少一个文件。每个文件可能对其他模块的文件进行调用,文件之间的调用也称之为文件所属的模块之间的调用。
架构分析模块对所述多个模块包括的文件进行分析,获得模块调用信息,所述模块调用信息包括所述多个模块之间的调用关系。
随后,架构分析模块获取架构设置,所述架构设置包括分层规则和调用规则,所述分层规则包括设置的多个层的信息以及多个层中每层包括的模块,所述调用规则包括位于不同层的模块之间的调用规则(层间调用规则)和/或每个层内包括的模块之间的调用规则(层内调用规则)。
架构分析模块根据所述分层规则和所述模块调用信息,指示显示驱动生成分层架构展示界面,所述分层架构展示界面中,每个模块被划分至包括该模块的层对应的区域内。
架构分析模块根据所述调用规则对所述模块调用信息进行检测,所述检测结果通过所述分层架构展示界面展示。也即架构分析模块指示显示驱动在分层架构展示界面展示检测结果。
通过架构分析模块对模块之间的调用关系进行分析,并且检测调用关系与调用规则之间的匹配程度,并且将检测结果可视化的展示在界面上,提升了架构分析和架构管理的效率,降低了架构分析和架构管理的难度。
在一种可能的实现方式中,获得模块调用信息后,架构分析模块还指示显示驱动生成模块调用关系界面,在模块调用关系界面上展示模块之间的调用关系。通过界面展示模块调用关系界面,使得用户可以直观的获取架构模型中模块的调用关系,降低了架构分析的操作难度。
在一种可能的实现方式中,所述设置的多个层的信息包括每个层的序号;所述分层架构展示界面中,每个层的位置根据层的序号设置。例如,序号越小的层在分层架构展示界面中越靠下,或者序号越大的层在分层架构展示界面中越靠下。
在一种可能的实现方式中,所述设置的多个层的信息还包括每个层的身份I D,所述分层架构展示界面中,每个层的I D设置在各层对应的区域内。
在一种可能的实现方式中,所述对所述多个模块包括的文件进行分析,获得模块调用信息包括:统计每个模块包括的文件调用其他模块包括的文件的次数,获得所述多个模块之间的调用次数。通过统计多个模块之间的调用次数,便于有效地对模块之间的调用情况进行管理。
在一种可能的实现方式中,在所述分层架构展示界面中,展示所述多个模块之间的调用次数。采用可视化的方式显示多个模块之间的调用次数,能够更好地对模块之间的调用进行管理。
进一步的,将模块之间的调用次数也展示在界面中,使得用户可以更加直观、快速的获得架构的分析结果,提升了后续架构管理的效率。
在一种可能的实现方式中,所述分层架构展示界面中,所述多个模块之间的调用关系通过箭头展示。那么,所述将检测结果通过所述分层架构展示界面展示包括:在所述分层架构展示界面中,变化违反所述调用规则的模块之间的调用对应的箭头的颜色和/或格式。此种情况下,如果模块调用信息还包括所述多个模块之间的调用次数,调用次数可以显示在箭头上。
通过可视化的图形来表现模块之间的调用关系,进一步的提升了架构分析结果的可读性,降低了架构分析和管理的复杂度。
在一种可能的实现方式中,所述位于不同层的模块之间的调用规则包括以下任意一种或多种:邻层调用规则、跨层调用规则、反向调用规则。
其中,邻层调用规则指示是否允许位于层序号相邻的层内的模块之间的调用。跨层调用规则指示是否允许位于不相邻的层序号的层内的模块之间的调用。反向调用规则指示是否允许软件架构中靠下的层内的模块调用软件架构中靠上的层内的模块。同时,前述层内调用规则指示是否允许位于同一层内的模块之间的调用。
调用规则一般是用户根据软件架构设计的需求来制定的,通过本申请提供的方法,用户可以在检测结果中看到架构模型和设计需求之间的符合程度,以便后续完善架构模型。
在一种可能的实现方式中,架构分析模块还可以对环形调用进行检测,并将环形调用的检测结果通过所述分层架构展示界面展示。模块间的环形调用指示一个模块被该模块调用的模块所调用。
在一种可能的实现方式中,所述分层架构展示界面中,相邻层对应的区域的颜色不同。
在一种可能的实现方式中,所述分层架构展示界面中,相邻层对应的区域的纹理不同。
相邻层对应区域采用不同的表现方式(颜色和/或纹理),更加方便用户在界面中区分不同的区域,提升了架构管理效率。
本申请的第二方面提供了一种软件架构分析装置,包括:模块分析单元、架构设计单元和规则检测单元。
模块分析单元,用于导入架构模型,所述架构模型包括多个模块,每个模块包括至少一个文件;对所述多个模块包括的文件进行分析,获得模块调用信息,所述模块调用信息包括所述多个模块之间的调用关系。
架构设计单元,用于获取架构设置,所述架构设置包括分层规则和调用规则,所述分层规则包括设置的多个层的信息以及多个层中每层包括的模块,所述调用规则包括位于不同层的模块之间的调用规则和/或每个层内包括的模块之间的调用规则;根据所述分层规则和所述模块调用信息,指示显示驱动生成分层架构展示界面,所述分层架构展示界面中,每个模块被划分至包括该模块的层对应的区域内。
规则检测单元,用于根据所述调用规则对所述模块调用信息进行检测,将所述检测结果通过所述分层架构展示界面展示。规则检测单元根据检测结果,指示显示驱动在分层架构展示界面中展示检测结果。
在一种可能的实现方式中,所述设置的多个层的信息包括每个层的序号;所述分层架构展示界面中,每个层的位置根据层的序号设置。
在一种可能的实现方式中,所述模块分析单元,用于统计每个模块包括的文件调用其他模块包括的文件的次数,获得所述多个模块之间的调用次数。
在一种可能的实现方式中,在所述分层架构展示界面中,展示所述多个模块之间的调用次数。
所述模块分析单元,用于统计每个模块包括的文件调用其他模块包括的文件的次数,获得所述多个模块之间的调用次数。
在一种可能的实现方式中,所述分层架构展示界面中,所述多个模块之间的调用关系通过箭头展示。
在一种可能的实现方式中,所述规则检测单元还用于:指示显示驱动在所述分层架构展示界面中,变化违反所述调用规则的模块之间的调用对应的箭头的颜色和/或格式。
在一种可能的实现方式中,所述位于不同层的模块之间的调用规则包括以下任意一种或多种:邻层调用规则、跨层调用规则、反向调用规则。
在一种可能的实现方式中,所述分层架构展示界面中,相邻层对应的区域的颜色不同。
在一种可能的实现方式中,所述分层架构展示界面中,相邻层对应的区域的纹理不同。
第二方面以及第二方面的各种可能的实现方式和第一方面以及第一方面的各种可能的实现方式是对应的,故第二方面及其各种可能的实现方式的技术效果在此不再赘述。
本申请的第三方面提供了一种计算机系统,包括至少一个计算机,每个计算机包括处理器和存储器。这至少一个计算机的处理器,用于访问这至少一个计算机的存储器中的指令执行第一方面及其可能的实现方式提供的方法。
本申请的第四方面提供了一种非瞬态的计算机可读存储介质,该非瞬态的可读存储介质中存储的指令被计算机系统执行时,该计算机系统执行前述第一方面及其可能的实现方式提供的方法。该存储介质中存储了程序指令。该存储介质包括但不限于易失性存储器,例如随机访问存储器,和非易失性存储器,例如快闪存储器、硬盘(hard disk drive,HDD)、固态硬盘(solid state drive,SSD)。
本申请的第五方面提供了一种计算机程序产品,该计算机程序产品包含的指令被计算机系统执行时,该计算机系统执行前述第一方面及其可能的实现方式提供的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面及其可能的实现方式提供的方法的情况下,可以下载该计算机程序产品并在计算机系统上执行该计算机程序产品包含的指令。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需要使用的附图作以简单地介绍。
图1为本申请提供的软件架构分析系统的架构示意图;
图2为本申请提供的另一软件架构分析系统的架构示意图;
图3为本申请提供的软件架构分析方法的流程示意图;
图4为本申请提供的模块调用信息展示界面的示意图;
图5为本申请提供的架构设置界面的示意图;
图6为本申请提供的分层架构展示界面的示意图;
图7为本申请提供的另一分层架构展示界面的示意图;
图8为本申请提供的另一分层架构展示界面的示意图;
图9为本申请提供的用于运行软件架构分析系统的计算机的结构示意图;
图10为本申请提供的用于运行软件架构分析系统的计算机系统的结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方法进行描述。
参考图1,本申请提供的软件架构分析系统100包括输入输出(input output,IO)驱动102,显示驱动104,架构分析装置106。其中,架构分析装置106包括模块分析单元1062、架构设计单元1064、规则检测单元1066、报告生成单元1068。前述各装置以及单元可以是软件装置/单元,各装置以及单元的功能通过软件指令实现。其中,IO驱动102用于管理计算机的IO设备,通过IO设备接收用户输入的各类信息。显示驱动104具有根据各类信息渲染界面以及控制显示设备显示渲染结果的能力。
进一步的,软件架构分析系统100中的各个装置有两种部署方式。第一种部署方式中,IO驱动102,显示驱动104,架构分析装置106均部署在相同的计算机中。第一种部署方式常见于将软件分析系统100作为一个软件分析工具提供给用户使用,用户在本地计算机部署了整个软件架构分析系统100。
第二种部署方式中,如图2提供的计算机系统中,每个计算机202中部署有IO驱动102和显示驱动104,计算机204集群中部署有架构分析装置106。计算机202通过通信网络和计算机204集群连接。其中,计算机202为用户侧的计算机,计算机204集群为远端的计算机。其中,计算机可以是例如,智能电话(smart phone)、个人数字助理(personal digitalassistant,PDA)、平板型电脑、膝上型电脑(laptop computer)、个人电脑(personalcomputer,PC)、服务器等。通信网络可以是有线的通信网络,也可以是无线的通信网络,例如:第五代移动通信技术(5th-Generation,5G)系统,长期演进(long term evolution,LTE)系统、无线保真(wireless fidelity,WiFi)。
第二种部署方式中,每个计算机204中可以部署模块分析单元1062、架构设计单元1064、规则检测单元1066、报告生成单元1068。或者,每个计算机204中部署模块分析单元1062、架构设计单元1064、规则检测单元1066、报告生成单元1068中的一部分,计算机204集群中部署有架构分析装置106的全部单元。计算机204集群整体为用户侧的计算机202提供架构分析装置106的功能。此种情况下,架构分析装置106分布式运行在多个计算机204上,提供了性能更强的架构分析服务。第二种部署方式常见于将架构分析服务作为一个远程服务,例如云服务,提供给用户使用,用户仅需在本地计算机部署IO驱动102和显示驱动104就可以获得架构分析服务。IO驱动102和显示驱动104属于该架构分析服务的客户端的一部分。
以下,结合图3至图8介绍了一种软件架构分析方法。
步骤402,IO驱动102接收用户输入的架构模型,将架构模型发送至模块分析单元1062。架构模型包括软件开发过程生成的软件架构相关信息。架构模型包括了软件架构的多个模块,其中,每个模块包括的文件记录了该文件对其他模块内的文件的调用。
模块是组件(component)/服务(service)等具有一定功能的软件代码集合。其中,示例性的,组件可以是C/C++语言中通过逻辑划分的独立个体,组件内包括的文件可以是.h文件,.so文件,或是.dll文件等。其中,服务,是指在服务化场景下,可以独立部署运行的模块。服务之间互相协调、互相配合,为用户提供一个逻辑业务功能。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTfulAPI)。
每个模块包括至少一个文件。一个模块包括的文件可能对其他模块中的文件进行调用。例如,A模块中包括头文件,例如math.h、stdio.h,而B模块的文件中调用了这两个头文件,例如B模块的文件中通过“#include<stdio.h>”和“#include<math.h>”指令对math.h、stdio.h文件进行调用。此种情况下,称B模块中的文件对A模块中的文件进行了2次调用,也称之为B模块对A模块进行了2次调用。后续的附图中,B模块对A模块的调用通过一个从B模块指向A模块的箭头指示。由于一个模块中可以包括一个或多个文件,每个文件又可能对其他模块中的一个或多个文件进行调用,因此一个模块可以一次或多次调用另一个模块。模块分析单元1062统计每个模块包括的文件调用其他模块包括的文件的次数,获得多个模块之间的调用次数。例如,B模块中包括10个文件,这10个文件中的每个文件均调用了math.h、stdio.h文件,则B模块调用了20次A模块。后续的附图中,展示B模块对A模块的调用的箭头上的数字,指示B模块对A模块的调用的次数。
步骤404,模块分析单元1062导入该架构模型,对该架构模型进行分析,获得架构模型中的模块调用信息,模块调用信息包括模块之间的调用关系。
可选的,模块调用信息中还包括模块之间的调用次数。
步骤404后,可选的,可以执行步骤4041和步骤4042。
步骤4041,模块分析单元1062根据步骤404中的分析结果生成模块调用信息,将模块调用信息发送至显示驱动104。
步骤4042,显示驱动104根据模块调用信息生成模块调用信息展示界面,在计算机202的显示设备上显示该模块调用信息展示界面。
如图4所示,模块调用信息展示界面中通过箭头展示了模块之间的调用关系,以该图中模块1和模块3之间的调用关系为例,模块1和模块3之间有一个箭头(箭头从模块1指向模块3),并且标注调用次数为78,说明模块1调用模块3总共78次。
可选的,步骤404中的模块分析单元1062获得的分析结果还包括模块之间的调用次数的情况下,模块调用信息展示界面中还通过箭头上的数字展示了模块之间的调用次数。
通过模块分析单元1062获取模块调用信息后,将模块调用信息通过界面展示用户,提升了用户对于架构模型的了解程度,降低了用户分析软件架构的成本。
步骤406,IO驱动102接收用户输入的架构设置,将架构设置发送至架构设计单元1064。
为了实现进一步对模块的管理,用户需要将架构模型中包括的模块进行分层管理。一般,每一层内包括的模块的功能类似,每一层内的模块集合向用户实现了一个逻辑功能。
一种常见的分层方法包括4层架构,包括:表示层,应用层,业务逻辑层,持久层。其中,表示(user interface,UI)层,用于接收用户的请求,向用户返回数据,为用户提供一种交互式操作的界面等。应用层(也称为服务层),用于将表现层与业务逻辑层之间完成解耦。业务逻辑(business logic,BL)层(也称为领域层),用于将用户的请求具体化,也即将用户的请求解析成对数据访问层的具体操作。数据访问(data access,DA)层(也称为持久化层),用于执行业务逻辑层解析出来的具体操作。数据访问层作为架构中的底层,一般包括数据库、文件系统等模块。
另一种常见的分层方法包括3层架构,包括:数据访问层、业务逻辑层、表示层。后续附图中采用3层架构进行展示。3层架构中的业务逻辑层可以由4层架构中的应用层与业务逻辑层合并而成。
实际的架构分层方法有多种,根据不同的业务需求以及用户设计习惯,总层数、层序号、层身份(identity,ID)、每层的功能均可以变化。
架构设置包括了步骤402中导入至架构分析装置106的架构模型包括的分层规则和调用规则。其中,分层规则包括设置的多个层的信息,例如层序号、层ID,以及多个层中每层包括的模块。
一个层的层序号用于指示该层在软件架构中位置。架构分析装置106根据层序号设置每个层在分层架构展示界面中的位置。例如UI层的序号为3、BL层的序号为2、DA层的序号为1,此种编号规则下,层序号越大的层越靠近用户,层序号越小的层越远离用户,越靠近底层。再例如,UI层的序号为1、BL层的序号为2、DA层的序号为3,此种编号规则下,层序号越小的层越靠近用户,层序号越大的层越远离用户,越靠近底层。下文中示例性的采用前一种编号规则。分层规则中每层包括的模块用于将步骤402中获取的架构模型中包括的模块划分至各个层,一般层ID和每层包括的模块在架构设置中对应记录,例如层ID 1:模块1/模块2/模块3。指示ID为1的层内包括模块1、模块2、模块3。
其中,调用规则包括了位于不同层的模块之间的调用规则和/或每个层内包括的模块之间的调用规则。其中,每个层内包括的模块之间的调用规则也称之为层内调用规则。不同层的模块之间的调用规则以下中的任意一个或多个:邻层调用规则、跨层调用规则、反向调用规则。按照实际软件架构的设计需求,调用规则还可以包括其他指示同层/不同层内的模块之间调用的规则。其中,层内调用规则指示是否允许位于同一层内的模块之间的调用。邻层调用规则指示是否允许位于层序号相邻的层内的模块之间的调用。跨层调用规则指示是否允许位于不相邻的层序号的层内的模块之间的调用。反向调用规则指示是否允许软件架构中靠下的层内的模块调用软件架构中靠上的层内的模块,在前述前一种编号规则中,软件架构中靠下的层的序号更小。
在一种实现方式中,用户可以通过IO驱动102将携带架构设置的指令,例如应用程序接口(application programming interface,API)指令,发送至架构设计单元1064。
如图5所示,在另一种实现方式中,架构设计单元1064指示显示驱动104生成架构设置界面。在架构设置界面内,用户可以用过可视化界面编辑的输入架构设置,以方便用户快速地对层序号、层ID、每层包括的模块,以及调用规则进行设置。例如,用户点击架构设置界面的层序号栏内的“+”符号,架构设置界面将会自动生成下一层序号对应的一行配置。每一层序号对应的行内,客户可以输入层ID和调用规则。进一步的,用户点击某一层ID后,架构设置界面将会弹出模块配置子界面,在模块配置子界面内,用户可以将步骤402中导入的每个模块对应到某一层ID。因此,通过模块配置子界面,用户可以配置每层包括的模块。
图5中,用户已经设置了DA层、BL层和UI层,层序号分别为1、2和3。DA层的调用规则为不允许层内调用、允许邻层调用、不允许跨层调用、不允许反向调用。BL层的调用规则为允许层内调用、允许邻层调用、不允许反向调用。由于软件架构只有3层,因此BL层不存在跨层调用的可能,因此BL层对应的允许跨层调用栏内为Null(空)。UI层的调用规则为允许层内调用、允许邻层调用、不允许跨层调用。由于软件架构中UI层为顶层,不存在反向调用更高层的可能,因此允许反向调用栏内为Null。
图5中,用户点击了层ID列的BL后,进入BL层的模块配置子界面。在模块配置子界面中,可以看到部分模块已经被分配给UI层和DA层,因此,用户可以将剩余的模块分配给BL层。具体的分配方法可以是在模块ID对应的所属层ID内填入BL。下文的实例中,以架构模块包括模块1至模块9,其中,UI层包括模块1、模块4、模块6,BL层包括模块2、模块8、模块7,DA层包括模块5、模块3、模块9为示例进行介绍。
步骤408,架构设计单元1064根据模块调用信息和分层规则指示显示驱动104生成分层架构展示界面。
分层架构展示界面中,根据层序号和层ID划分出不同层对应的区域。每层包括的模块设置于该层的区域中。一般越靠近用户的层对应的区域在分层架构展示界面中越高的位置。如图6中,分层架构展示界面包括UI层区域、BL层区域和DA层区域。图4中的模块的部署位置根据架构设置中的每层包括的模块重新被部署,图4中模块之间的调用关系以及模块之间的调用次数在图6中被继承。
可选的,相邻的层区域可用不同的颜色表示(图未示出)。不相邻的层区域可以用相同的颜色表示(图未示出)。用不同的颜色表示相邻层对应的区域提升了用户的使用体验,更方便用户区别不同层区域。
可选的,相邻的层区域可用不同的背景纹理表示(图未示出)。不相邻的层区域可以用相同的背景纹理表示(图未示出)。用不同的背景纹理表示相邻层区域提升了用户的使用体验,更方便用户区别不同层区域。
可选的,相邻的层区域间可以包括空白区域,以方便用户区别不同的层区域。
以上通过颜色、纹理、空白区域的方式在分层架构展示界面中表示不同的区域的方式可以任意组合,可以单独使用颜色、纹理、空白区域中的任意一种,也可以组合使用颜色、纹理、空白区域中的任意两种或者三种。
分层架构展示界面还包括操作区域,操作区域内包括至少一个操作入口。操作入口包括以下任意一个或多个:违规调用、报告生成。用户点击不同的操作入口会触发规则检测单元1066检测模块执行不同的动作。
进一步的,鉴于对该软件架构进行分析的用户可能对模块间的环形调用感兴趣,因此在操作区域内可能提供环形调用操作入口。其中,模块间的环形调用指示一个模块被该模块调用的模块所调用,也即两个模块均包括被对方模块调用的文件,从而形成一个环。以图4中的模块调用关系展示界面为例,模块1和模块2互为调用关系,即模块1和模块2均包含被对方模块所调用的文件,从而模块1和模块2之间形成环形调用。
步骤410,规则检测单元1066根据用户在分层架构展示界面的操作区域内点击的不同操作入口对模块调用信息进行检测,并指示显示驱动104将检测结果提供给该用户。
可选的,如图7所示,如果用户在配置区域点击了环形调用,则规则检测单元1066根据模块调用信息,检测是否有两个模块之间存在环形调用。如果有两个模块之间存在环形调用,则指示显示驱动104在分层架构展示界面内展示该检测结果。例如,在分层架构展示界面内弹出对话框,在对话框内显示存在环形调用的模块ID。再例如,在分层架构展示界面内将存在环形调用的模块变色。再例如,在分层架构展示界面内将存在环形调用的模块之间的箭头变色。再例如,在分层架构展示界面内将存在环形调用的模块之间的箭头的格式变化,比如由实线变为虚线。图7中,由于模块1和模块2之间存在环形调用,用户点击环形调用后,模块1和模块2之间的箭头的由实线变为虚线。
可选的,如图8所示,如果用户在配置区域点击了违规调用,则规则检测单元1066根据模块调用信息,检测是否有两个模块之间存在不符合调用规则的调用。如果有两个模块之间存在不符合调用规则的调用,则指示显示驱动104在分层架构展示界面内展示该检测结果。例如,在分层架构展示界面内弹出对话框,在对话框内显示存在不符合调用规则的调用的模块ID以及具体不符合哪条调用规则。再例如,在分层架构展示界面内将存在不符合调用规则的调用的模块变色。再例如,在分层架构展示界面内将存在不符合调用规则的调用的模块之间的箭头变色。再例如,在分层架构展示界面内将存在不符合调用规则的调用的模块之间的箭头的格式变化,比如由实线变为虚线。本领域技术人员可以理解,用来在分层架构展示界面内展示不符合调用规则的调用还可以通过上述不同举例的组合来实现,另外还存在上述举例之外的其他的等同实现方式。
图8中,由于模块2对模块1的调用不符合BL层的不允许反向调用的调用规则,用户点击违规调用后,模块2对模块1调用的箭头的由实线变为虚线。由于模块8对模块6的调用不符合BL层的不允许反向调用的调用规则,用户点击违规调用后,模块8对模块6调用的箭头的由实线变为虚线。由于模块1对模块3的调用不符合UI层的不允许跨层调用的调用规则,用户点击违规调用后,模块1对模块3调用的箭头的由实线变为虚线。由于模块4对模块9的调用不符合UI层的不允许跨层调用的调用规则,用户点击违规调用后,模块4对模块9调用的箭头的由实线变为虚线。由于模块3对模块9的调用不符合DA层的不允许层内调用的调用规则,用户点击违规调用后,模块3对模块9调用的箭头的由实线变为虚线。
以上在分层架构展示界面内展示该检测结果的方式仅为一种示例,在具体的实现中,还可以通过其他方式将检测结果提供给用户。
可选的,如果用户在配置区域点击了报告生成,则规则检测单元1066根据模块调用信息和调用规则,指示显示驱动104生成检测报告,并将检测报告提供给该用户。检测报告中可以包括以下任意一种或多种:模块调用信息、环形调用的检测结果、违规调用的检测结果、模块之间调用关系的修改建议。
步骤404后可以先执行步骤4041和步骤4012后再执行步骤406至步骤410,即先向用户显示模块调用信息展示界面,再向用户显示分层架构展示界面。步骤404后也可以不执行步骤4041和步骤4012后直接执行步骤406至步骤410,即不必向用户显示模块调用信息展示界面,直接获取架构设置,并根据架构设置向用户显示分层架构展示界面。
通过分层架构展示界面将模块分层的展示在不同的层区域,并且将调用规则的检测结果也通过界面展示给用户,使得用户可以直观的获取架构模型和架构设置之间的差异,降低了用户分析软件架构的成本,提升了架构模块的更新速度。
步骤410后,用户可以通过检测结果清晰的看出其开发的架构模型和其设计的调用规则和模块分层之间存在的冲突,进而可以根据检测结果对架构模型进行修改。进一步的,用户可以将修改后的架构模型重新通过IO驱动102输入至模块分析单元1062中,以对修改后的架构模型重新执行图3提供的软件架构分析方法,进一步确定修改后的架构模块是否符合用户的设计。此种情况下,架构分析装置106可以同时向用户提供修改前和修改后的架构模型对应的模块调用信息展示界面和分析架构展示界面。
图9提供了一种计算机202。计算机系统中部署了至少一个图9提供的计算机202。该计算机202运用于前述第一种部署方式中。计算机202包括总线2023、处理器2021、通信接口2022、显示设备2025和存储器2024。处理器2021、存储器2024、显示设备2025和通信接口2022之间通过总线2023通信。通信接口2022用于与外部通信,例如接收架构模型和架构设置,并将架构模型存入存储器2024中。
其中,处理器2021可以采用通用的中央处理器(英文:central processing unit,缩写:CPU),或者现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件来实现。存储器2024可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random access memory,缩写:RAM)。存储器2024还可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器,HDD或SSD。
存储器2024中存储有可执行指令,处理器2021执行该可执行指令以执行前述图3提供的软件架构分析方法。具体的,存储器2024中存储可执行指令,以运行前述IO驱动102、显示驱动104、架构分析装置106及其单元。存储器2024还可以包括运行计算机202操作系统所需的可执行指令。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。
显示设备2025可以是显示器,用于向用户提供各类界面。计算机202还可以包括各类IO设备,用于接收架构设置。IO驱动102为IO设备的驱动。显示驱动104为显示设备2025的驱动。
图10提供了一种计算机系统。该计算机系统运用于前述第二种部署方式中。该计算机系统运包括至少一个计算机202和至少一个计算机204。计算机204和计算机202间通过通信网络连接。
图10中的计算机202的硬件结构与图9类似。不同的是,在图10的计算机202中仅运行了IO驱动102和显示驱动104。也即图10中的存储器2024中存储有可执行指令,处理器2021执行该可执行指令以执行前述图3提供的软件架构分析方法中IO驱动102和显示驱动104执行的部分。具体的,存储器2024中存储可执行指令,以运行前述IO驱动102、显示驱动104。图10中计算机202的显示设备2025可以是显示器,用于向用户提供各类界面。计算机202还可以包括各类IO设备,用于接收架构设置。图10中计算机202的通信接口2022用于与计算机204通信。
计算机204包括总线2043、处理器2041、通信接口2042和存储器2024。处理器2041、存储器2044和通信接口2042之间通过总线2043通信。通信接口2042用于与计算机202通信,例如接收IO驱动102发送的架构模型和架构设置,以及将模块调用信息、架构设置、检测结果发送给计算机202的显示驱动104,以供显示驱动104生成各类界面以及检测结果。
其中,处理器2041可以采用通用的CPU,或者FPGA或者其他可编程逻辑器件来实现。存储器2044可以包括易失性存储器或非易失性存储器。存储器2044中存储有可执行指令,处理器2041执行该可执行指令以执行前述图3提供的软件架构分析方法中架构分析装置106及其单元执行的部分。具体的,存储器2044中存储可执行指令,以运行前述架构分析装置106及其单元。存储器2044还可以包括运行计算机204操作系统所需的可执行指令。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。
图10中的计算机系统中可以包括一个或多个计算机204。该计算机系统包括一个计算机204的时候,该计算机204运行了架构分析装置106的全部单元。该计算机系统包括多个计算机204的时候,在一种部署方式下,每个计算机204上运行了架构分析装置106的全部单元。该种部署方式下,每个计算机204均具有架构分析装置106的全部功能,当计算机202众多的时候,可以将众多的软件架构分析任务负载均衡给任一计算机204,提升了软件架构分析系统的分析容量和分析效率。或者,该计算机系统包括多个计算机204的时候,在另一种部署方式下,每个计算机204上运行了架构分析装置106的部分单元,这多个计算机204上运行了架构分析装置106的全部单元。该种部署方式下,每个计算机204部署部分单元,每个计算机204上运行的单元种类更少,避免了不同类型的单元之间的冲突,提升了软件架构分析系统的分析容量和分析效率。
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如SSD)等。

Claims (19)

1.一种软件架构分析的计算机实现方法,其特征在于,包括:
导入架构模型,所述架构模型包括多个模块,每个模块包括至少一个文件;
对所述多个模块包括的文件进行分析,获得模块调用信息,所述模块调用信息包括所述多个模块之间的调用关系;
获取架构设置,所述架构设置包括分层规则和调用规则,所述分层规则包括设置的多个层的信息以及多个层中每层包括的模块,所述调用规则包括位于不同层的模块之间的调用规则和/或每个层内包括的模块之间的调用规则;
根据所述分层规则和所述模块调用信息,指示生成分层架构展示界面,所述分层架构展示界面中,每个模块被划分至包括该模块的层对应的区域内;
根据所述调用规则对所述模块调用信息进行检测,将所述检测结果通过所述分层架构展示界面展示。
2.如权利要求1所述的方法,其特征在于,所述设置的多个层的信息包括每个层的序号;所述分层架构展示界面中,每个层的位置根据层的序号设置。
3.如权利要求1或2所述的方法,其特征在于,所述对所述多个模块包括的文件进行分析,获得模块调用信息包括:
统计每个模块包括的文件调用其他模块包括的文件的次数,获得所述多个模块之间的调用次数。
4.如权利要求3所述的方法,其特征在于,所述分层架构展示界面中,展示所述多个模块之间的调用次数。
5.如权利要求1至4任一所述的方法,其特征在于,所述分层架构展示界面中,所述多个模块之间的调用关系通过箭头展示。
6.如权利要求5所述的方法,其特征在于,所述将检测结果通过所述分层架构展示界面展示包括:
在所述分层架构展示界面中,变化违反所述调用规则的模块之间的调用对应的箭头的颜色和/或格式。
7.如权利要求1至6任一所述的方法,其特征在于,所述位于不同层的模块之间的调用规则包括以下任意一种或多种:邻层调用规则、跨层调用规则、反向调用规则。
8.如权利要求1至7任一所述的方法,其特征在于,所述分层架构展示界面中,相邻层对应的区域的颜色和/或纹理不同。
9.一种软件架构分析装置,其特征在于,包括:
模块分析单元,用于导入架构模型,所述架构模型包括多个模块,每个模块包括至少一个文件;对所述多个模块包括的文件进行分析,获得模块调用信息,所述模块调用信息包括所述多个模块之间的调用关系;
架构设计单元,用于获取架构设置,所述架构设置包括分层规则和调用规则,所述分层规则包括设置的多个层的信息以及多个层中每层包括的模块,所述调用规则包括位于不同层的模块之间的调用规则和/或每个层内包括的模块之间的调用规则;根据所述分层规则和所述模块调用信息,指示生成分层架构展示界面,所述分层架构展示界面中,每个模块被划分至包括该模块的层对应的区域内;
规则检测单元,用于根据所述调用规则对所述模块调用信息进行检测,所述检测结果通过所述分层架构展示界面展示。
10.如权利要求9所述的装置,其特征在于,所述设置的多个层的信息包括每个层的序号;所述分层架构展示界面中,每个层的位置根据层的序号设置。
11.如权利要求9或10所述的装置,其特征在于,所述模块分析单元,还用于统计每个模块包括的文件调用其他模块包括的文件的次数,获得所述多个模块之间的调用次数。
12.如权利要求11所述的装置,其特征在于,所述架构设计单元,还用于指示显示驱动在所述分层架构展示界面中,展示所述多个模块之间的调用次数。
13.如权利要求9至12任一所述的装置,其特征在于,所述分层架构展示界面中,所述多个模块之间的调用关系通过箭头展示。
14.如权利要求13所述的装置,其特征在于,所述规则检测单元还用于:指示显示驱动在所述分层架构展示界面中,变化违反所述调用规则的模块之间的调用对应的箭头的颜色和/或格式。
15.如权利要求9至14任一所述的装置,其特征在于,所述位于不同层的模块之间的调用规则包括以下任意一种或多种:邻层调用规则、跨层调用规则、反向调用规则。
16.如权利要求9至15任一所述的装置,其特征在于,所述分层架构展示界面中,相邻层对应的区域的颜色和/或纹理不同。
17.一种计算机系统,其特征在于,包括至少一个计算机,每个计算机包括处理器和存储器;所述至少一个计算机的处理器用于执行所述至少一个计算机的存储器中的指令,执行权利要求1至8任一所述的方法。
18.一种非瞬态的可读存储介质,其特征在于,所述非瞬态的可读存储介质中存储的指令被计算机系统执行时,所述计算机系统执行权利要求1至8任一所述的方法。
19.一种计算机程序产品,其特征在于,所述计算机程序产品包含的指令被计算机系统执行时,所述计算机系统执行权利要求1至8任一所述的方法。
CN201911399723.2A 2019-10-18 2019-12-30 一种软件架构分析的计算机实现方法及其装置 Active CN111176724B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/CN2020/121893 WO2021073637A1 (zh) 2019-10-18 2020-10-19 一种软件架构分析的计算机实现方法及其装置
EP20877281.4A EP4036714A4 (en) 2019-10-18 2020-10-19 COMPUTER IMPLEMENTED METHOD FOR SOFTWARE ARCHITECTURE ANALYSIS, AND RELATED DEVICE
US17/720,797 US20220236983A1 (en) 2019-10-18 2022-04-14 Computer Implementation Method for Software Architecture Analysis and Software Architecture Analysis Apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2019109949452 2019-10-18
CN201910994945 2019-10-18

Publications (2)

Publication Number Publication Date
CN111176724A true CN111176724A (zh) 2020-05-19
CN111176724B CN111176724B (zh) 2022-06-28

Family

ID=70658468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911399723.2A Active CN111176724B (zh) 2019-10-18 2019-12-30 一种软件架构分析的计算机实现方法及其装置

Country Status (4)

Country Link
US (1) US20220236983A1 (zh)
EP (1) EP4036714A4 (zh)
CN (1) CN111176724B (zh)
WO (1) WO2021073637A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021073637A1 (zh) * 2019-10-18 2021-04-22 华为技术有限公司 一种软件架构分析的计算机实现方法及其装置
WO2023217158A1 (zh) * 2022-05-10 2023-11-16 中国第一汽车股份有限公司 一种车载系统应用管理方法、架构、车辆及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130305224A1 (en) * 2012-05-08 2013-11-14 Siemens Industry, Inc. Rules Engine for Architectural Governance
CN105745620A (zh) * 2013-12-31 2016-07-06 北京新媒传信科技有限公司 软件架构的实现方法和实现平台
CN109492144A (zh) * 2018-09-26 2019-03-19 平安科技(深圳)有限公司 软件系统的关联关系分析方法、装置和存储介质
CN109491728A (zh) * 2018-10-25 2019-03-19 基石酷联微电子技术(北京)有限公司 基于有限状态机的软件架构系统
CN110221929A (zh) * 2019-06-19 2019-09-10 上海缤游网络科技有限公司 一种服务化软件系统架构及其应用方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1671268A4 (en) * 2003-09-19 2006-12-06 Lattix Inc DEVICE AND METHOD FOR MANAGING THE DESIGN OF A SOFTWARE SYSTEM USING A DEPENDENCE STRUCTURE
CN101281466A (zh) * 2008-05-27 2008-10-08 北京中企开源信息技术有限公司 基于业务本体特征的业务对象建模方法
US20100058288A1 (en) * 2008-09-03 2010-03-04 Alexander Von Zitzewitz Method And System for Structuring a Software Implementation
US9716632B2 (en) * 2010-08-24 2017-07-25 Hewlett Packard Enterprise Development Lp Interactive layered visualization of a layered software architecture
CN102722362B (zh) * 2011-03-31 2016-08-17 新奥特(北京)视频技术有限公司 一种结构化与saam方法结合的软件架构分析设计方法
US20130060824A1 (en) * 2011-09-01 2013-03-07 Computer Associates Think, Inc. System for embedded knowledge management
US10503907B2 (en) * 2015-12-14 2019-12-10 Fmr Llc Intelligent threat modeling and visualization
CN107103244B (zh) * 2017-05-12 2020-04-17 天津大学 基于AADL的Web应用架构安全性的评估方法
EP3493051A1 (en) * 2017-11-30 2019-06-05 The MathWorks, Inc. System and methods for evaluating compliance of implementation code with a software architecture specification
US11403313B2 (en) * 2018-07-23 2022-08-02 Jpmorgan Chase Bank, N.A. Dynamic visualization of application and infrastructure components with layers
CN110858141B (zh) * 2018-08-23 2023-07-28 西门子股份公司 分层架构软件中代码评估方法、装置及存储介质
US11194688B1 (en) * 2019-05-08 2021-12-07 Amazon Technologies, Inc. Application architecture optimization and visualization
CN111176724B (zh) * 2019-10-18 2022-06-28 华为云计算技术有限公司 一种软件架构分析的计算机实现方法及其装置
US20230199504A1 (en) * 2021-12-22 2023-06-22 Pra Audio Systems, Inc. Wireless audio distribution systems and methods

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130305224A1 (en) * 2012-05-08 2013-11-14 Siemens Industry, Inc. Rules Engine for Architectural Governance
CN105745620A (zh) * 2013-12-31 2016-07-06 北京新媒传信科技有限公司 软件架构的实现方法和实现平台
CN109492144A (zh) * 2018-09-26 2019-03-19 平安科技(深圳)有限公司 软件系统的关联关系分析方法、装置和存储介质
CN109491728A (zh) * 2018-10-25 2019-03-19 基石酷联微电子技术(北京)有限公司 基于有限状态机的软件架构系统
CN110221929A (zh) * 2019-06-19 2019-09-10 上海缤游网络科技有限公司 一种服务化软件系统架构及其应用方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JASON MCC. SMITH: "Elemental Design Patterns: A Formal Semantics for Composition of OO", 《IEEE》 *
WEIXIN_34095889: "干货:软件架构分析详解", 《CSDN》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021073637A1 (zh) * 2019-10-18 2021-04-22 华为技术有限公司 一种软件架构分析的计算机实现方法及其装置
WO2023217158A1 (zh) * 2022-05-10 2023-11-16 中国第一汽车股份有限公司 一种车载系统应用管理方法、架构、车辆及介质

Also Published As

Publication number Publication date
EP4036714A4 (en) 2022-11-09
EP4036714A1 (en) 2022-08-03
WO2021073637A1 (zh) 2021-04-22
CN111176724B (zh) 2022-06-28
US20220236983A1 (en) 2022-07-28

Similar Documents

Publication Publication Date Title
US10481875B2 (en) Generation of an application from template
US10986134B2 (en) Methods and apparatus for graphical user interface environment for creating threat response courses of action for computer networks
CN108292231B (zh) 从数据生成应用的方法和系统
US8560819B2 (en) Software execution using multiple initialization modes
US10719964B2 (en) System and method for graphically displaying recommended mappings in an integration cloud service design time
US20180275845A1 (en) Dashboard Creation With Popular Patterns and Suggestions Using Analytics
US10996997B2 (en) API-based service command invocation
US9451033B2 (en) Enhanced command selection in a networked computing environment
US20220236983A1 (en) Computer Implementation Method for Software Architecture Analysis and Software Architecture Analysis Apparatus
US20200125336A1 (en) System and method for enhancing component based development models with auto-wiring
CN109451028B (zh) 一种基于适配器技术的云管理系统
US10608953B2 (en) Platform with multiple execution engines
US20160274874A1 (en) Method and apparatus for processing request
US20210203714A1 (en) System and method for identifying capabilities and limitations of an orchestration based application integration
CN106502760A (zh) 一种虚拟机亲和性策略可视化的方法及装置
CN114185750A (zh) 流程监控方法、装置、设备及存储介质
US20190205182A1 (en) Unified monitoring interface
US20160357826A1 (en) System and method for providing recommended mappings for use by a mapper in an integration cloud service design time
US20120084683A1 (en) Seamless Integration of Additional Functionality into Enterprise Software without Customization or Apparent Alteration of Same
CN112631696B (zh) 服务的编排方法、编排装置、处理器与服务的编排系统
US11132374B2 (en) Property painter
US11809301B2 (en) Techniques for large-scale functional testing in cloud-computing environments
US11949761B2 (en) Techniques for distributed interface component generation
US11050643B2 (en) Method for managing software service, and server
CN112817573B (zh) 用于构建流式计算应用的方法、装置、计算机系统和介质

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220222

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant