羅異
(重慶郵電大學(xué)軟件工程學(xué)院,重慶400065)
2001年對(duì)象管理組織(Object Management Group,OMG)基于面向?qū)ο蟮乃枷胩岢隽薓DA(Model Driven Architecture)標(biāo)準(zhǔn)[1]。MDA標(biāo)準(zhǔn)強(qiáng)調(diào)了模型在軟件開發(fā)過程中的重要性并將模型轉(zhuǎn)換作為軟件開發(fā)過程的核心。要使用模型對(duì)客觀世界進(jìn)行抽象,必須將模型表示出來。
模型的表示過程實(shí)質(zhì)上完成建模工具的創(chuàng)建和使用建模工具建模兩個(gè)過程。其中的建模過程基于元建模思想。元對(duì)象機(jī)制(Meta Object Facility,MOF)是MDA中描述元建模過程的標(biāo)準(zhǔn)。元建模擁有四層經(jīng)典框架[2],MOF框架套用了經(jīng)典的元建模四層框架,它將建模語言分為四個(gè)層次,分別為M0(信息層)、M1(模型層)、M2(元模型層)和 M3(元-元模型層)[3]。
統(tǒng)一建模語言(Unified Modeling Language,UML)是一種通用的可視化面向?qū)ο蠼?biāo)準(zhǔn)。它的目標(biāo)是為系統(tǒng)架構(gòu)師、軟件工程師和軟件開發(fā)人員提供分析設(shè)計(jì)和實(shí)現(xiàn)軟件系統(tǒng)、建模業(yè)務(wù)和流程的工具[4]。它包含用于描述系統(tǒng)靜態(tài)特性的結(jié)構(gòu)模型和描述系統(tǒng)動(dòng)態(tài)特性的行為模型[5]。在基于面向?qū)ο笏枷氲慕_^程中,UML建模人員使用結(jié)構(gòu)模型中的類圖對(duì)客觀世界進(jìn)行抽象并實(shí)現(xiàn)對(duì)象的重用。
面向?qū)ο笏枷雽⒖陀^世界中的事物看作一個(gè)個(gè)單獨(dú)的對(duì)象,它的根本目的是實(shí)現(xiàn)對(duì)象重用??陀^世界中的對(duì)象數(shù)量龐大且復(fù)雜,如果對(duì)每一個(gè)對(duì)象進(jìn)行標(biāo)識(shí)和理解將十分困難。為了解決這個(gè)問題,人們往往采用分類和抽象兩種基本的思維方式對(duì)客觀世界中的對(duì)象進(jìn)行認(rèn)識(shí)和實(shí)現(xiàn)對(duì)象的重用。分類的結(jié)果體現(xiàn)了面向?qū)ο笾欣^承的思想,抽象的逆過程體現(xiàn)了實(shí)例化的思想,因此分類和實(shí)例化方式都可以實(shí)現(xiàn)對(duì)象的重用。
既然繼承和實(shí)例化兩種方式都能實(shí)現(xiàn)對(duì)象的重用,那么什么情況下使用繼承方式實(shí)現(xiàn)對(duì)象重用和什么情況下使用實(shí)例化方式實(shí)現(xiàn)對(duì)象重用是需要解決問題。
本文針對(duì)上述問題,分析了人們通過分類和抽象兩種方式認(rèn)識(shí)客觀世界的過程以及兩種方式與繼承和實(shí)例化的對(duì)應(yīng)關(guān)系。使用集合和映射表示出繼承和實(shí)例化的數(shù)學(xué)模型,通過兩種方式的數(shù)學(xué)模型語義相同,給出產(chǎn)生本文主要解決的問題的本質(zhì)原因。結(jié)合類圖和類圖元模型,分析建模工具設(shè)計(jì)人員通過繼承擴(kuò)展類圖元模型的場(chǎng)景和建模人員通過實(shí)例化類圖元模型創(chuàng)建類圖的場(chǎng)景。以程序自主學(xué)習(xí)系統(tǒng)中一個(gè)實(shí)例場(chǎng)景驗(yàn)證方法的可行性。
本節(jié)圍繞因客觀世界中對(duì)象數(shù)量龐大且復(fù)雜導(dǎo)致人們難以標(biāo)識(shí)和理解對(duì)象的問題,首先介紹了人們認(rèn)識(shí)客觀世界的兩種思維方式以及他們分別與繼承和實(shí)例化的對(duì)應(yīng)關(guān)系。然后使用集合和映射表示出繼承和實(shí)例化的數(shù)學(xué)模型,最后比較兩種方式的數(shù)學(xué)模型語義并給出在模型表示過程中存在的問題。
分類的方式將客觀世界中當(dāng)前關(guān)心的范圍(即,論域)中具有相同特性的對(duì)象分為一類。每一類形成一個(gè)集合,集合中的元素就是客觀世界中屬于當(dāng)前分類結(jié)果的對(duì)象。如果分類后形成的集合中的對(duì)象仍然難以理解,人們繼續(xù)將當(dāng)前集合中的對(duì)象按照上述分類方式,將具有相同特性的對(duì)象分為一類并形成新的集合,此時(shí)新集合是原集合的子集。理論上來說,根據(jù)上述分類過程可以完成任意多次的子集劃分,但最終劃分的粒度根據(jù)實(shí)際應(yīng)用場(chǎng)景決定。
將客觀世界中的對(duì)象進(jìn)行分類后形成集合和子集的過程可以解釋為面向?qū)ο笏枷胫袑?duì)象之間的繼承關(guān)系。即當(dāng)前集合的子集中的對(duì)象同時(shí)也是當(dāng)前集合中的對(duì)象,但當(dāng)前集合的子集中的對(duì)象除了擁有當(dāng)前集合的特性外還擁有子集的特性。因此繼承的方式使得當(dāng)前集合的子集中的對(duì)象重用了當(dāng)前集合中對(duì)象的特性。
客觀世界中普遍存在這種通過分類認(rèn)識(shí)對(duì)象的方式。例如,人們將“人”論域中的對(duì)象根據(jù)性別分為“男人”和“女人”兩個(gè)集合,“男人”集合中的對(duì)象和“女人”集合中的對(duì)象都與“人”集合中的對(duì)象存在繼承關(guān)系。再比如,人們將“教職員工”論域中的對(duì)象根據(jù)教職工類別分類為“任課老師”和“教學(xué)管理員”兩個(gè)集合,“任課老師”集合中的對(duì)象和“教學(xué)管理員”集合中的對(duì)象都與“教職員工”集合中的對(duì)象存在繼承關(guān)系。
使用FacullyStaff表示“教職員工”集合,用fs表示“教職員工”集合中的元素,用Teacher表示“任課老師”集合,用t表示“任課老師”集合中的元素,用Teaching-Manager表示“教學(xué)管理員”集合,用tm表示“教學(xué)管理員”集合中的元素。則使用集合論表示上述繼承關(guān)系的語義如下。
如果用 FS表示集合 FacullyStaff,用 fsn(n=0,1,2,3…)表示FacullyStaff集合中的元素,用T表示集合Teacher,用 tn(n=0,1,2,3…)表示 Teacher集合中的元素,用TM表示集合TeachingManager,用tmn(n=0,1,2,3…)表示TeachingManager集合中的元素??梢詫⑸鲜隼^承關(guān)系的語義通過集合間的包含關(guān)系進(jìn)行表示,得到數(shù)學(xué)模型如圖1所示。
圖1 繼承的數(shù)學(xué)模型
其中,t1、t2、t3是集合 T中的元素,tm1和 tm2是集合TM中的元素,fs1、fs2是集合TS中的元素。集合T和集合TM是集合FS的子集,集合TM和集合T中的元素也是集合FS中的元素。集合T中的元素不僅僅具有集合FS的特性,還具有集合T的特性,集合TM中的元素不僅僅具有集合FS的特性,還具有集合TM的特性。
分類的方式對(duì)客觀世界中具有相同特性的對(duì)象分類并形成集合。而抽象的方式將分類形成的一個(gè)個(gè)集合分別看作一個(gè)整體,并將這些整體分別抽象為一個(gè)抽象層次更高一級(jí)的新對(duì)象。如果形成的各個(gè)新對(duì)象之間具有共同的特征,則可以繼續(xù)根據(jù)上述抽象過程,將這些新對(duì)象形成的集合看作一個(gè)整體并抽象為抽象層次更高的新對(duì)象。理論上來說,可以完成任意多次的抽象過程,但最終抽象的粒度根據(jù)實(shí)際應(yīng)用場(chǎng)景決定。
將對(duì)象分類后形成的集合看作一個(gè)整體并抽象為一個(gè)新對(duì)象的逆過程可以解釋為實(shí)例化過程。即一個(gè)集合經(jīng)過抽象形成了一個(gè)對(duì)象,一個(gè)對(duì)象經(jīng)過實(shí)例化得到了一個(gè)集合且集合中的元素為該對(duì)象的實(shí)例。因此通過實(shí)例化方法使得一個(gè)對(duì)象可以創(chuàng)建多個(gè)新對(duì)象,從而實(shí)現(xiàn)了對(duì)象的重用。
客觀世界中普遍存在這種通過抽象認(rèn)識(shí)對(duì)象的方式。例如,人們將“人”集合看作一個(gè)整體并抽象為一個(gè)對(duì)象并用字符“人”標(biāo)識(shí),將其中“男人”子集和“女人”子集兩個(gè)集合分別看作一個(gè)整體后抽象為“男人”對(duì)象和“女人”對(duì)象。再比如,人們將“教職員工”集合看作一個(gè)整體并抽象為一個(gè)對(duì)象并用字符“教職員工”標(biāo)識(shí),將其中“任課老師”和“教學(xué)管理員”兩個(gè)子集合分別看作一個(gè)整體后抽象為“任課老師”對(duì)象和“教學(xué)管理員”對(duì)象。
用FacullyStaff表示“教職員工”集合,用fs表示“教職員工”集合中的元素,用fsnew表示“教職員工”集合抽象后形成的對(duì)象。用Teacher表示“任課老師”集合,用t表示“任課老師”集合中的元素,用tnew表示“任課老師”集合抽象后形成的對(duì)象。用TeachingManager表示“教學(xué)管理員”集合,用tm表示“教學(xué)管理員”集合中的元素,用tmnew表示“教學(xué)管理員”抽象后形成的對(duì)象。用FS2fsNew表示“教職員工”集合到“教職員工”對(duì)象的映射關(guān)系,用T2tNew表示“任課老師”集合到“任課老師”對(duì)象的映射關(guān)系,用TM2tmNew表示“教學(xué)管理員”集合到“教學(xué)管理員”對(duì)象的映射關(guān)系。用NewSET表示“教職員工”對(duì)象、“任課老師”對(duì)象和“教學(xué)管理員”對(duì)象組成的集合。則使用集合論表示上述實(shí)例化關(guān)系的語義如下。
用 FS表示集合 FacullyStaff,用 fsn(n=0,1,2,3…)表示FacullyStaff集合中的元素,用T表示集合Teacher,用 tn(n=0,1,2,3…)表示 Teacher集合中的元素,用TM 表示集合 TeachingManager,用 tmn(n=0,1,2,3…)表示TeachingManager集合中的元素。用NS表示集合NewSET,用 nsn(n=0,1,2,3…)表示 NewSET 集合中的元素??梢詫⑸鲜龀橄蠛蛯?shí)例化的語義可以通過集合和集合間的映射關(guān)系進(jìn)行表示,得到數(shù)學(xué)模型如圖2所示。
圖2 實(shí)例化的數(shù)學(xué)模型
其中,ns1、ns2、ns3是集合 NS中的對(duì)象,t1、t2、t3是集合T中的對(duì)象,tm1、tm2是集合TM中的對(duì)象。ns1對(duì)象實(shí)例化得到集合T,T中的元素是ns1對(duì)象的實(shí)例;ns3對(duì)象實(shí)例化得到集合TM,TM中的元素是ns3對(duì)象的實(shí)例;ns2對(duì)象實(shí)例化得到集合FS,F(xiàn)S中的元素是ns2對(duì)象的實(shí)例。
上兩節(jié)通過數(shù)學(xué)工具分析了繼承和實(shí)例化的語義,通過將公式(4)、(5)與公式(9)-(14)比較發(fā)現(xiàn),繼承和實(shí)例化兩種方式都可以表示為集合之間的包含關(guān)系,且兩種方式的數(shù)學(xué)語義相同。既然兩種方式語義相同并且都可以實(shí)現(xiàn)對(duì)象的重用,那么什么情況下使用繼承方式實(shí)現(xiàn)對(duì)象重用,什么情況下使用實(shí)例化方式實(shí)現(xiàn)對(duì)象重用是基于MDA思想的軟件開發(fā)過程中模型的表示環(huán)節(jié)需要解決的關(guān)鍵問題。
下文首先討論建模人員建模和建模工具設(shè)計(jì)人員設(shè)計(jì)建模工具的方法,分析了建模工具設(shè)計(jì)人員創(chuàng)建建模工具過程和建模人員使用建模工具建模過程中繼承和實(shí)例化兩種方式實(shí)現(xiàn)重用的內(nèi)容,從而解決了上述問題。
本節(jié)圍繞模型表示過程中如何在適當(dāng)?shù)膱?chǎng)景選用適當(dāng)?shù)姆椒ǖ膯栴}。首先介紹建模人員通過實(shí)例化類圖元模型創(chuàng)建類圖的場(chǎng)景,然后介紹建模工具設(shè)計(jì)人員通過繼承或?qū)嵗绞綌U(kuò)展類圖的表達(dá)能力的場(chǎng)景,最后根據(jù)建模人員和建模工具設(shè)計(jì)人員在模型的表示過程中的分工場(chǎng)景給出結(jié)論。
UML建模人員使用類圖進(jìn)行建模實(shí)際上完成了在M1模型層對(duì)M0信息層的抽象和在M1模型層實(shí)例化M2層的元模型兩個(gè)過程。建模人員首先根據(jù)認(rèn)識(shí)客觀世界的思維方式對(duì)客觀世界中的對(duì)象進(jìn)行分類形成M0信息層的一個(gè)個(gè)集合并將每個(gè)集合抽象為M1層類圖中一個(gè)概念,接著實(shí)例化M2層類圖元模型中的元元素得到M1層類圖中表示上述概念的一個(gè)個(gè)類、關(guān)聯(lián)和屬性等元素。圖3展現(xiàn)了該思想。
建模人員將M0層“任課老師”集合抽象為類圖中的一個(gè)概念并使用符號(hào)“任課老師”命名,然后實(shí)例化M2層的Class元元素得到M1層類圖中代表“任課老師”概念的類;將M0層“教學(xué)管理員”集合抽象為類圖中的一個(gè)類元素并使用符號(hào)“教學(xué)管理員”命名,然后實(shí)例化M2層的Class元元素得到M1層類圖中代表“教學(xué)管理員”概念的類;將M0層“教職員工”集合抽象為類圖中的一個(gè)概念并使用符號(hào)“教職員工”命名,然后實(shí)例化M2層的Class元元素得到M1層類圖中代表“教職員工”概念的類;將M0層“學(xué)生”集合抽象為類圖中的一個(gè)概念并使用符號(hào)“學(xué)生”命名,然后實(shí)例化M2層的Class元元素得到M1層類圖中代表“學(xué)生”概念的類;將M0層“用戶”集合抽象為類圖中的一個(gè)概念并使用符號(hào)“用戶”命名,然后實(shí)例化M2層的Class元元素得到M1層類圖中代表“用戶”概念的類。
UML是一種通用的可視化面向?qū)ο蠼?biāo)準(zhǔn),它包含用于描述系統(tǒng)靜態(tài)特性的結(jié)構(gòu)模型和描述系統(tǒng)動(dòng)態(tài)特性的行為模型[5]。為使得UML建模人員能夠使用結(jié)構(gòu)模型中的類圖對(duì)基于面向?qū)ο蟮南到y(tǒng)進(jìn)行描述。必須解決如何對(duì)類圖進(jìn)行表示的問題。
元模型是一種建模工具,對(duì)于建模人員來說,也可以理解它是一種建模方法。建模人員根據(jù)建模方法完成模型的創(chuàng)建。UML建模工具設(shè)計(jì)人員通過實(shí)例化M3層元元模型中的八種元元元素,構(gòu)建了屬于M2層的UML中類圖、用例圖、時(shí)序圖和狀態(tài)圖等建模工具。對(duì)于大多數(shù)場(chǎng)景來說,UML建模人員使用類圖、狀態(tài)圖等UML建模工具就可以完成自己的建模工作。但對(duì)于特定領(lǐng)域建模,UML建模能力還不夠,需要對(duì)其進(jìn)行相應(yīng)的擴(kuò)展[5]。
圖3 抽象和實(shí)例化過程
為使得用類圖表示的領(lǐng)域模型中包含單表和主從表模式的語義,對(duì)類圖的表達(dá)能力進(jìn)行擴(kuò)展。建模工具人員通過繼承的方將對(duì)M2層類圖的元模型中“Association”元元素進(jìn)行擴(kuò)展,增加“masterDetail”擴(kuò)展屬性,使得“Association”元元素的實(shí)例具有主從表模式的語義。圖4給出擴(kuò)展結(jié)果。
圖4 擴(kuò)展的Association元元素
擴(kuò)展后的“Association”元元素?fù)碛辛恕癿asterDetail”屬性,該屬性的數(shù)據(jù)類型為Boolean型,如果該屬性值為“True”,表示當(dāng)前領(lǐng)域模型中的關(guān)聯(lián)實(shí)例具有主從表模式的語義;如果如果該屬性值為“False”,表示當(dāng)前領(lǐng)域模型中的關(guān)聯(lián)實(shí)例具有單表模式的語義。
實(shí)際軟件建模工具設(shè)計(jì)過程中,往往將繼承和實(shí)例化兩種方式結(jié)合起來使用。圖5表現(xiàn)了實(shí)例化和繼承兩種方式擴(kuò)展元模型的方式。
圖5 實(shí)例化和繼承的組合使用
M2層元模型通過M3層元元模型描述,如果當(dāng)前存在的M3層元元模型存在描述能力不足,建模工具設(shè)計(jì)人員通過繼承的方式擴(kuò)展元元模型的語義。完成元元模型擴(kuò)展后,建模工具設(shè)計(jì)人員實(shí)例化M3層擴(kuò)展的元元素,在M2層元模型中得到擴(kuò)展的元元素的實(shí)例。實(shí)例化M3層擴(kuò)展的元元模型得到M2層元模型的過程,實(shí)際上實(shí)例化了M3層擴(kuò)展前的元元模型。同理,如果M2層元模型不足描述M1層模型的語義,建模工具設(shè)計(jì)人員直接通過繼承方式在其中的元元素中增加一個(gè)屬性或增加一個(gè)新的元元素,這種方式不改變擴(kuò)展前的元模型結(jié)構(gòu)。實(shí)例化擴(kuò)展M2層擴(kuò)展的元模型得到M1層模型的過程,實(shí)際上實(shí)例化了M2層擴(kuò)展前的元模型。
根據(jù)上述建模人員和建模工具設(shè)計(jì)人員在模型的表示過程中的分工場(chǎng)景可知,采用繼承的方式時(shí),重用者扮演軟件建模工具設(shè)計(jì)人員的角色。他們?cè)贛2層通過繼承的方式將具有新語義的元元素繼承原有的元元素,實(shí)現(xiàn)對(duì)元模型語義的擴(kuò)展以及被擴(kuò)展元元素語義的重用;采用實(shí)例化的方式時(shí),重用者扮演軟件建模人員的角色。他們通過實(shí)例化M2層元模型建立M1層的模型,實(shí)現(xiàn)使用模型描述客觀世界中的對(duì)象、對(duì)象的特性和對(duì)象與對(duì)象之間的關(guān)系等。因?yàn)閷?shí)例化過程可以使用相同的建模工具描述不同的應(yīng)用場(chǎng)景,所以實(shí)例化實(shí)現(xiàn)了建模工具的重用。建模工具設(shè)計(jì)人員有時(shí)也在M3層采用繼承的方式擴(kuò)展元元模型,然后實(shí)例化元元模型得到M2層的元模型,進(jìn)而建立建模工具。這種方式中建模工具被看作一個(gè)模型,建模工具設(shè)計(jì)人員扮演了建模人員的角色。創(chuàng)建建模工具的過程實(shí)際上完成了建模人員通過實(shí)例化建立模型的過程。
綜上所述,當(dāng)在基于MDA的軟件開發(fā)過程中完成實(shí)現(xiàn)模型的表示時(shí),如果要對(duì)建模工具進(jìn)行設(shè)計(jì),則扮演建模工具設(shè)計(jì)人員角色,使用繼承或繼承結(jié)合實(shí)例化的方式實(shí)現(xiàn)重用;如果要對(duì)某個(gè)特定場(chǎng)景進(jìn)行建模,則扮演建模人員的角色,使用實(shí)例化的方式實(shí)現(xiàn)重用。
本節(jié)通過程序設(shè)計(jì)自主學(xué)習(xí)系統(tǒng)中一個(gè)使用繼承和實(shí)例化對(duì)模型進(jìn)行表示的實(shí)例來具體說明如何在適當(dāng)?shù)那闆r選用適合的方式完成模型的表示。該實(shí)例主要分為兩個(gè)部分,首先介紹在PD實(shí)現(xiàn)平臺(tái)下建模工具設(shè)計(jì)人員通過UML Profile機(jī)制擴(kuò)展類圖元模型得到類圖建模工具;然后介紹建模人員使用擴(kuò)展后的類圖建模工具建模。
《C++程序設(shè)計(jì)教程》是我校大部分理工科學(xué)生的公共基礎(chǔ)課程,其教學(xué)目的是培養(yǎng)學(xué)生的計(jì)算思維能力和讀程序基本能力。但通過任課老師課堂授課方式難以滿足學(xué)生學(xué)習(xí)的要求并且當(dāng)前存在的自主學(xué)習(xí)軟件也不能完全體現(xiàn)我校教學(xué)的特色和重點(diǎn)。因此,根據(jù)我校學(xué)生的實(shí)際情況需設(shè)計(jì)一個(gè)程序設(shè)計(jì)自主學(xué)習(xí)系統(tǒng),為對(duì)學(xué)習(xí)程序設(shè)計(jì)感興趣的學(xué)生服務(wù)。
建模人員在PD中通過其支持的UML Profile機(jī)制,使用資源文件編輯器對(duì)類圖元模型中Association元元素進(jìn)行擴(kuò)展,選擇“Association”元元素并添加“masterDetail”擴(kuò)展屬性,設(shè)置其“Data type”值為“Boolean”。圖6展示了擴(kuò)展屬性的創(chuàng)建結(jié)果。
圖6 創(chuàng)建擴(kuò)展屬性
其次,再在“Association”元元素下添加一個(gè)Form,其“Type”值為屬性選項(xiàng)卡,并將“masterDetail”擴(kuò)展屬性通過復(fù)選框的形式在Tab中進(jìn)行表示,如果復(fù)選框被勾選,表示masterDetail”擴(kuò)展屬性值為True,反之為False,默認(rèn)值為False。圖7展示了添加“masterDetail”擴(kuò)展屬性到屬性選項(xiàng)卡后的結(jié)果。
圖7 在屬性選項(xiàng)卡中添加擴(kuò)展屬性
通過上訴兩個(gè)步驟,建模工具設(shè)計(jì)人員在PD實(shí)現(xiàn)工具中完成了對(duì)類圖元模型中“Association”元元素的擴(kuò)展,接下來建模人員就可以使用擴(kuò)展后的建模工具進(jìn)行建模。
建模人員在PD中通過實(shí)例化類圖元模型中的元元素創(chuàng)建描述學(xué)生練習(xí)和任課教師出題的領(lǐng)域模型,得到的類圖表示的領(lǐng)域模型如圖8所示。
圖8 學(xué)生練習(xí)和任課教師出題的領(lǐng)域模型
如圖9所示,查看領(lǐng)域模型中關(guān)聯(lián)元素的屬性,領(lǐng)域模型中的關(guān)聯(lián)元素?fù)碛辛酥鲝谋砟J降恼Z義。建模人員在建模時(shí)可以自主選擇當(dāng)前關(guān)聯(lián)元素?fù)碛械恼Z義是主從表模式還是單表模式。
圖9 擴(kuò)展屬性的結(jié)果展示
在基于MDA的軟件開發(fā)過程中,分析繼承和實(shí)例化兩種方式的應(yīng)用場(chǎng)景,進(jìn)而指導(dǎo)模型的表示過程是本文工作的主要目的。目前國(guó)內(nèi)外研究者在研究基于MDA的軟件開發(fā)過程中模型的表示時(shí)使用到了繼承和實(shí)例化兩種方式。
文獻(xiàn)[6]為解決如何在MDA框架下以設(shè)計(jì)模式為單元進(jìn)行建模和轉(zhuǎn)換兩個(gè)問題,擴(kuò)展CMOF元元模型后得到自己定義的模式單元元模型。通過RolePlay綁定機(jī)制,解決了業(yè)務(wù)模型與模式模型的組合問題和模式單元建模問題。另外,它們?cè)谠撃J皆P偷幕A(chǔ)上定義了向EJB平臺(tái)的轉(zhuǎn)換規(guī)則,解決了以模式為單元的轉(zhuǎn)換問題。
文獻(xiàn)[7]為解決設(shè)計(jì)模式建模中存在模式消失和模式組合復(fù)雜化等問題,根據(jù)MDA和“角色”的建模思想,對(duì)設(shè)計(jì)模式中通用元素的元模型進(jìn)行了擴(kuò)展,提出了基于Ecore的設(shè)計(jì)模式建模以及模型轉(zhuǎn)換的途徑,為在MDA框架中圍繞設(shè)計(jì)模式構(gòu)建模型和實(shí)現(xiàn)模型轉(zhuǎn)換提供了一種有效的指導(dǎo)。
文獻(xiàn)[8]為解決安全苛求系統(tǒng)通常采用冗余配置來增強(qiáng)系統(tǒng)的可靠性,但是冗余結(jié)構(gòu)增加了安全苛求系統(tǒng)的復(fù)雜度。為了解決這個(gè)問題,他們通過構(gòu)造型擴(kuò)展UML對(duì)系統(tǒng)冗余結(jié)構(gòu)的描述并提供一個(gè)語義對(duì)照表,用來確定模型中的元素、關(guān)聯(lián)和構(gòu)造型語義以及相對(duì)應(yīng)的故障樹實(shí)現(xiàn)方法,提出一種與故障樹生成相關(guān)的系統(tǒng)UML模型擴(kuò)展方法。
文獻(xiàn)[9]為解決統(tǒng)一建模語言的活動(dòng)圖是描述系統(tǒng)功能的強(qiáng)有力的語言,但它缺乏用于區(qū)別地捕獲上下文感知系統(tǒng)的上下文感知需求的符號(hào)等問題,提出了具有新的符號(hào)的統(tǒng)一建模語言的活動(dòng)圖的擴(kuò)展,其使得能夠?qū)⑾到y(tǒng)功能進(jìn)行分離。并通過使用一些真實(shí)世界的案例證明了提出的擴(kuò)展方法的可行性。
文獻(xiàn)[10]為了解決特征變更在建模過程導(dǎo)致的漣漪效應(yīng)以及因此產(chǎn)生新的共性和可變性演化。他們認(rèn)為現(xiàn)有的分析方法還無法解決這個(gè)問題,會(huì)導(dǎo)致丟失一些潛在的產(chǎn)品共性,從而影響復(fù)用的效率。為了解決上述問題,他們提出了一種特征模型擴(kuò)展和演化分析方法,該方法通過擴(kuò)展特征關(guān)聯(lián)關(guān)系和模型演化元操作,實(shí)現(xiàn)對(duì)特征變更漣漪效應(yīng)的分析,最后通過案例驗(yàn)證該方法的可行性。
上述研究者的研究過程只是討論了在模型的表示過程中采用繼承方式對(duì)元模型進(jìn)行擴(kuò)展和采用實(shí)例化的方式完成模型的創(chuàng)建過程。與上述研究?jī)?nèi)容相比,本文分析了在模型表示中什么情況下選擇繼承實(shí)現(xiàn)重用,什么情況下選擇實(shí)例化實(shí)現(xiàn)重用,為基于MDA的軟件開發(fā)過程中模型的表示方法的選擇提供了理論基礎(chǔ)。
MDA是一種基于模型驅(qū)動(dòng)的軟件開發(fā)思想,它將模型看作整個(gè)開發(fā)過程中一個(gè)重要的單元,因此完成模型的表示是使用模型推動(dòng)MDA軟件開發(fā)過程的前提。本文為了解決在模型表示過程中如何選擇繼承和實(shí)例化方式的問題,分析了人們認(rèn)識(shí)客觀世界的思維方式與繼承和實(shí)例化的對(duì)應(yīng)關(guān)系,分析了在模型的表示過程中建模工具設(shè)計(jì)人員設(shè)計(jì)建模工具和建模人員使用建模工具建模的場(chǎng)景,給出了合適選用繼承,合適選用實(shí)例化實(shí)現(xiàn)重用的依據(jù)。
在下一步工作中,我們將研究如何將通過繼承和實(shí)例化兩種方式表示出的模型應(yīng)用到基于MDA的模型轉(zhuǎn)換中,使得轉(zhuǎn)換過程能夠根據(jù)源模型包含的語義轉(zhuǎn)換為目標(biāo)模型。