APP下载

面向SOA的程序模型变换系统架构方法研究

2016-11-10雷鹏飞刘建宾

土木建筑工程信息技术 2016年4期
关键词:架构程序模型

雷鹏飞 刘建宾

(北京信息科技大学计算机学院,北京 100101)



面向SOA的程序模型变换系统架构方法研究

雷鹏飞刘建宾

(北京信息科技大学计算机学院,北京100101)

针对传统程序模型变换系统存在的复用性差、并发处理能力弱、不跨平台等问题,将SOA的架构和MDA的思想应用到程序模型变换,给出面向SOA的系统功能结构、逻辑架构,以及基本和复合变换服务模块的设计,并对基于元模型的程序模型转换框架和采用的ATL模型变换方法进行了分析和论述。实现的系统应用表明该架构方法具有可扩展性、跨平台、支持并发处理等特点。

面向服务的体系架构; 程序模型变换; 模型驱动架构; 元模型; 系统架构方法

【DOI】 10.16670/j.cnki.cn11-5823/tu.2016.04.11

引言

程序模型变换是模型驱动开发的关键技术。模型驱动架构MDA(Model Driven Architecture)[1]是以建模和模型变换为核心的新一代模型驱动软件开发方法的规范,它通过将业务模型与实现技术相分离,以提高软件的可重用性和可移植性,体现将业务分析与业务实现相分离的理念[2]。

在程序模型转换应用方面,目前存在多种不同的模型转换工具和基于传统应用架构下开发的模型转换系统[3]。然而这些传统程序模型变换工具和变换系统普遍存在单机运行效率低、难以复用,系统资源浪费、不能跨平台等问题,不能有效地支持大规模的并发处理,对模型驱动开发的支持能力十分有限。

面向服务的体系架构SOA(Service Oriented Architecture)的程序模型变换系统设计强调以变换服务为中心,通过将各种变换活动转化为具有统一接口标准的服务,利用处理流程对相应的程序模型变换服务进行组合,来满足变换功能的变化,同时使原来封闭系统变为开放系统,实现程序模型变换系统与外部环境之间的无缝链接。面向SOA的程序模型变换服务不是集中在一台宿主机上,而是分布在不同的宿主机上,它们都是以接口的形式向外提供服务,实现了应用和处理的分离,在使用变换服务时无须关注服务提供的具体位置。在软件复杂度和开发需求量日益增长的现实背景下,对大量复杂应用进行程序模型转换时,传统单机程序模型变换系统难以满足开发维护需求。因此,构建面向SOA变换服务的程序模型变换系统十分必要。因为一方面可以动态配置运行所需的硬件资源,实现硬件资源的有效利用; 另一方面,还可以把变换任务分解到不同的计算结点上,实现分布式的并发处理[4]; 更重要是可以利用现有的遗产工具系统成果,避免资源浪费。

1 SOA与程序模型变换的基本概念

1.1SOA

面向服务的体系结构,是以强调以服务为中心的组件模型,通过服务之间良好的接口和契约,将应用程序的不同功能单元联系起来。接口定义的方式是中立的,它独立于实现的编程语言、操作系统和硬件平台,这使得应用系统中的服务可以以一种统一的方式进行交互[5]。

这种以中立的方式定义接口称为服务之间的松耦合,由于这些中立定义的接口没有绑定到特定的实现上,这使它适应变换特别灵活,并且当某个服务的实现和内部结构发生改变时,不影响其他服务的。

1.2程序模型变换

程序模型变换的概念,结合文献[6]给出如下定义:

(1)程序模型变换规则:对程序源模型和程序目标模型的模型元素之间如何变换的一种描述。

(2)程序模型变换:作为输入数据的程序源模型经过转换工具和一组程序模型转换规则的作用产生目标程序模型,该目标程序模型作为输出数据[7]。程序模型转换规则描述了二者之间的变换映射,转换规则必须结合转换工具才可以产生变换的效果。

图1 过程蓝图三层模型的转换过程

过程蓝图[8]是一种可视化、分层描述程序行为过程的多阶段一体化建模语言,具有抽象概念结构图(Abstract Concept Structure Diagram,ACSD)、抽象逻辑结构图(Abstract Logic Structure Diagram,ALSD)、抽象实现结构图(Abstract Implementation Structure Diagram,AISD)[9]三层抽象外部视图,分别对应程序在概念、逻辑和实现三个抽象层次上的模型表示。其中ACSD是与平台无关的,ALSD和AISD是与平台相关的。过程蓝图的三层抽象模型之间通过程序模型转换规则和转换工具的作用,可以正向和逆向转换。由于过程蓝图具有阶段制品一致性和开发过程平滑过渡的优点,通过程序模型转换,得到过程蓝图三种抽象层次的程序制品,有效实现程序的敏捷开发,以及程序的理解、重构和维护[10]。图1展示了本文采用的过程蓝图三层程序模型的转换过程。

2 系统总体架构设计

2.1功能结构设计

以服务为中心程序模型变换系统,需要根据功能将程序模型变换系统划分成一组小粒度的基本变换服务,程序模型变换服务之间互相协调、互相配合,依据变换的需要,将各种程序模型变换服务进行组合,并通过松耦合的方式实现程序模型变换服务之间的互相调用和组合,从而得到互通互操作的一体化的程序模型变换系统。每一个程序模型变换服务都围绕着具体的变换逻辑进行构建,并且能够被独立地部署到真实的运行环境中。

程序模型变换系统的构建是基于模型驱动架构和面向服务的体系架构的迭代开发过程,在该过程中以完成程序模型变换为中心,以各种程序模型变换流程为主线。图2给出面向SOA的程序模型变换系统功能结构模型。

把程序模型变换系统的构建划分几个阶段,可以使复杂程序模型变换系统的设计与开发变得易于控制和管理。从面向服务的体系架构的角度来看,程序模型变换系统的构建主要有五个阶段:程序模型变换系统的需求分析与建模、程序模型变换服务的设计、程序模型变换服务的部署与系统测试、程序模型变换服务的监控与Qos(Quality of Service,服务质量)测量和程序模型变换服务的进化与替换,具体如图2所示。在大数据时代,软件的复杂度不断提高,对程序模型变换的要求也越来越高,经常会有相关的程序模型变换服务的加入、失效、退出,因此面向SOA程序模型变换系统的构建过程是重复迭代的[11]。

需求分析与建模:这一阶段完成程序模型变换系统和程序模型变换需求的收集和分析工作,设计和优化基于程序模型变换服务及组合的程序模型变换流程。该步骤主要基于多元本体系统和元模型进行建模,来增强程序模型的语义能力和可复用性,进而完成领域建模工作。最终得到领域模型也称CIM(Computation Independent Model,计算无关模型)。

变换服务的设计:该阶段主要包括两个方面,基本程序模型变换服务和复合程序模型变化服务的设计,基本的变换服务可以通过对遗留的程序模型变换系统切分和封装的,对于新的程序模型变换需求,则需要进行程序模型变换服务开发。复合程序模型变换服务是基本变换服务经过服务组合,而形成的一个能够独立运行逻辑变换体。在程序模型变换服务组合阶段,主要依据变换流程把基本的变换服务按照变换逻辑进行编排,实现转换过程的自动化。我们通常把变换流程用PIM(Platform Independent Model,平台无关模型)进行形式化表示,再利用模型转换引擎把PIM模型转换为服务组合语言比如BPEL(Business Process Execution Language,业务流程执行语言)。为了保证程序模型变换服务的质量我们还需要对程序模型变换服务进行选择优化和组合验证。文献[12][13]在服务组合优化方面分别提出了基于粒子圆周轨道和零惯性权重的 MDPSO 算法和多信息素动态更新的蚁群算法 MPDACO,利用这些算法对程序模型变换服务进行组合优化,可提高程序模型变换的效果和服务质量。

部署与系统测试:在程序模型变换服务设计完成后,可以将程序模型变换服务和支撑的程序变换流程部署到程序模型变换系统的生产环境中,同时将新设计或产生的程序模型变换服务配置到程序模型变换系统中,并对系统环境进行测试和优化。

监测与Qos测量:该阶段主要完成对各种程序模型变换服务资源的管理和监控,并实时监测程序模型变换服务的各种Qos参数。利用Qos测量结果为基于Qos的服务选择优化提供支撑。

进化与替换:由于变换需求和生产环境并不是稳定不变的,为了适应变化,就需要对相应的程序模型变换服务进行升级和变更。总之,整个基于SOA的程序模型变换系统的构建是一个迭代上升的过程。

图2 面向SOA的程序模型变换系统的功能结构模型

该面向SOA的设计方案是对现存程序模型变换应用的修补,对现有变换资源的整合,改变了传统从零开始的系统构建模式。其实施是从小范围开始,逐渐地迁移现存的程序模型变换应用到新的计算环境中。

2.2逻辑架构设计

传统程序模型变换系统的开发往往以系统为中心,随着系统的不断扩充,模块之间不断的整合,包括用户访问层整合,数据整合和程序模型变换流程整合等,将导致系统的复用性越来越弱,并且扩张性也将变得越来越差。面向SOA程序模型变换系统的构建和传统的方法不同,是以变换服务为中心,这种方式将会提高复用率,并且即使程序模型变换服务内部的结构和实现方式发生改变,也不影响服务提供。本文提出的面向服务的程序模型变换系统构建架构从服务提供者和服务消费者角度,将程序模型变换系统功能方面有关的基础技术、变换组件、变换流程、界面等进行层次化。与此同时,将从安全架构、变换服务通信、变换服务集成、变换服务质量管理等方面,提取了所有变换服务所共有的不同层次。根据SOA的通用层次框架并结合程序模型变换的具体特点,可以得到图3所示的面向SOA的程序模型变换系统的逻辑架构。

A层:基础技术支撑层。基础技术支撑层包含了对模型驱动架构标准的具体实现,尤其是其中的MOF(Meta Object Facility,元对象机制)标准和UML标准,通过对这两个标准的实现来获得访问程序模型、建立程序模型和修改程序模型的能力。程序模型转换需要获取这种可以对程序模型进行操作的能力。

B层:现有的程序模型变换系统资源层。本层包含现有的自定义构建的程序模型变换程序,也叫遗留系统。通常这些遗留系统经过切分,按照契约封装成接口,通过提供这些接口,可以使遗留的程序模型变换应用被发现或集成。在某种程度上说,面向SOA是一种重构和集成策略,而不是对原有程序模型变换系统推倒重建。

图3 面向SOA的程序模型变换系统的逻辑架构

C层:程序模型变换组件层。本层主要是由那些负责实现程序模型变换功能的组件组成。通过将现有程序模型变换系统和应用层中的应用程序接口 API(Application Program Interface)进行包装组合,形成粗粒度的程序模型变换服务,并且以接口的形式,为程序模型变换组件层或变换服务层使用。这些程序模型变换组件是一个逻辑变换体,具有相对独立变换功能,其主要是利用不同的组件将底层的已有的程序模型变换系统或工具进行封装。该层是有效利用原有程序模型变换系统资源的关键层次。

D层:程序模型变换服务层。处在该层的程序模型变换服务,可以被发现或者被直接的静态绑定,然后被调用,或者被编排到复合程序模型变换服务中。该服务层同样提供了获取应用范围的组件、变换操作单元组件的机制,并且这些组件的服务接口以服务描述的形式进行了具体化,因此在程序模型变换执行的过程中,程序模型变换组件通过它们的接口来向外提供变换服务。

E层:变换合成层或编排层。在D层中公开的程序模型变换服务的组合和编排在该层中被定义。该层主要通过变换流程把一些基本或复合的程序模型变换服务进行组合,而形成一个功能更强的复合服务,该层很好地体现了服务的复用性。面向SOA程序模型变换服务的建设打破传统程序模型变换系统的边界,通过变换服务编排、变换流程编排、规则调整来实现创新[14]。

F层:用户表示层或访问层。该层是与服务消费者直接交互的平台,目的是使服务消费者更直观地选用适合自己的程序模型变换服务。采用Remote Portlets Version2.0 的web服务标准等相关技术可实现在应用程序接口或者表现层来提供web服务。

G层:变换服务总线层。这一层为TSB(Trandformation Service Bus,变换服务总线层),通过引入一些相应的性能集合(协议中介、转换机制、智能路由等)使程序模型变换服务可以集成[15]。web服务描述语言(Web service Description language,WSDL)用于定义并提供程序模型变换服务地址的绑定。TSB为变换服务集成提供了位置独立的机制。

H层:基础架构服务层。这一层提供对服务通信、服务安全、系统性能和可用性等能力的管理和维护[16]。

I层:数据架构和变换智能层。这一层提供了统一的数据操作和变换处理流程的智能化能力,是未来发展的扩展层次。

3 系统服务模块设计

3.1基本变换服务

本文对程序模型转换服务模块的设计,是以程序模型转换方法为中心,并通过程序模型库实现程序模型复用。同时为了保证生成的程序模型在功能细节和结构上的准确性和一致性,在程序模型转换的每个环节加入相关程序模型检验技术。另外在程序模型转换的过程中目标转换模板和特定的平台信息作为重要的参考因素。程序模型变换服务模块的设计如图4所示。

程序源模型与程序目标模型:程序源模型是对程序模型变换需求的一种形式化表示,是程序模型转换模块的输入对象,这些程序模型在一方面包含系统开发人员对目标系统模型的编辑信息,另一方面也要符合程序模型转换服务模块的输入规范。程序目标模型包含目标系统的层次设计中的重要信息,是程序模型转换模块的输出模型。

图4 程序模型变换服务模块的设计

程序模型库:程序模型库的主要作用就是为了程序模型的复用,由于在MDA思想指导下的软件开发过程中,将会产生各种程序模型,通过把每个项目开发过程中形成的程序模型存入到程序模型库,以便日后对程序模型的复用。查询程序模型、读取和保存程序模型是对程序模型库的主要操作。用户通过查询程序模型库,可以获取程序模型的功能、结构和涉及项目的详细描述信息; 当程序模型转换的过程中需要用到以前程序模型,则直接读取程序模型库即可获得需要的程序模型; 程序模型通常以图和XML文件两种方式进行存储。另外,程序模型保存时,如果目标程序模型存在,就对程序模型进行替换和更新,如果不存在就建立一个新程序模型,存入到程序模型库中。

程序模型验证:随着用户需求量的不断增长和目标应用的细节功能的增多,程序模型的数量会越来越多大,程序模型的层次关联也会变得越来越复杂,为了保证程序模型的正确性、完备性、一致性[17]这就需要在程序模型转换过程中增加程序模型验证环节。

目标转换模板和特定平台信息:特定的平台信息是目标模型设计参考的依据[18],完备的系统是模型驱动开发的载体,在该系统基础上进行模型抽象,通过模型将系统的业务行为和结构特征表示出来。另外,中间件作为系统开发的一部分,也要考虑,不同应用的部署数据参数可能不尽相同,数据库也是如此。

程序模型转化方法:在本文的第4部分得到介绍。

程序模型库的主要作用就是为了实现程序模型的复用,传统的程序模型库集中在某个计算机上的方式往往不支持分系统设计模型的运行。在面向服务的架构下,程序模型可以通过程序模型服务器以服务的形式部署在任何满足程序模型运行环境的计算节点上,甚至可以运行在程序模型设计人员的计算机上,并且还能对程序模型进行及时的更新,通过向外提供标准的服务描述文档来使程序模型得到复用。对文档进行管理的服务器,我们把它当作服务代理。通过服务代理可以让分布在任何位置的程序模型组成一个虚拟的程序模型仓库,服务代理本身也可以作为一种服务由上层代理进行管理,这样就形成了一个分布式的虚拟程序模型仓库,如图5所示。

图5 面向SOA的虚拟的程序模型仓库

3.2复合变换服务

复合服务是通过服务组合产生的逻辑体,该逻辑体本身也是一个服务。由于复合服务的功能由其他的服务“复合”而成,因此称为复合服务[18]。复合服务对成员服务操作的调用是服务复用的一种体现,因此服务组合促进了服务的复用。

复合的程序模型变换服务是通过一定的变换规则或流程使基本程序模型变换服务经过组合而形成的逻辑变换整体。

对复合服务的编排,借鉴和采用MDA的思想与开发方式,在 PIM层建立 UML活动图描述的变换流程工作流,PSM(Platform Specific Model,平台无关模型)层应用 BPEL模型具体表示复合变换服务的实现方式,得到图6所示的转换过程及其模块。利用文献[20]提出UML活动图元模型元素到BPEL元模型元素的映射表,编写对应的UML活动图到BPEL模型的转换规则文件,利用BPEL来对程序模型变换的流程进行定义,通过BPEL解释执行机制实现程序模型变换的流程处理自动化。

图6 UML活动图到BPEL的转换流程图

4 基于元模型的程序模型转换框架和方法

4.1基于元模型的程序模型转换框架

MOF(Meta Object Facility,元对象机制)是对象管理组织OMG(Object Management Group)为帮助开发者和用户更好的使用元模型和元数据而制定的一种规范。元模型是对MOF的实例化。程序模型转换功能是由一系列程序模型转换规则的定义组合而成的。建立相应元模型层元素之间的映射,以该映射作为转换规则,来实现程序模型层的转换,是基于元模型的程序模型转换思想[3]。

程序模型之间的转换需要程序模型变换功能的支持,程序模型变换功能的实现通过程序模型变换语言进行描述,程序模型变换语言是对MOF的扩展,转换前后的分层程序模型描述了应用系统。图7给出基于元模型的程序模型转换框架。

图7 基于元模型的程序模型转换框架

4.2ATL程序模型转换方法

ATL(ATLAS Transformation Language,ATLAS 转换语言),是ATLAS研究组开发出来的一种符合OMG(Object Management Group,对象管理组织)的一个QVT(Query/View/Transformation)提案的模型转换语言,ATL是基于EMF(Eclipse Model Frame,Eclipse模型框架)的,其元模型、模型都是用EMF来描述的。从本质上来说,ATL属于基于规则的程序模型转换语言,其中使用了OCL(Object Constraint Language,对象约束语言)约束描述语言,并且基本上实现了OCL。由于ATL使用OCL来描述约束,使ATL具有较强的规则描述能力,并且有较宽的应用范围,对过程蓝图程序模型变换的定义同样具有较好的适用性。

利用ATL实现程序源模型到程序目标模型的转换,需要提供以下4个模型:程序源模型的元模型MM1; 程序源模型M1; 程序目标模型的元模型MM2; 以及转换描述模型M1TM2.ATL。当ATL转换引擎被执行,就可以获得到一个程序目标模型M2。图8展示了基于ATL的程序模型转换过程。其中程序模型M1、M2、M3可以分别对应过程蓝图中的ACSD、ALSD、AISD,此时是把ACSD作为程序模型转换过程的程序源模型,则ALSD和AISD作为目标程序模型; 还可以逆向转换让程序模型M1对应ALSD,然后ACSD作为目标程序模型。程序元模型和程序模型转换语言是对MOF的实例化和扩展的结果,M1TM2.ATL 和M2TM3.ATL是使用ATL编写的转换规则,程序模型M1在M1TM2.ATL的作用下可以转换为程序模型M2,程序模型M2在M2TM3.ATL的作用下可以转换为程序模型M3。

图8 基于ATL的程序模型转换过程

5 结束语

程序模型变换系统的架构方法研究对程序模型变换系统的开发具有至关重要的作用。针对传统程序模型变换系统的问题和不足,我们将SOA融入到程序模型变换系统的设计过程中,提出面向SOA的,以程序模型变换服务为中心的程序模型变换系统的架构方法。

基于该架构方法实现的程序模型变换系统已在JAVA和建筑行业的多门导学课程资源开发中得到成功应用,取得了良好效果。初步应用实践表明该架构方法对解决传统系统的复用性差、并发处理能力弱、不跨平台等问题是有效的。

[1]张天, 张岩,于笑丰 等.基于MDA的设计模式建模与模型转换[J].软件学报, 2008, 19(09): 2203-2217.

[2]苏红军, 闫云山,尤振华.UML模型到N层Web模型的模型驱动转换[J].计算机应用, 2014, 34(04): 1161-1164.

[3]戚铁林, 李亚芬,王普.MDA模型转换平台中模型转换方法的研究[J].计算机工程与设计, 2011, 32(01): 202-205.

[4]Benelallam A,Tisi M,Cabot J.Distributed Model-to-Model Trans-formation with ATL on MapReduce[J].2015:37-48.

[5]董淑英, 林克成.MDA与云计算、SOA的比较研究[J].计算机科学, 2012(S1): 207-209.

[6]Anneke G.Kleppe,Jos B.Warmer,Wim Bast.MDA Explain[M].Addison-Wesley Longman Publishing Co.,Inc.Boston,MA,USA, 2003.

[7]戴衡. 基于MDA的EJB模型转换规则研究[D].广西大学, 2010.

[8]刘建宾. 过程蓝图设计方法学[M].科学出版社, 2005.

[9]刘建宾. 过程蓝图程序表示模型与视图导出方法[J].计算机工程, 2009, 35(21): 13-16.

[10]胡伟奇, 刘建宾.基于 Java蓝图的过程模式形式化定义框架[J].计算机应用与软件, 2015, 32(5): 24-29.

[11]王晓, 聂凯.基于SOA和MDA的指挥信息系统构建新方法[J].舰船电子工程, 2014(6): 56-59.

[12]温涛, 盛国军,郭权 等.基于改进粒子群算法的Web服务组合[J].计算机学报, 2013, 36(05): 1031-1046.

[13]夏亚梅, 程渤,陈俊亮 等.基于改进蚁群算法的服务组合优化[J].计算机学报, 2012, 35(02): 270-281.

[14]黄嘉东, 徐兵元,叶向阳.企业级应用系统SOA架构建设研究与实践[J].中国高新技术企业, 2016(2): 159-161.

[15]荆泽泉, 石青,余文芳.基于ESB的企业应用集成研究[J].数字技术与应用, 2011(9): 120-121.

[16]明亮, 况晓辉,黄敏桓.基于SOA的可信智能空间系统软件研究[J].计算机科学, 2010, 37(1): 34-38.

[17]王建光. 基于模型驱动架构的软件生成技术研究[D].太原理工大学, 2007.

[18]冉川. 基于J2EE的模型驱动开发中模型转换方法的研究与实现[D].北京工业大学, 2009.

[19]万芳, 沈建京,韩丁 等.基于SOA的服务构件组合技术研究[C].中国控制会议.2008.

[20]张春阳, 韩建松,张惠军 等.基于MDA的SOA服务协作模型[J].河南科技大学学报(自然科学版), 2010, 31(04): 31-34.

A Study on Architecture Method of SOA-Oriented Program Model Transformation System

Lei Pengfei, Liu Jianbin

(SchoolofComputer,BeijingInformationScience&TechnologyUniversity,Beijing100101,China)

Focusing on the poor reusability, weak concurrent processing capability, no cross-platform and other problems of traditional program model transformation system, this article applies SOA architecture and MDA thought to the program model transformation, and gives out the system function structure and logical architecture based on SOA and the design of basic and complex transformation service modules. Additionally, it takes analysis and discussion for meta-model-based program model transformation framework and adopts ATL model transformation method. The achieved system application indicates that the architecture method is featured of scalability, cross-platform and supporting concurrent processing etc.

SOA; Programming Model Transformation; MDA; MetaModel; System Architecture Method

国家科技支撑计划课题“建筑行业设计服务共性技术集成平台研究与应用”(编号:2014BAH25F03)

TP302.2

A

1674-7461(2016)04-0062-07

猜你喜欢

架构程序模型
基于FPGA的RNN硬件加速架构
适用于BDS-3 PPP的随机模型
功能架构在电子电气架构开发中的应用和实践
重要模型『一线三等角』
基于云服务的图书馆IT架构
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
模型小览(二)
WebGIS架构下的地理信息系统构建研究
英国与欧盟正式启动“离婚”程序程序