梁 晶
哈爾濱鐵道職業(yè)技術(shù)學(xué)院計算機學(xué)院,黑龍江 哈爾濱 150086
2001年7月對象管理組織OMG(Object Management Group)提出了一種新的軟件開發(fā)框架——模型驅(qū)動體系架構(gòu)MDA(Model Driven Architecture)。在MDA中,它能夠從系統(tǒng)這個層面上解決互操作的核心,因此可以實現(xiàn)不同的系統(tǒng)采用各自不同的語言來描述,從而做到平臺無關(guān)。使系統(tǒng)與平臺之間相互分離,具體的實現(xiàn)平臺與技術(shù)相互分離,通過相應(yīng)的平臺之間的映射來生成最終的模型。
在MDA基礎(chǔ)上進行開發(fā),首先應(yīng)該考查系統(tǒng)性能或是應(yīng)用程序的功能,而不是考慮用哪種技術(shù)來做。MDA對業(yè)務(wù)邏輯和實現(xiàn)細節(jié)這樣的系統(tǒng)關(guān)鍵模型進行分離,但可以把它們放在一個結(jié)構(gòu)里。所以,一旦有新的技術(shù)產(chǎn)生,我們就不用再重新進行建模了,只要重新建立起到新技術(shù)的映射關(guān)系,進行相應(yīng)的轉(zhuǎn)換,就可以直接把新技術(shù)轉(zhuǎn)換成模型。而其它的架構(gòu)通常不能達到這種效果,需要把技術(shù)與模型捆綁在一起才能完成。在采用MDA的過程中,我們對于系統(tǒng)建模,有且僅需要一次,這無疑對我們?nèi)蘸蟮墓ぷ?,提供了相當便利的條件,同時也解決了各平臺不兼容和互操作的問題。
MDA的使用,即把模型當成了開發(fā)人員的文檔,也把系統(tǒng)建模與開發(fā)結(jié)合起來。MDA根據(jù)場景的不同,同時為了更加準確的模型的功能,把模型進行了劃分,區(qū)分出他們各自的作用域:領(lǐng)域模型與系統(tǒng)模型、物理模型與邏輯模型、需求模型與計算模型、PIM與PSM。
其中PIM(Platform Independent Model)平臺無關(guān)模型,與PSM(Platform Specific Mode1)平臺相關(guān)模型是MDA開發(fā)過程中的主要的兩種模型。通過這兩種模型的運用,MDA不再是把模型和設(shè)計混淆在一起了。
PIM是平臺無關(guān)模型,能夠與平臺之間相互獨立的計算模型。它有非常高的抽象性,它不關(guān)心實現(xiàn)技術(shù),而只關(guān)心具體的業(yè)務(wù)知識和設(shè)計。由于獨立于平臺的模型也包括需求模型,所以,我們可以把PIM稱為“平臺無關(guān)的設(shè)計模型”。PIM的落腳點是從如何把軟件系統(tǒng)的業(yè)務(wù)支撐起來,至于具體用了什么具體的業(yè)務(wù)上,如在數(shù)據(jù)庫業(yè)務(wù)還是EJB服務(wù)器上,PIM對此不給予考慮。PIM是平臺無關(guān)模型,具有平臺獨立性。這個獨立是一個相對的獨立,必須建立或掛靠在某些平臺上。因此,所謂的平臺獨立也要指明與哪個平臺或哪種語言相關(guān)聯(lián),要不然,平臺獨立是沒有任何意義的。
PSM平臺相關(guān)模型,所以,PSM涉及與平臺相關(guān)的技術(shù),這是為某些特定的技術(shù)設(shè)定的,用這種特定技術(shù)可以描述某種特定的模型。因此,我們稱PSM為某種特定的技術(shù),編程語言,以及分布式組成的相關(guān)的計算模型。所以,任何一種特定的PSM模型,都包含特定的術(shù)語,PSM也對有對應(yīng)到相應(yīng)的平臺才能有意義。
MDA的主要目的是把具體業(yè)務(wù)與實現(xiàn)技術(shù)相分開,為了能夠適應(yīng)不同的業(yè)務(wù)變化,MDA建立起平臺無關(guān)模型 PIM,通過相應(yīng)的針對平臺映射法則,自動生成針對于特定業(yè)務(wù)和平臺的平臺相關(guān)模型PSM。然后再由PSM通過相應(yīng)的針對各種語言的映射法則,把PSM自動生成代碼,從而達到最終目標。在這里最核心的部分是建模過程PIM和模型轉(zhuǎn)換技術(shù)。
MDA有水平和垂直一縱一模兩個主要的發(fā)展實施線路,在MDA方法學(xué)上分為完全符合和部分符合兩方面。而在部分符合方面,又分為領(lǐng)域相關(guān)的縱向和領(lǐng)域無關(guān)的橫向水平映射,在水平同層間映射又可分為平臺無關(guān)模型PIM和平臺相關(guān)模型PSM。鑒于以各方面的研究,形成如圖1所示的幾個方向。
圖1 實施MDA的技術(shù)路線示意圖
我們首先把垂直領(lǐng)域上作為路徑1進行研究,在MDA中的路徑為(a-b-c),這雖然是一個范圍比較狹窄的領(lǐng)域范圍,但其卻具有非常重要的意義。它可以包含MDA垂直領(lǐng)域中的某些部分,也可以是對某個領(lǐng)域上進行研究。例如,在電信領(lǐng)域中,或是在電信某個領(lǐng)域系統(tǒng),如ERP系統(tǒng)等?;谶@種理念,我們可以根據(jù)它生成一個實際的可以操作應(yīng)用的系統(tǒng),如我們前邊所提出的工具等,它們都是面象數(shù)據(jù)庫,它們都具有實際意義。
我們把水平方向上研究各領(lǐng)域的轉(zhuǎn)換作為路徑2(d、e)來研究。它表示在水平方向上各層次之間的映射和轉(zhuǎn)換。路徑2中的核心思想就是規(guī)約問題,在不同的層次間普遍都具有抽象性的規(guī)約。例如,用來把語義完整定義的模型系統(tǒng),同時還把它轉(zhuǎn)換成另一個平臺無關(guān)的系統(tǒng)。
不同領(lǐng)域之間的模型設(shè)計完畢之后,把它們統(tǒng)一起來就是我們面臨的一個新問題了。其中一個有效的解決方法把各種不同領(lǐng)域模型與自身的模型向?qū)嘟Y(jié)合,效仿Eclipse軟件開發(fā)環(huán)境,這樣,不同領(lǐng)域之間模型系統(tǒng)可以互相獨立,也可以相互兼容。我們用路徑3(f)來表達處于同一級別的模型之間的映射。例如,我們采用比基本數(shù)據(jù)模型層次更高的元模型進行幫助一種數(shù)據(jù)庫類型映射到另一種數(shù)據(jù)庫存類型。
MDA中相當一部分是相當具有挑戰(zhàn)性的工作和熱點研究,即包括MDA自身的研究也包括MDA應(yīng)用方面的研究,因此,MDA也將成為示來軟件發(fā)展體系所要研究的重點內(nèi)容。如果將他們完美的結(jié)合起來,使其協(xié)調(diào)發(fā)展,將會使MDA走向更現(xiàn)實現(xiàn)全面的應(yīng)用中去。