基于MDA的PIM到PSM转换方法的研究∗

2017-09-12 08:49董卫刘晓燕
计算机与数字工程 2017年8期
关键词:仓库建模模型

董卫刘晓燕

基于MDA的PIM到PSM转换方法的研究∗

董卫1刘晓燕2

(昆明理工大学信息工程与自动化学院昆明650500)

MDA(Model Driven Architecture)的一个重要思想是将模型作为软件开发的基本单元,解决了软件开发的效率低、可移植性差等问题,进一步提高软件开发的抽象层次。为此,MDA划分了三种抽象级的模型,建立高抽象级的模型,向低抽象级模型和代码的转换来构造可运行的应用程序。因此,提出基于MDA的PIM模型到PSM模型转换方法的研究。并根据转换方法定义了向EJB平台的转换规则,其使用OCL标准描述,具有良好的复用性。最后通过一个实例验证该方法的可行性,实现从平台无关模型到平台相关层EJB模型的转换。

MDA;模型转换;建模;平台无关模型;平台相关模型

Class NumberTP311.5

1引言

模型驱动体系结构(ModelDriven Architecture,MDA)[1]是国际标准化组织OMG于2001年提出的一种基于模型的软件开发框架性标准。与传统的软件开发方法相比,MDA致力于将软件开发的过程从以代码为中心的地位提高到以模型为中心的地位,使模型不仅仅被作为设计文档和规格说明来使用,更能成为一种能够自动转换为最终可运行系统的重要的软件制品。

模型转换是模型驱动架构的核心技术,用来解决模型到模型以及模型到代码间的映射问题[2],并将模型映射为不同技术平台上的实现。本文以仓库管理系统的软件开发为应用背景,围绕模型转换应用于软件开发尚待进一步完善的问题展开研究,并实现了PIM模型到EJB PSM模型的转换。

2 MDA相关理论

2.1模型驱动体系架构

MDA是由对象管理组织(Object Management Group,OMG)于2001年提出来。MDA将软件系统的模型分为:平台无关模型(Platform IndependentModel,PIM)和平台相关模型(Platform Specific Model,PSM),并且它们之间通过相应的转换规则联系起来。其中,PIM是MDA框架开发的基础,对系统结构和功能进行抽象的规约[3],其具有高抽象层次且不包括任何与实现技术相关的信息,PSM主要是为某种特定的相关平台量身定做的[4],它基于某个特性的实现技术,如J2EE平台和。NET平台等。MDA的开发过程可简单概括为:先使用建模语言(如UML)构建PIM,然后按照转换规则将PIM转换成特定平台相关的PSM;最后通过建立一些针对于具体实现语言的映射,将PSM自动生成代码,从而实现最终系统。MDA的一般开发过程如图1所示。

图1 MDA的开发过程

2.2模型转换

模型转换的本质是读取源模型(Source Mod⁃el),按照转换规则将其转换为目标模型(Target Model)的过程[5]。模型转换方法的共同特征是:模型转换过程可由源模型、转换规则库、目标模型和转换流程控制器四个部分组成,如图2所示。源模型即模型转换过程的输入其作为将要被转换的模型;目标模型即模型转换过程的输出其作为转换后生成的模型;转换规则库存则放着一组转换规则的有序集合;转换流程控制器主要用于控制整个转换过程运行的调度器。

图2 模型转换方法

2.3转换规则的类别

转换规则包括两部分,一部分是用于访问源模型中的模型元素,另一部分用于生成目标模型中的模型元素。当前主要有以下四种模型转换规则[6]:

1)变量型转换规则:要转换的模型元素,用那些能够直接访问模型元素的语言的变量来保存,然后通过变换规则将目标模型元素存入相对应的变量。

2)模式型转换规则:使用某些已有的模式来匹配源模型中的部分模型元素,然后生成相应的目标模式,然后在目标模型中存入部分表达目标模式的模型。

3)关系型转换规则:是利用关系代数描述模型转换规则的一种方法。

4)逻辑型转换规则:利用逻辑运算来表述模型转换规则的一种方法。例如,OCL语言就是一种典型的逻辑语言。

2.4 EJB元模型

EJB是SUN的服务器端组件模型,最大的用处是部署分布式应用程序,类似微软的.net技术。凭借JAVA跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。基于SUN的EJB2.1规范[7]以及OMG的规范[8]给出了使用UML形式定义的EJB元模型,如图3所示[9]。

图3 EJB元模型

3 实例研究

本文以仓库管理系统为例,利用UML建模工具建立仓库管理系统中的物流管理模块的PIM,并将PIM转换为相对的EJB PSM。

3.1 PIM建模

在MDA的开发思想下,PIM层建模是设计过程中最为重要的环节之一。该环节交付的软件制品是系统的业务逻辑在平台无关抽象层上的模型[5]。

在仓库管理系统中,仓库物品操作信息的子类有进货信息和退货信息两部分,仓库物品操作信息由物品信息聚合而成,供应商与物品信息、进货信息和退货信息相关联。为了简化问题,本文抽取了该部分信息进行建模。图4给出了该场景的PIM表示方法。

图4 系统功能片段的PIM

3.2 OCL转换规则

要实现模型的转换,首先要源语言和目标语言的元模型以便给出形式化的定义,在变换规则中需要引用这些元模型中的元素[10]。基于源语言和目标语言的元模型,转换规则采用基于OCL的规则约束,采用基于MDA的模型转换方法来完成,从而实现PIM到EJB模型的变换。因为PIM和PSM都是采用UML语言描述的,UML可以来描述MDA中近乎全部的模型[11]。所以源语言和目标语言的元类属性都是一样的。如图5所示。

对于PIM中的每一个类都会有一个EJB模型中的主键类与之对应,而PIM模型中的每个类都会生成一个单独的主键类。PIM中的每个关联都会被转换成一个EJB关联,并归入到一个EJB数据模式。则它们转换的形式化表达式如下:

Transformation PIMClassToKeyClass(PIM,EJB){

source(class:PIM::class);

target(keyClass:EJB::EJBKeyClass);

if(target.id.class==keyClass&&unidirectional)

mapping(class.name+’Key’,keyClass.name);

mapping(class.name+’ID’,id.name);}

Transformation AssociationToDataAssociation(PIM,EJB){

target(dataAs:EJB::EJBDataAs);

if(source.as.end->exists(composition)&&unidirection⁃al));

mapping(as.name,DataAs.name);

mapping(as.end,DataAs.end);

mapping(assoc.getOuterMostContainer(),dataAssoc. package);}

图5 一个类的变换规则

3.3 PIM-PSM映射

在完成了PIM层的建模工作之后,就可以应用转换部分中定义的PIM-EJB PSM转换规则将PIM映射为相应的EJB平台上的PSM。在转换的每个步骤中,对于PIM中的每一个实体类Entity Class,都有一个EJB Entity Bean与之相对应。每个EJB Entity Bean都要包括一个远程接口Remote Inter⁃face,一个本地接口Home Interface,一个主键Pri⁃mary Kerry和一个实现类Implementation class。对于实现类,其类的构造型为<<EJBImplementation>>,类中的属性就是PIM类图中对应的类的属性,其构造型为<<EJgCmpField>>,类的方法除了包括远程接口中的方法外,还包括PIM类图中对应的类中的方法,Home接口中的方法Create()实现方法ejbCreat(),ejbStore(),ejbLoad(),ejbActivate(),ejbPassivate(),ejbRemove(),setEntityContext(),以及getEntityContext()等方法。远程接口Remote In⁃terface,其构造型为<<EJBRemoteInerface>>,Re⁃mote中列出该Entity Bean为客户提供的所有操作。对于实现类中的每个属性,都会有一个get()操作和一个set()操作,其构造型为<<EJBRemote⁃Method>>。本地接口home Interface,接口继承了EJBHome,Home接口的构造型为<<EJBEntityHo⁃meInterface>>,home接口中包creat()方法,方法的构造型为<<EJBCreatMethod>>,还有findByPrima⁃ryKey()方法,其构造型为<<EJBFinderMethod>>,用于对数据库的查找。

由于篇幅有限,只选取系统的一部分为例说明转换的方法。按照上述的转换规则,经过这些转换后,可以得到WarehouseGoodsOperationInfo和GoodsInfo的EJB PSM,如图6所示。

图6 系统功能片段的PSM

4结语

在模型转换方面,通过向特定平台的直动映射,降低了传统手工编写代码的工作量。同时,设计人员可以利用自动转换方便地看到设计方案在具体平台上的实现效果,有利于检查设计方案的正确性和合理性,从而提高了设计效率。本文研究了基于模型驱动体系架构的模型转换问题。结合仓库管理系统的例子,采用建模工具开发出独立于平台分析模型,通过执行转换规则得到系统的PSM,通过实验验证了基于MDA的PIM到PSM模型转换的可行性和正确性。

[1]Miller J,Mukerji J.MDA Guide Version 1.0.1[EB/OL]. OMG,2003,http://www.omg.org/docslomg/03.06.01.

[2]王永涛,刘勇.基于MDA的模型转换研究与应用[J].计算机工程,2011,37(16):84-85.

WANG Yongtao,LIU Yong.Research and Application of Model Transformation Based on MDA[J].Computer Engi⁃neering,2011,37(16):84-85.

[3]侯金奎,万建成,张玉艳.一种支持MDA的PIM建模方法[J].计算机工程,2007,33(8):71-73.

HOU Jinkui,WAN Jiancheng,WANG Yuyan.MDA-sup⁃ ported Modeling Approach for PIM[J].Computer Engi⁃neering,2007,33(8):71-73.

[4]张锦.基于EJB组件的代码自动生成平台的研究——代码生成器及模板库的设计[D].杭州:浙江工业大学,2004.

ZHANG Jin.Research of Code Auto-Generation Platform Based On EJB--Design of Code Generator and Template Library[D].Hangzhou:Zhejiang University of Technolo⁃gy,2004.

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

ZHANG Tian,ZHANG Yan,YU Xiaofeng.MDA Based Design Patterns Modeling and Model Transformation[J]. Journalof Software,2008,19(9):2203-2217.

[6]王永涛.基于MDA的模型转换研究[D].洛阳:河南科技大学,2011.

WANG Yongtao.Research On Model Transformation Based On MDA[D].Luoyang:Henan University of Sci⁃ence and Technology,2011.

[7]Sun Microsystems.Enterprise JavaBeans Specification[EB/OL].v2.1 http://java.sun.com/productslejb/docs.html

[8]OMG Meta modeland UML profile for Java and EJB speci⁃fication v1.0,2004[EB/OL].http://www.omg.org/docsdfor⁃maV04-02-02.

[9]Anneke Kleppe,Jos Warmer,Wim Bast著,鲍志云译.解析MDA[M].北京:人民邮电出版社,2004.

Anneke Kleppe,Jos Warmer,Wim Best writings,BAOZhiyun translation.Explained MDA[M].Beijing:POSTS &TELECOM PRESS,2004.

[10]吴春水,唐胜群.MDA中从PIM到PSM的模型转换[J].计算机工程,2004,30(3):1-3.

WU Chunshui,TANG Shengqun.Model Transformation from PIM to PSM in MDA[J].Computer Engineering, 2004,30(3):1-3.

[11]刘辉,麻志毅,邵维忠.模型转换中特性保持的描述与验证[J].软件学报,2007,18(10):2369-2379.

LIU Hui,MA Zhiyi,SHAO Weizhong.Description and Proof of Property Preservation of Model Transformations[J].Journalof Software,2007,18(10):2369-2379.

Research on ModelTransformation of PIMto PSMBased on MDA

DONG Wei1LIU Xiaoyan2
(Schoolof Information Engineering and Automation,Kunming University of Science and Technology,Kunming 650500)

An importantidea of MDA(modeldriven architecture)is using models as the basic unitofsoftware developmentto solve the problem oflow efficiency and poor portability ofsoftware development,and to further improve the abstraction levelofsoft⁃ware development.To this end,MDA divides the three abstraction levels ofthe model,high-levelabstractmodelis established and low-level model and code conversion are established to construct a runnable application.Therefore,a MDA-based PIM model to PSM model transformation method is proposed.And then through this model the EJB platform conversion rules are defined.The transformation rules are described by the OCL(Object Constraint Language)standard and have good reusability.At last,an exam⁃ple is given to verify the feasibility of the method,and the transformation from platform independent model to platform specific EJB modelis realized.

MDA(modeldriven architecture),modeltransformation,modeling,platform independentmodel,platform spe⁃cific model

TP311.5

10.3969/j.issn.1672-9722.2017.08.045

2017年2月6日,

2017年3月27日

董卫,男,硕士研究生,研究方向:模型驱动。刘晓燕,女,副教授,硕士生导师,研究方向:模型驱动。

猜你喜欢
仓库建模模型
适用于BDS-3 PPP的随机模型
自制空间站模型
基于FLUENT的下击暴流三维风场建模
填满仓库的方法
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
四行仓库的悲壮往事
求距求值方程建模
基于PSS/E的风电场建模与动态分析
模型小览(二)
小猫看仓库