1. 什么是MDA
MDA(Model Driven Architecture)是模型驅動(dòng)架構,它是由OMG定義的一個(gè)軟件開(kāi)發(fā)框架。它是一種基于UML以及其他工業(yè)標準的框架,支持軟件設計和模型的可視化、存儲和交換。和UML相比,MDA能夠創(chuàng )建出機器可讀和高度抽象的模型,這些模型獨立于實(shí)現技術(shù),以標準化的方式儲存。MDA把建模語(yǔ)言用作一種編程語(yǔ)言而不僅僅是設計語(yǔ)言。MDA的關(guān)鍵之處是模型在軟件開(kāi)發(fā)中扮演了非常重要的角色。
MDA源自于眾所周知的把系統操作的規范從系統利用底層平臺能力的方式細節中分離出來(lái)的思想,MDA提供了一種途徑(通過(guò)相關(guān)的工具)來(lái)規范化一個(gè)平臺獨立的系統、規范化平臺、為系統選擇一個(gè)特定的實(shí)現平臺,并且把系統規范轉換到特定的實(shí)現平臺。MDA的三個(gè)主要目標是:通過(guò)架構性的分離來(lái)實(shí)現輕便性、互操作性和可重用性。
在MDA中軟件開(kāi)發(fā)過(guò)程是由軟件系統的建模行為驅動(dòng)的。下面是MDA的軟件開(kāi)發(fā)周期:
MDA生命周期和傳統生命周期沒(méi)有大的不同,主要的區別在于開(kāi)發(fā)過(guò)程創(chuàng )建的工件,包括PIM(Platform Independent Model,平臺無(wú)關(guān)模型)、PSM(Platform specific Model,平臺相關(guān)模型)和代碼。PIM是具有高抽象層次、獨立任何實(shí)現技術(shù)的模型。PIM被轉換為一個(gè)或多個(gè)PSM。PSM是為某種特定實(shí)現技術(shù)量身定做。例如,EJB PSM是用EJB結構表達的系統模型。開(kāi)發(fā)的最后一步是把每個(gè)PSM變化為代碼, PSM同應用技術(shù)密切相關(guān)。傳統的開(kāi)發(fā)過(guò)程從模型到模型的變換,或者從模型到代碼的變換是手工完成的。但是MDA的變換都是由工具自動(dòng)完成的。從PIM到PSM,再從PSM到代碼都可以由工具實(shí)現。PIM, PSM,和Code 模型被作為軟件開(kāi)發(fā)生命周期中的設計工件,在傳統的開(kāi)發(fā)方式中是文檔和圖表。重要的是,它們代表了對系統不同層次的抽象,從不同的視角來(lái)看待我們的系統,將高層次的PIM 轉換到PSM 的能力提升了抽象的層次。能夠使得開(kāi)發(fā)人員更加清晰地了解系統的整個(gè)架構,而不會(huì )被具體的實(shí)現技術(shù)所“污染”,同時(shí)對于復雜系統,也減少了開(kāi)發(fā)人員的工作量。
MDA的出現,為提高軟件開(kāi)發(fā)效率,增強軟件的可移植性、協(xié)同工作能力和可維護性,以及文檔編制的便利性指明了解決之道。MDA被面向對象技術(shù)界預言為未來(lái)兩年里最重要的方法學(xué)。當今建模的主要問(wèn)題在于,對于很多企業(yè)來(lái)說(shuō)它只是紙面上的練習。這就造成了模型和代碼不同步的問(wèn)題,代碼會(huì )被不斷修改,而模型不會(huì )被更新,這樣模型就失去了意義。彌補建模和開(kāi)發(fā)之間的鴻溝的關(guān)鍵就在于將建模變?yōu)殚_(kāi)發(fā)的一個(gè)必不可少的部分。MDA 是模型驅動(dòng)開(kāi)發(fā)的框架,MDA 的愿景是定義一種描述和創(chuàng )建系統的新的途徑。MDA 使得UML 的用途走得更遠,而不僅僅是美麗的圖畫(huà)。很多專(zhuān)家預言MDA 有可能會(huì )帶領(lǐng)我們進(jìn)入軟件開(kāi)發(fā)的另一個(gè)黃金時(shí)代。
2. MDA框架
MDA 將軟件系統的模型分離為平臺無(wú)關(guān)模型PIM 和特定平臺模型PSM,同時(shí)又能通過(guò)轉換規則將它們統一起來(lái),以這樣的方式試圖去擺脫需求變更所帶來(lái)的困境。平臺無(wú)關(guān)模型PIM 是對系統高層次的抽象,其中不包括任何與實(shí)現技術(shù)相關(guān)的信息;特定平臺模型PSM是特定平臺相關(guān)的模型。在MDA 框架中,首先使用平臺無(wú)關(guān)的建模語(yǔ)言來(lái)搭建平臺無(wú)關(guān)的模型PIM,然后根據特定平臺和實(shí)現語(yǔ)言的映射規則,將PIM 轉換以生成平臺相關(guān)的模型PSM,最終生成應用程序代碼和測試框架。
MDA框架的“建筑材料”包括:高層次模型;一種或多種標準、精確定義的語(yǔ)言,用來(lái)編寫(xiě)高層次模型;如何把PIM變換到PSM的定義;編寫(xiě)這些定義的語(yǔ)言,這種語(yǔ)言能夠被變換工具執行;能夠執行變換定義的工具;能夠執行PSM到代碼的變換工具。
上圖是MDA的框架,它的主要元素有模型、PIM、PSM、語(yǔ)言、變換、變換定義、以及變換工具。MDA 是一個(gè)開(kāi)放的,中立于軟件供應商的架構,它廣闊地支持不同的應用領(lǐng)域和技術(shù)平臺,能夠成為應用領(lǐng)域和具體技術(shù)平臺之間的杠桿。在MDA 開(kāi)發(fā)途徑中,PIM 代表對需求的建模,PSM 代表應用具體技術(shù)后的模型,這使得MDA 成為需求和技術(shù)之間的杠桿;它們各自的改變都可以是相互獨立的,不會(huì )造成商業(yè)邏輯和實(shí)現技術(shù)的緊密藕合,同時(shí)MDA 又可以通過(guò)轉換來(lái)彌補它們之間的鴻溝,從而保護我們的投資。MDA 開(kāi)發(fā)途徑使得我們的系統能夠靈活地被實(shí)現、集成、維護和測試,系統的輕便性、互操作性和可重用性都是可以長(cháng)期保持的,能夠應對未來(lái)的變化。
3. MDA的現狀
MDA 還處在一個(gè)發(fā)展的過(guò)程中,MDA還在不斷的演進(jìn)。雖然MDA正朝氣蓬勃地走來(lái),但是人們也能看出它所存在的問(wèn)題。MDA最大的好處就是業(yè)務(wù)模型的持久價(jià)值,但是付出的代價(jià)是增加了抽象層,而目前看來(lái),層之間的轉換并不是我們所期待的那樣順暢,至少,從PIM到PSM,從PSM到代碼,這個(gè)實(shí)現的過(guò)程要遠比從3GL生成機器代碼來(lái)得困難。在建模技術(shù)方面,UML正在暴露其固有的缺陷,它需要擴展更多的機制來(lái)支持精確建模和分析模型,雖然目前OCL為精確建模提供了一定的支持,但是這種支持距離可執行模型的理想還很遙遠。回顧MDA的歷史,我們可以看出UML的巨大成功為MDA的產(chǎn)生奠定了堅實(shí)的基礎,同時(shí)也感覺(jué)到:在由軟件工藝到軟件工程的漫漫長(cháng)路中,MDA只不過(guò)是向前邁進(jìn)了一小步,但卻給整個(gè)軟件業(yè)掀起了一場(chǎng)波瀾,它在模型定義、開(kāi)發(fā)過(guò)程等諸多方面都將對未來(lái)IT技術(shù)產(chǎn)生深遠的影響。
目前在MDA開(kāi)發(fā)工具市場(chǎng)上的情形是:由于從PIM 到PSM轉換方法的標準化尚未完成,IBM、Borland等大型廠(chǎng)商大都持謹慎態(tài)度,雖然也紛紛在他們的開(kāi)發(fā)工具中提供部分的MDA功能,但并沒(méi)有完全遵循OMG定義的MDA規范。雖然如此,IBM除了在Rational中增加MDA功能之外,在開(kāi)源項目Eclipse中,也提出了EMF(Eclipse Modeling Framework)這一創(chuàng )新的MDA代碼生成系統項目,由此可見(jiàn)IBM對MDA這一發(fā)展中的技術(shù)的重視程度。Borland公司宣稱(chēng)他們也在關(guān)注MDA技術(shù),并且準備在Together中配置基于MDA的模型自動(dòng)生成功能。相對于業(yè)界大廠(chǎng)的冷靜和矜持,一些中小廠(chǎng)商反而特別活躍,像Interactive Objects公司著(zhù)名的ArcStyler、Compuware公司著(zhù)名的OptimalJ,還有開(kāi)放源碼的AndroMDA等遵循OMG標準規范的MDA工具已在一些項目中得到了廣泛的運用,并取得了顯著(zhù)的成效。
4. MDA的相關(guān)標準
為了實(shí)現MDA這一宏大構想,OMG制定了一系列的標準:
UML:UML被MDA用來(lái)描述各種模型。它并不是為MDA而生,但是作為目前最為風(fēng)行的建模語(yǔ)言,UML已經(jīng)占據了全球建模語(yǔ)言領(lǐng)域90%的市場(chǎng)份額,成為了建模語(yǔ)言事實(shí)上的標準,因此OMG將它作為MDA技術(shù)的基礎是自然而然的明智選擇。它是MDA的基礎,也是MDA最有力的武器。
MOF:MOF(Meta Object Facility 元對象機制)是比UML更高層次的抽象,它的目的是為了描述UML的擴展或者其它未來(lái)可能出現的類(lèi)UML的建模語(yǔ)言。雖然MOF也不是為MDA而生的,但是我們可以體味到OMG的工程師們良苦的用心和長(cháng)遠的目光。
XMI:XMI(XML-based metadata Interchange)是基于XML的元數據交換。它通過(guò)標準化的XML文檔格式和DTDs(Document Type Definitions)為各種模型定義了一種基于XML的數據交換格式。這使得作為最終產(chǎn)品的模型可以在各種不同的工具中傳遞,這一點(diǎn)是非常重要的,它保證了MDA不會(huì )在打破了一種束縛之后再被加上一層新的束縛。
CWM:CWM(Common Warehouse Metamodel 公共倉庫元模型)提供了一種數據格式變換的手段,在任意級別的模型上都可以使用CWM來(lái)描述兩種數據模型之間的映射規則,比如將數據實(shí)體從關(guān)系數據庫變換為XML格式。在MOF的框架下,CWM使得通用的數據模型變換引擎成為可能。
在OMG的藍圖中,UML、MOF、XMI、CWM等一系列標準分別解決了MDA的模型建立、模型擴展、模型交換、模型變換這幾個(gè)方面的問(wèn)題。OMG試圖通過(guò)標準化的定義,擴大MDA的應用范圍。同時(shí)通過(guò)這樣一個(gè)可擴展的建模語(yǔ)言環(huán)境,IT廠(chǎng)商可以自由實(shí)現自己的建模語(yǔ)言,以及語(yǔ)言到可執行代碼的映射,然而不管怎么樣,都必須處于OMG的標準化框架之下。
聯(lián)系客服