董衛(wèi)劉曉燕
基于MDA的PIM到PSM轉(zhuǎn)換方法的研究?
董衛(wèi)1劉曉燕2
(昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院昆明650500)
MDA(Model Driven Architecture)的一個(gè)重要思想是將模型作為軟件開發(fā)的基本單元,解決了軟件開發(fā)的效率低、可移植性差等問題,進(jìn)一步提高軟件開發(fā)的抽象層次。為此,MDA劃分了三種抽象級(jí)的模型,建立高抽象級(jí)的模型,向低抽象級(jí)模型和代碼的轉(zhuǎn)換來構(gòu)造可運(yùn)行的應(yīng)用程序。因此,提出基于MDA的PIM模型到PSM模型轉(zhuǎn)換方法的研究。并根據(jù)轉(zhuǎn)換方法定義了向EJB平臺(tái)的轉(zhuǎn)換規(guī)則,其使用OCL標(biāo)準(zhǔn)描述,具有良好的復(fù)用性。最后通過一個(gè)實(shí)例驗(yàn)證該方法的可行性,實(shí)現(xiàn)從平臺(tái)無關(guān)模型到平臺(tái)相關(guān)層EJB模型的轉(zhuǎn)換。
MDA;模型轉(zhuǎn)換;建模;平臺(tái)無關(guān)模型;平臺(tái)相關(guān)模型
Class NumberTP311.5
模型驅(qū)動(dòng)體系結(jié)構(gòu)(ModelDriven Architecture,MDA)[1]是國際標(biāo)準(zhǔn)化組織OMG于2001年提出的一種基于模型的軟件開發(fā)框架性標(biāo)準(zhǔn)。與傳統(tǒng)的軟件開發(fā)方法相比,MDA致力于將軟件開發(fā)的過程從以代碼為中心的地位提高到以模型為中心的地位,使模型不僅僅被作為設(shè)計(jì)文檔和規(guī)格說明來使用,更能成為一種能夠自動(dòng)轉(zhuǎn)換為最終可運(yùn)行系統(tǒng)的重要的軟件制品。
模型轉(zhuǎn)換是模型驅(qū)動(dòng)架構(gòu)的核心技術(shù),用來解決模型到模型以及模型到代碼間的映射問題[2],并將模型映射為不同技術(shù)平臺(tái)上的實(shí)現(xiàn)。本文以倉庫管理系統(tǒng)的軟件開發(fā)為應(yīng)用背景,圍繞模型轉(zhuǎn)換應(yīng)用于軟件開發(fā)尚待進(jìn)一步完善的問題展開研究,并實(shí)現(xiàn)了PIM模型到EJB PSM模型的轉(zhuǎn)換。
MDA是由對(duì)象管理組織(Object Management Group,OMG)于2001年提出來。MDA將軟件系統(tǒng)的模型分為:平臺(tái)無關(guān)模型(Platform IndependentModel,PIM)和平臺(tái)相關(guān)模型(Platform Specific Model,PSM),并且它們之間通過相應(yīng)的轉(zhuǎn)換規(guī)則聯(lián)系起來。其中,PIM是MDA框架開發(fā)的基礎(chǔ),對(duì)系統(tǒng)結(jié)構(gòu)和功能進(jìn)行抽象的規(guī)約[3],其具有高抽象層次且不包括任何與實(shí)現(xiàn)技術(shù)相關(guān)的信息,PSM主要是為某種特定的相關(guān)平臺(tái)量身定做的[4],它基于某個(gè)特性的實(shí)現(xiàn)技術(shù),如J2EE平臺(tái)和。NET平臺(tái)等。MDA的開發(fā)過程可簡單概括為:先使用建模語言(如UML)構(gòu)建PIM,然后按照轉(zhuǎn)換規(guī)則將PIM轉(zhuǎn)換成特定平臺(tái)相關(guān)的PSM;最后通過建立一些針對(duì)于具體實(shí)現(xiàn)語言的映射,將PSM自動(dòng)生成代碼,從而實(shí)現(xiàn)最終系統(tǒng)。MDA的一般開發(fā)過程如圖1所示。
圖1 MDA的開發(fā)過程
模型轉(zhuǎn)換的本質(zhì)是讀取源模型(Source Mod?el),按照轉(zhuǎn)換規(guī)則將其轉(zhuǎn)換為目標(biāo)模型(Target Model)的過程[5]。模型轉(zhuǎn)換方法的共同特征是:模型轉(zhuǎn)換過程可由源模型、轉(zhuǎn)換規(guī)則庫、目標(biāo)模型和轉(zhuǎn)換流程控制器四個(gè)部分組成,如圖2所示。源模型即模型轉(zhuǎn)換過程的輸入其作為將要被轉(zhuǎn)換的模型;目標(biāo)模型即模型轉(zhuǎn)換過程的輸出其作為轉(zhuǎn)換后生成的模型;轉(zhuǎn)換規(guī)則庫存則放著一組轉(zhuǎn)換規(guī)則的有序集合;轉(zhuǎn)換流程控制器主要用于控制整個(gè)轉(zhuǎn)換過程運(yùn)行的調(diào)度器。
圖2 模型轉(zhuǎn)換方法
轉(zhuǎn)換規(guī)則包括兩部分,一部分是用于訪問源模型中的模型元素,另一部分用于生成目標(biāo)模型中的模型元素。當(dāng)前主要有以下四種模型轉(zhuǎn)換規(guī)則[6]:
1)變量型轉(zhuǎn)換規(guī)則:要轉(zhuǎn)換的模型元素,用那些能夠直接訪問模型元素的語言的變量來保存,然后通過變換規(guī)則將目標(biāo)模型元素存入相對(duì)應(yīng)的變量。
2)模式型轉(zhuǎn)換規(guī)則:使用某些已有的模式來匹配源模型中的部分模型元素,然后生成相應(yīng)的目標(biāo)模式,然后在目標(biāo)模型中存入部分表達(dá)目標(biāo)模式的模型。
3)關(guān)系型轉(zhuǎn)換規(guī)則:是利用關(guān)系代數(shù)描述模型轉(zhuǎn)換規(guī)則的一種方法。
4)邏輯型轉(zhuǎn)換規(guī)則:利用邏輯運(yùn)算來表述模型轉(zhuǎn)換規(guī)則的一種方法。例如,OCL語言就是一種典型的邏輯語言。
EJB是SUN的服務(wù)器端組件模型,最大的用處是部署分布式應(yīng)用程序,類似微軟的.net技術(shù)。憑借JAVA跨平臺(tái)的優(yōu)勢,用EJB技術(shù)部署的分布式系統(tǒng)可以不限于特定的平臺(tái)。基于SUN的EJB2.1規(guī)范[7]以及OMG的規(guī)范[8]給出了使用UML形式定義的EJB元模型,如圖3所示[9]。
圖3 EJB元模型
本文以倉庫管理系統(tǒng)為例,利用UML建模工具建立倉庫管理系統(tǒng)中的物流管理模塊的PIM,并將PIM轉(zhuǎn)換為相對(duì)的EJB PSM。
在MDA的開發(fā)思想下,PIM層建模是設(shè)計(jì)過程中最為重要的環(huán)節(jié)之一。該環(huán)節(jié)交付的軟件制品是系統(tǒng)的業(yè)務(wù)邏輯在平臺(tái)無關(guān)抽象層上的模型[5]。
在倉庫管理系統(tǒng)中,倉庫物品操作信息的子類有進(jìn)貨信息和退貨信息兩部分,倉庫物品操作信息由物品信息聚合而成,供應(yīng)商與物品信息、進(jìn)貨信息和退貨信息相關(guān)聯(lián)。為了簡化問題,本文抽取了該部分信息進(jìn)行建模。圖4給出了該場景的PIM表示方法。
圖4 系統(tǒng)功能片段的PIM
要實(shí)現(xiàn)模型的轉(zhuǎn)換,首先要源語言和目標(biāo)語言的元模型以便給出形式化的定義,在變換規(guī)則中需要引用這些元模型中的元素[10]?;谠凑Z言和目標(biāo)語言的元模型,轉(zhuǎn)換規(guī)則采用基于OCL的規(guī)則約束,采用基于MDA的模型轉(zhuǎn)換方法來完成,從而實(shí)現(xiàn)PIM到EJB模型的變換。因?yàn)镻IM和PSM都是采用UML語言描述的,UML可以來描述MDA中近乎全部的模型[11]。所以源語言和目標(biāo)語言的元類屬性都是一樣的。如圖5所示。
對(duì)于PIM中的每一個(gè)類都會(huì)有一個(gè)EJB模型中的主鍵類與之對(duì)應(yīng),而PIM模型中的每個(gè)類都會(huì)生成一個(gè)單獨(dú)的主鍵類。PIM中的每個(gè)關(guān)聯(lián)都會(huì)被轉(zhuǎn)換成一個(gè)EJB關(guān)聯(lián),并歸入到一個(gè)EJB數(shù)據(jù)模式。則它們轉(zhuǎn)換的形式化表達(dá)式如下:
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 一個(gè)類的變換規(guī)則
在完成了PIM層的建模工作之后,就可以應(yīng)用轉(zhuǎn)換部分中定義的PIM-EJB PSM轉(zhuǎn)換規(guī)則將PIM映射為相應(yīng)的EJB平臺(tái)上的PSM。在轉(zhuǎn)換的每個(gè)步驟中,對(duì)于PIM中的每一個(gè)實(shí)體類Entity Class,都有一個(gè)EJB Entity Bean與之相對(duì)應(yīng)。每個(gè)EJB Entity Bean都要包括一個(gè)遠(yuǎn)程接口Remote Inter?face,一個(gè)本地接口Home Interface,一個(gè)主鍵Pri?mary Kerry和一個(gè)實(shí)現(xiàn)類Implementation class。對(duì)于實(shí)現(xiàn)類,其類的構(gòu)造型為<<EJBImplementation>>,類中的屬性就是PIM類圖中對(duì)應(yīng)的類的屬性,其構(gòu)造型為<<EJgCmpField>>,類的方法除了包括遠(yuǎn)程接口中的方法外,還包括PIM類圖中對(duì)應(yīng)的類中的方法,Home接口中的方法Create()實(shí)現(xiàn)方法ejbCreat(),ejbStore(),ejbLoad(),ejbActivate(),ejbPassivate(),ejbRemove(),setEntityContext(),以及getEntityContext()等方法。遠(yuǎn)程接口Remote In?terface,其構(gòu)造型為<<EJBRemoteInerface>>,Re?mote中列出該Entity Bean為客戶提供的所有操作。對(duì)于實(shí)現(xiàn)類中的每個(gè)屬性,都會(huì)有一個(gè)get()操作和一個(gè)set()操作,其構(gòu)造型為<<EJBRemote?Method>>。本地接口home Interface,接口繼承了EJBHome,Home接口的構(gòu)造型為<<EJBEntityHo?meInterface>>,home接口中包c(diǎn)reat()方法,方法的構(gòu)造型為<<EJBCreatMethod>>,還有findByPrima?ryKey()方法,其構(gòu)造型為<<EJBFinderMethod>>,用于對(duì)數(shù)據(jù)庫的查找。
由于篇幅有限,只選取系統(tǒng)的一部分為例說明轉(zhuǎn)換的方法。按照上述的轉(zhuǎn)換規(guī)則,經(jīng)過這些轉(zhuǎn)換后,可以得到WarehouseGoodsOperationInfo和GoodsInfo的EJB PSM,如圖6所示。
圖6 系統(tǒng)功能片段的PSM
在模型轉(zhuǎn)換方面,通過向特定平臺(tái)的直動(dòng)映射,降低了傳統(tǒng)手工編寫代碼的工作量。同時(shí),設(shè)計(jì)人員可以利用自動(dòng)轉(zhuǎn)換方便地看到設(shè)計(jì)方案在具體平臺(tái)上的實(shí)現(xiàn)效果,有利于檢查設(shè)計(jì)方案的正確性和合理性,從而提高了設(shè)計(jì)效率。本文研究了基于模型驅(qū)動(dòng)體系架構(gòu)的模型轉(zhuǎn)換問題。結(jié)合倉庫管理系統(tǒng)的例子,采用建模工具開發(fā)出獨(dú)立于平臺(tái)分析模型,通過執(zhí)行轉(zhuǎn)換規(guī)則得到系統(tǒng)的PSM,通過實(shí)驗(yàn)驗(yàn)證了基于MDA的PIM到PSM模型轉(zhuǎn)換的可行性和正確性。
[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的模型轉(zhuǎn)換研究與應(yīng)用[J].計(jì)算機(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].計(jì)算機(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òng)生成平臺(tái)的研究——代碼生成器及模板庫的設(shè)計(jì)[D].杭州:浙江工業(yè)大學(xué),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]張?zhí)?,張巖,于笑豐,等.基于MDA的設(shè)計(jì)模式建模與模型轉(zhuǎn)換[J].軟件學(xué)報(bào),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的模型轉(zhuǎn)換研究[D].洛陽:河南科技大學(xué),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的模型轉(zhuǎn)換[J].計(jì)算機(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]劉輝,麻志毅,邵維忠.模型轉(zhuǎn)換中特性保持的描述與驗(yàn)證[J].軟件學(xué)報(bào),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日
董衛(wèi),男,碩士研究生,研究方向:模型驅(qū)動(dòng)。劉曉燕,女,副教授,碩士生導(dǎo)師,研究方向:模型驅(qū)動(dòng)。