模型驅動架構MDA

1.         什麼是MDA

MDA(Model Driven Architecture)是模型驅動架構,它是由OMG定義的一個軟件開發框架。它是一種基於UML以及其他工業標準的框架,支持軟件設計和模型的可視化、存儲和交換。和UML相比,MDA能夠創建出機器可讀和高度抽象的模型,這些模型獨立於實現技術,以標準化的方式儲存。MDA把建模語言用作一種編程語言而不僅僅是設計語言。MDA的關鍵之處是模型在軟件開發中扮演了非常重要的角色。

MDA源自於衆所周知的把系統操作的規範從系統利用底層平臺能力的方式細節中分離出來的思想,MDA提供了一種途徑(通過相關的工具)來規範化一個平臺獨立的系統、規範化平臺、爲系統選擇一個特定的實現平臺,並且把系統規範轉換到特定的實現平臺。MDA的三個主要目標是:通過架構性的分離來實現輕便性、互操作性和可重用性。

MDA中軟件開發過程是由軟件系統的建模行爲驅動的。下面是MDA的軟件開發週期:


MDA
生命週期和傳統生命週期沒有大的不同,主要的區別在於開發過程創建的工件,包括PIMPlatform Independent Model,平臺無關模型)、PSMPlatform specific Model,平臺相關模型)和代碼。PIM是具有高抽象層次、獨立任何實現技術的模型。PIM被轉換爲一個或多個PSMPSM是爲某種特定實現技術量身定做。例如,EJB PSM是用EJB結構表達的系統模型。開發的最後一步是把每個PSM變化爲代碼, PSM同應用技術密切相關。傳統的開發過程從模型到模型的變換,或者從模型到代碼的變換是手工完成的。但是MDA的變換都是由工具自動完成的。從PIMPSM,再從PSM到代碼都可以由工具實現。PIM, PSM,Code 模型被作爲軟件開發生命週期中的設計工件,在傳統的開發方式中是文檔和圖表。重要的是,它們代表了對系統不同層次的抽象,從不同的視角來看待我們的系統,將高層次的PIM 轉換到PSM 的能力提升了抽象的層次。能夠使得開發人員更加清晰地瞭解系統的整個架構,而不會被具體的實現技術所污染,同時對於複雜系統,也減少了開發人員的工作量。

MDA的出現,爲提高軟件開發效率,增強軟件的可移植性、協同工作能力和可維護性,以及文檔編制的便利性指明瞭解決之道。MDA被面向對象技術界預言爲未來兩年裏最重要的方法學。當今建模的主要問題在於,對於很多企業來說它只是紙面上的練習。這就造成了模型和代碼不同步的問題,代碼會被不斷修改,而模型不會被更新,這樣模型就失去了意義。彌補建模和開發之間的鴻溝的關鍵就在於將建模變爲開發的一個必不可少的部分。MDA 是模型驅動開發的框架,MDA 的願景是定義一種描述和創建系統的新的途徑。MDA 使得UML 的用途走得更遠,而不僅僅是美麗的圖畫。很多專家預言MDA 有可能會帶領我們進入軟件開發的另一個黃金時代。

2.         MDA框架

MDA 將軟件系統的模型分離爲平臺無關模型PIM 和特定平臺模型PSM,同時又能通過轉換規則將它們統一起來,以這樣的方式試圖去擺脫需求變更所帶來的困境。平臺無關模型PIM 是對系統高層次的抽象,其中不包括任何與實現技術相關的信息;特定平臺模型PSM是特定平臺相關的模型。在MDA 框架中,首先使用平臺無關的建模語言來搭建平臺無關的模型PIM,然後根據特定平臺和實現語言的映射規則,將PIM 轉換以生成平臺相關的模型PSM,最終生成應用程序代碼和測試框架。

MDA框架的建築材料包括:高層次模型;一種或多種標準、精確定義的語言,用來編寫高層次模型;如何把PIM變換到PSM的定義;編寫這些定義的語言,這種語言能夠被變換工具執行;能夠執行變換定義的工具;能夠執行PSM到代碼的變換工具。


上圖是MDA的框架,它的主要元素有模型、PIMPSM、語言、變換、變換定義、以及變換工具。MDA 是一個開放的,中立於軟件供應商的架構,它廣闊地支持不同的應用領域和技術平臺,能夠成爲應用領域和具體技術平臺之間的槓桿。在MDA 開發途徑中,PIM 代表對需求的建模,PSM 代表應用具體技術後的模型,這使得MDA 成爲需求和技術之間的槓桿;它們各自的改變都可以是相互獨立的,不會造成商業邏輯和實現技術的緊密藕合,同時MDA 又可以通過轉換來彌補它們之間的鴻溝,從而保護我們的投資。MDA 開發途徑使得我們的系統能夠靈活地被實現、集成、維護和測試,系統的輕便性、互操作性和可重用性都是可以長期保持的,能夠應對未來的變化。

3.         MDA的現狀

MDA 還處在一個發展的過程中,MDA還在不斷的演進。雖然MDA正朝氣蓬勃地走來,但是人們也能看出它所存在的問題。MDA最大的好處就是業務模型的持久價值,但是付出的代價是增加了抽象層,而目前看來,層之間的轉換並不是我們所期待的那樣順暢,至少,從PIMPSM,從PSM到代碼,這個實現的過程要遠比從3GL生成機器代碼來得困難。在建模技術方面,UML正在暴露其固有的缺陷,它需要擴展更多的機制來支持精確建模和分析模型,雖然目前OCL爲精確建模提供了一定的支持,但是這種支持距離可執行模型的理想還很遙遠。回顧MDA的歷史,我們可以看出UML的巨大成功爲MDA的產生奠定了堅實的基礎,同時也感覺到:在由軟件工藝到軟件工程的漫漫長路中,MDA只不過是向前邁進了一小步,但卻給整個軟件業掀起了一場波瀾,它在模型定義、開發過程等諸多方面都將對未來IT技術產生深遠的影響。

目前在MDA開發工具市場上的情形是:由於從PIM PSM轉換方法的標準化尚未完成,IBMBorland等大型廠商大都持謹慎態度,雖然也紛紛在他們的開發工具中提供部分的MDA功能,但並沒有完全遵循OMG定義的MDA規範。雖然如此,IBM除了在Rational中增加MDA功能之外,在開源項目Eclipse中,也提出了EMFEclipse Modeling Framework)這一創新的MDA代碼生成系統項目,由此可見IBMMDA這一發展中的技術的重視程度。Borland公司宣稱他們也在關注MDA技術,並且準備在Together中配置基於MDA的模型自動生成功能。相對於業界大廠的冷靜和矜持,一些中小廠商反而特別活躍,像Interactive Objects公司著名的ArcStylerCompuware公司著名的OptimalJ,還有開放源碼的AndroMDA等遵循OMG標準規範的MDA工具已在一些項目中得到了廣泛的運用,並取得了顯著的成效。

4.         MDA的相關標準

爲了實現MDA這一宏大構想,OMG制定了一系列的標準:

UMLUMLMDA用來描述各種模型。它並不是爲MDA而生,但是作爲目前最爲風行的建模語言,UML已經佔據了全球建模語言領域90%的市場份額,成爲了建模語言事實上的標準,因此OMG將它作爲MDA技術的基礎是自然而然的明智選擇。它是MDA的基礎,也是MDA最有力的武器。

MOFMOFMeta Object Facility 元對象機制)是比UML更高層次的抽象,它的目的是爲了描述UML的擴展或者其它未來可能出現的類UML的建模語言。雖然MOF也不是爲MDA而生的,但是我們可以體味到OMG的工程師們良苦的用心和長遠的目光。

XMIXMIXML-based metadata Interchange)是基於XML的元數據交換。它通過標準化的XML文檔格式和DTDsDocument Type Definitions)爲各種模型定義了一種基於XML的數據交換格式。這使得作爲最終產品的模型可以在各種不同的工具中傳遞,這一點是非常重要的,它保證了MDA不會在打破了一種束縛之後再被加上一層新的束縛。

CWMCWMCommon Warehouse Metamodel 公共倉庫元模型)提供了一種數據格式變換的手段,在任意級別的模型上都可以使用CWM來描述兩種數據模型之間的映射規則,比如將數據實體從關係數據庫變換爲XML格式。在MOF的框架下,CWM使得通用的數據模型變換引擎成爲可能。

OMG的藍圖中,UMLMOFXMICWM等一系列標準分別解決了MDA的模型建立、模型擴展、模型交換、模型變換這幾個方面的問題。OMG試圖通過標準化的定義,擴大MDA的應用範圍。同時通過這樣一個可擴展的建模語言環境,IT廠商可以自由實現自己的建模語言,以及語言到可執行代碼的映射,然而不管怎麼樣,都必須處於OMG的標準化框架之下。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章