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