(1.中山大學(xué) 計(jì)算機(jī)科學(xué)系, 廣州 510275; 2.深圳信息職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)應(yīng)用系, 深圳 518029)
摘 要:
模型合成是MDA的一個(gè)新課題。將模型合成分成三個(gè)實(shí)施階段,并設(shè)計(jì)了一種模型合成的編織框架WMCF(weaving-based model composition framework),在模型合成中引入編織技術(shù),輸入模型的合成語義定義在編織模型中,通過WMCF框架自動(dòng)實(shí)現(xiàn)模型合成。WMCF框架支持QVT(query/view/transformations)規(guī)范,這也是將模型合成與模型轉(zhuǎn)換相結(jié)合的有益嘗試。
關(guān)鍵詞:模型編織; 模型合成; 模型轉(zhuǎn)換; 模型驅(qū)動(dòng)體系架構(gòu)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2009)04-1363-03
Research of model composition based on weaving technology
ZHANG De-fen1,2, LI Shi-xian1, SUN Wei-jun1
(1.Dept. of Computer Science, Sun Yat-sen University, Guangzhou 510275, China;2.Dept. of Computer Application, Shenzhen Institute of Information Technology, Shenzhen Guangdong 518029, China)
Abstract:Model composition is a new research subject in MDA. This paper divided implementation of model composition into three activities and provided a weaving-based model composition framework. Adopted weaving technology in model composition. Defined the composition semantic of input models in the weaving model and model composition could be carried out automatically through WMCF. Supported QVT by WMCF. The work of this paper is also meaningful for the combination of model composition with model transformation.
Key words:model weaving; model composition; model transformation; model driven architecture(MDA)
0 引言
為了使開發(fā)出的軟件系統(tǒng)能夠更好地適應(yīng)需求和技術(shù)的變化,保護(hù)投資,OMG(國際對(duì)象管理組織)提出了模型驅(qū)動(dòng)體系架構(gòu)(MDA)。MDA的出現(xiàn),使軟件開發(fā)和設(shè)計(jì)的抽象層次提高到模型級(jí),模型不再只是設(shè)計(jì)文檔,而是成為軟件生產(chǎn)的階段產(chǎn)品,甚至最后的系統(tǒng)實(shí)現(xiàn)也可視為模型——可執(zhí)行的代碼模型。MDA中,不同的模型可以通過模型轉(zhuǎn)換技術(shù)進(jìn)行轉(zhuǎn)換,模型轉(zhuǎn)換是實(shí)施MDA的關(guān)鍵技術(shù)。
隨著軟件開發(fā)技術(shù)的發(fā)展和軟件應(yīng)用的深入,軟件系統(tǒng)的規(guī)模也日益龐大。在開發(fā)軟件系統(tǒng)時(shí),往往需要從不同的角度分析系統(tǒng),建立多個(gè)互補(bǔ)或交疊的軟件設(shè)計(jì)模型。在獲得最后的完整設(shè)計(jì)時(shí),需要把不同的設(shè)計(jì)模型進(jìn)行合成[1]。
模型合成就是指兩個(gè)(或更多)輸入模型合成一個(gè)輸出模型,輸出模型中包含輸入模型的內(nèi)容[2]。模型合成最初是用于數(shù)據(jù)管理領(lǐng)域[2,3]。在MDA中,模型合成可以用于數(shù)據(jù)庫合并、面向方面建模和模型轉(zhuǎn)換。模型合成技術(shù)可以看成一種特殊的模型轉(zhuǎn)換。對(duì)模型合成技術(shù)的研究,有助于加深對(duì)模型轉(zhuǎn)換技術(shù)的認(rèn)識(shí)和理解,推動(dòng)MDA的實(shí)施進(jìn)程。
1 相關(guān)工作
已有的關(guān)于模型合成的方法主要有兩種:a)基于UML擴(kuò)展的方法[1],研究模型合成的語義;b)基于編織的方法,研究方面模型(aspect model)和主模型(primary model)的合成[4,5]。
文獻(xiàn)[1]提出一種用于模型合成的UML擴(kuò)展,把模型合成劃分為四個(gè)階段,即初始化階段、比較階段、合并階段和后期處理階段。在合并階段采用merge策略生成輸出模型,merge策略包括override、 integration和union等特定功能,但是文中未提及這三種功能的具體算法和實(shí)現(xiàn)。在后期處理階段校驗(yàn)輸出模型是否滿足良構(gòu)規(guī)則(well-formedness rules),對(duì)于錯(cuò)誤形式的模型(badly formed models)采用模型轉(zhuǎn)換規(guī)則進(jìn)行修改。
文獻(xiàn)[4]提出通過基調(diào)將方面模型和主模型進(jìn)行編織合成。模型元素的基調(diào)是指在元模型中定義的語法特性,模型元素按基調(diào)進(jìn)行合成后,要進(jìn)行形式化分析和檢驗(yàn)。如果合成模型不是良構(gòu)的,則要用指令進(jìn)行修正處理,然后重新合成及分析校驗(yàn)。修正指令的設(shè)計(jì)在文獻(xiàn)[4]的方法中十分關(guān)鍵。指令可以修改參與合成的方面模型和主模型,也可以向合成模型中增加新元素;或者修改默認(rèn)的合成規(guī)則,以產(chǎn)生期望的合成模型。修正指令可以視做模型的轉(zhuǎn)換規(guī)則,可以在模型元素合并前作用于方面模型和主模型,也可以在模型合并時(shí)起作用。但是修正指令的設(shè)計(jì)主要是依據(jù)經(jīng)驗(yàn)。
文獻(xiàn)[5]給出連接點(diǎn)(joint point)、Aspect Bean和連接器(connector)的元模型,通過連接器建立主模型元素及Aspect Bean的連接,編織行為用SDL(specification and description language)狀態(tài)圖描述,通過編織的方法實(shí)現(xiàn)模型合成。合成的元模型是用基于UML2.0擴(kuò)展的SDL描述的,用Motorola實(shí)驗(yàn)室的AspectSDL作為編織引擎。文中的合成方法和實(shí)現(xiàn)機(jī)制對(duì)MDA中的QVT等規(guī)范兼容不是很好。文獻(xiàn)[6]的編織思想為模型合成提供了一個(gè)很好的思路。
本文受文獻(xiàn)[1]模型合成階段和文獻(xiàn)[4,5]中編織思想的啟發(fā),將模型合成的過程分成確定連接點(diǎn)、語義綁定和編織合成三個(gè)階段進(jìn)行,并設(shè)計(jì)了一種基于編織的模型合成框架WMCF,采用編織的方法將輸入模型合成為輸出模型。WMCF模型合成框架可以映射到QVT Relations語言。本文的方法為模型合成的研究提供了一種新方向,在模型合成與模型轉(zhuǎn)換的結(jié)合方面,進(jìn)行了有益的嘗試。
2 模型合成的編織框架
模型編織是從AOP中借鑒并發(fā)展起來的概念。在MDA中,模型編織技術(shù)[6~8]通過在模型之間定義具有不同語義的連接關(guān)系描述模型之間的轉(zhuǎn)換規(guī)則。本文將編織技術(shù)應(yīng)用于模型合成中。模型編織可以看做是模型合成中的一個(gè)抽象層,在這個(gè)抽象層上定義了編織模型(weaving model),在模型合成中,編織模型代表模型合成的規(guī)則,用于捕捉模型元素之間的關(guān)系。通過模型編織,生成模型合成的執(zhí)行代碼。圖1是本文的編織器元模型。
WElement是所有元素的父類,是對(duì)EMOF中的元類element的擴(kuò)展。
WRef繼承WElement,定義了一個(gè)引用,指向WModel或 WElement。
WElementRef和WModelRef是Wref的子類,WElementRef指向模型元素,WModelRef指向輸入模型或輸出模型。
WLink定義輸入模型和輸出模型間的連接,它有兩個(gè)或以上的連接端WLinkEnd,分別指向參加編織的WElement。WLink代表一個(gè)模型合成的編織規(guī)則。
WLinkType定義編織語義,包括以下五種:
a)Create,表示在輸出模型中創(chuàng)建一個(gè)元素或元素特性。
b)Delete,表示在輸出模型中刪除一個(gè)元素或元素特性。
c)Merge,表示合并,表示從兩個(gè)給定模型元素中生成一個(gè)新的元素,給定元素中相同的特性只出現(xiàn)一次。
d)Union,表示聯(lián)合,表示將兩個(gè)WElement的特性合并在一個(gè)新元素中。
e)Override,表示覆蓋,表示用另一個(gè)值取代特性的值。
3 基于編織的模型合成框架應(yīng)用示例
下面以一個(gè)簡(jiǎn)化的校園管理系統(tǒng)[1]為例,介紹WMCF模型合成編織框架的應(yīng)用。校園管理系統(tǒng)由兩個(gè)不同的開發(fā)小組設(shè)計(jì),得出圖2(a)(b)兩個(gè)模型。小組設(shè)計(jì)完成后,需要將設(shè)計(jì)模型合成,并且在合成的模型中還要增加一個(gè)新特性:在學(xué)生student和研究領(lǐng)域researchArea間建立關(guān)聯(lián),因?yàn)槌私淌趐rofessor有研究領(lǐng)域researchArea外,學(xué)生student也可以有自己的研究領(lǐng)域。合成后的設(shè)計(jì)模型如圖2(c)所示。
3.1 模型合成的過程分析
模型合成的過程分為三個(gè)階段(圖3):
a)確定連接點(diǎn)階段,主要對(duì)輸入模型進(jìn)行分析,確定模型間進(jìn)行編織合成時(shí)的連接點(diǎn)。連接點(diǎn)是各輸入模型中參與編織合成的元素,模型合成時(shí)通過這些連接點(diǎn)元素將輸入模型編織成輸出模型。每個(gè)連接點(diǎn)既可以是單獨(dú)一個(gè)輸入元素構(gòu)成,也可以是多個(gè)輸入元素共同構(gòu)成。在下一階段語義綁定中確定各連接點(diǎn)的編織語義。在本文的校園管理系統(tǒng)中,圖2(a)中的模型元素university、student和 (b)中的模型元素researchArea分別是三個(gè)連接點(diǎn)。圖2(a)中的模型元素professor和(b)中的同名模型元素professor兩個(gè)元素共同構(gòu)成一個(gè)連接點(diǎn)。
b)語義綁定階段,是對(duì)連接點(diǎn)綁定模型編織合成的語義。模型合成時(shí)連接點(diǎn)元素根據(jù)不同的語義編織生成輸出模型中的模型元素,從而將輸入模型合成為輸出模型。連接點(diǎn)語義可以是create、delete、merge、union和override等。在本文的校園管理系統(tǒng)中,兩個(gè)同名元素professor構(gòu)成一個(gè)連接點(diǎn),其編織語義是元素合并(merge element),即將兩個(gè)子模型中的professor元素進(jìn)行合并,同名屬性pname在輸出模型中只出現(xiàn)一次。圖2(a)中的university和student是兩個(gè)不同的連接點(diǎn),它們的編織語義都是生成元素(createElement),即在輸出模型中創(chuàng)建university元素和student元素。圖2(b)中的researchArea也是模型合成時(shí)的連接點(diǎn),它的編織語義更復(fù)雜,要在輸出模型中創(chuàng)建元素researchArea,同時(shí)還要在researchArea和Student間創(chuàng)建關(guān)聯(lián)rsa。
c)編織合成階段,是根據(jù)連接點(diǎn)及其綁定的語義,建立編織模型,通過WMCF框架進(jìn)行編織,生成輸出模型。校園管理系統(tǒng)的編織模型如圖4所示。
3.2 模型合成框架到QVT的映射
QVT是OMG提出的模型轉(zhuǎn)換規(guī)范,由四部分組成,即關(guān)系語言relations、核心語言core、操作映射語言(operational mapping language)和黑盒實(shí)現(xiàn)(black box implementation)。其中relations語言是QVT的核心語言。模型合成框架WMCF可以和relations語言建立如下的映射關(guān)系[7]:WModel映射transformation;WLink映射relation;WModelRef映射typedModel;WElementRef映射domains。以下是用relations語言描述的校園管理系統(tǒng)的模型合成代碼。可見,WMCF框架可以支持MDA的QVT規(guī)范。
metamodel P1Model {
class University {uname:String; address:String; students:Student; professors:Professor;}
class Student {sname:String; age:Integer; getName():String;}
class Professor {pname:String; phone:String; getPhone():String}
}
metamodel P2Model {
class Professor {pname:String; email:String; rsa:ResearchArea; getName():String;}
class ResearchArea {topics:String;}
}
metamodel P12Model {
class University {uname:String; address:String; student:Student; professor:Professor;}
class StudentMrg {sname:String; age:Integer; getName():String; rsa:ResearchArea}
class ProfessorMrg {pname:String; email:String; phone:String; getName():String; getPhone():String}
class ResearchArea {topics:String;}
}
transformation FirstModel+SecondModel_To_ComposedModel(p1:P1Model, p2:P2Model,p1p2:P1P2Model)
{
key Package(name);
key Class(name,attribute,operation,association);
top relation FirstPackage+SecondPackage_to_ComposedPackage
{
pn:String;
checkonly domain P1Model p1:Package {name=pn+1}
checkonly domain P2Model p2:Package {name=pn+2}
enforcedomain P12Model p12:Package {name=pn+12}
}
top relation ClassInFirstModel_to_ClassInComposedModel
{
cn,an:String
checkonly domain P1Model c1:Class {name=cn}
enforcedomain P12Model c12:Class {name=cn}
}
where {
ClassInSecondModel_to_ClassInComposedModel
}
relation ClassInSecondModel_to_ClassInComposedModel
{
cn,an,cdn:String
checkonly domain P1Model c2:Class {name=cn}
enforcedomain P12Model c12:Class {name=cn}
}
where {
c12->select(x|x.oclIsTypeOf(Professor)) implies (c12.attributes->asSet() and c12.operations->asSet())
c12.student.rsa =c12.researchArea
}
4 結(jié)束語
模型合成是MDA的一個(gè)新課題。隨著軟件系統(tǒng)規(guī)模的擴(kuò)大,模型合成的應(yīng)用也將越來越廣泛。模型合成可以看做是單向、源模型和目標(biāo)模型在同一抽象層次的模型轉(zhuǎn)換。在模型合成的研究中可以借鑒已有的模型轉(zhuǎn)換技術(shù),對(duì)模型合成的研究也有助于從另一個(gè)角度認(rèn)識(shí)模型轉(zhuǎn)換。
本文將模型編織技術(shù)引入到模型合成中,設(shè)計(jì)的模型合成框架WMCF具有簡(jiǎn)單、符合MDA規(guī)范和易擴(kuò)展的優(yōu)點(diǎn)。今后的研究計(jì)劃包括WMCF支持工具的研制以及合成模型的形式化驗(yàn)證工作。
參考文獻(xiàn):
[1]OLIVERA K S, De OLIVEIRA T C. A guidance for model composition[C]//Proc ofInternational Conference on Software Engineering Advances. Washington DC: IEEE Computer Society, 2007:27-28.
[2]FABRO D, BEZIVIN M, JOUAULT J, et al. Applying generic model management to data mapping[C]//Proc of BDA. Saint-Malo, France:[s.n.], 2005:343-355.
[3]BERNSTEIN P A. Applying model management to classical meta data problems[C]//Proc of CIDR. 2003:209-220.
[4]REDDY Y R, GHOSH S, FRANCE R B, et al. Directives for composing aspect-oriented design class models[J]. Trans on Aspect-Oriented Software Development I, 2006,3880:75-105.
[5]COTTENIER, BERG A van den, ELRAD T. Modeling aspect-oriented compositions[C]//Proc of MoDELS’05, LNCS 3844. Berlin: Springer-Verlag, 2005:100-109.
[6]FABRO M D D, BEZIVIN D J, VALDURIEZ P. Weaving models with the eclipse AMW plugin[C]//Proc of Eclipse Modeling Symposium, Eclipse Summit Europe. Esslingen:[s.n.], 2006.
[7]王學(xué)斌, 王懷民, 吳泉源,等. 一種模型轉(zhuǎn)換的編織框架[J].軟件學(xué)報(bào),2006,17(6):1423-1435.
[8]JOUAULT F, KURTEV I. On the architectural alignment of ATL and QVT[C]//Proc of ACM Symp on Applied Computing (SAC 2006). New York: ACM Press, 2006:1188-1195.