Jhonney的專欄

             ----人見人愛
          隨筆 - 49, 文章 - 1, 評論 - 23, 引用 - 0
          數(shù)據(jù)加載中……

          [轉(zhuǎn)]什么是MDA

              MDA(Model Driven Architecture)模型驅(qū)動架構(gòu),它是由OMG定義的一個(gè)軟件開發(fā)。它是一種基于UML以及其他工業(yè)標(biāo)準(zhǔn)的框架,支持軟件設(shè)計(jì)和模型的可視化、存儲和交換。和UML相比,MDA能夠創(chuàng)建出機(jī)器可讀和高度抽象的模型,這些模型獨(dú)立于實(shí)現(xiàn)技術(shù),以標(biāo)準(zhǔn)化的方式儲存。MDA把建模語言用作一種編程語言而不僅僅是設(shè)計(jì)語言。MDA的關(guān)鍵之處是模型在軟件開發(fā)中扮演了非常重要的角色。

                 MDA源自于眾所周知的把系統(tǒng)操作的規(guī)范從系統(tǒng)利用底層平臺能力的方式細(xì)節(jié)中分離出來的思想,MDA提供了一種途徑(通過相關(guān)的工具)來規(guī)范化一個(gè)平臺獨(dú)立的系統(tǒng)、規(guī)范化平臺、為系統(tǒng)選擇一個(gè)特定的實(shí)現(xiàn)平臺,并且把系統(tǒng)規(guī)范轉(zhuǎn)換到特定的實(shí)現(xiàn)平臺。MDA的三個(gè)主要目標(biāo)是:通過架構(gòu)性的分離來實(shí)現(xiàn)輕便性、互操作性和可重用性。

               模型驅(qū)動架構(gòu)(MDA)是OMG組織近年來一直熱炒的一個(gè)新的技術(shù)體系,同時(shí)也是眾多搞軟件模型研究人員的一個(gè)新熱點(diǎn)。MDA(模型驅(qū)動)核心的思路是希望通過對商業(yè)模型(比如企業(yè)信息化或建筑領(lǐng)域的解決方案)的領(lǐng)域研究。進(jìn)而提煉出一個(gè)相對核心的領(lǐng)域模型,同時(shí)抽象出一個(gè)PIM(平臺無關(guān)模型)。之后根據(jù)不同的開發(fā)平臺(例如.netJ2EE),應(yīng)用平臺(windowsunix)形成相應(yīng)的 PSM(平臺相關(guān)模型)。依照相應(yīng)的工具,例如 ArcStyler可以完整地生成相應(yīng)的代碼和軟件系統(tǒng)。當(dāng)然這里只是羅列出一個(gè)大致的思路和方法。

                 1 MDA理論還處在一個(gè)探索期,很多理論和方法并不成熟,當(dāng)然無從談起有成熟的工具,從目前的趨勢而言,從理論到實(shí)際的工具都離OMG組織所提出的預(yù)想有較大距離,至少還需要數(shù)年的努力才能成型

                 2目前無論是國外的開源組織還是國內(nèi)的一些組織對MDA都只是處在一個(gè)草創(chuàng)階段,很多人所謂的應(yīng)用MDA 其實(shí)都只是在MDA的體系中作一個(gè)最初的探索和嘗試。例如 ORM就是在一定層次上實(shí)現(xiàn)MDA 數(shù)據(jù)庫應(yīng)用方面的探索,但也只是解決了一個(gè)實(shí)體模型映射的問題。前幾天一個(gè)面試人員用 ArcStyler4.X 做了一個(gè)銀行POS系統(tǒng)的應(yīng)用模型,生成了一點(diǎn)還需要修改的框架代碼。就告訴我說他已經(jīng)掌握了 MDA,斯等水準(zhǔn)真是讓我汗顏!佩服!

                 3 MDA的第一個(gè)熱點(diǎn)可能是橋接器,而在MDA領(lǐng)域中,映射是個(gè)很重要的點(diǎn),而轉(zhuǎn)換和交互都只是在這個(gè)點(diǎn)上的延伸 。

                 4 目前而言,最有可能在MDA體系中得以實(shí)現(xiàn)的語言是 JAVA,盡管我很討厭JAVA的一些愚蠢方法。

                 5 MDA的核心是PIM,因?yàn)樗亲畛橄蠛蛥f(xié)同性最高的。同時(shí)就當(dāng)前形勢而言,PIM也是一個(gè)瓶頸!同時(shí)就目前的 UML2.0(從OMG那里得到最新的)而言,還不足以作為建立整個(gè)MDA體系的語言。同時(shí)對于MOF中的一些定義似乎還有提升的必要。因?yàn)閷τ谡麄€(gè)體系而言,MOF應(yīng)該更多的作為一個(gè)標(biāo)準(zhǔn),只有在標(biāo)準(zhǔn)成熟的前提下,才有可能產(chǎn)生正確的映射規(guī)則。

                 6 等到MDA風(fēng)光無限的那天,會使一部分程序員失業(yè),但不會是全部,起碼MDA工具要有人做,因?yàn)橐粋€(gè)MDA工具不足以應(yīng)付所有的領(lǐng)域。這就好比沒有一個(gè)財(cái)務(wù)系統(tǒng)能適應(yīng)所有的企業(yè)一樣。因?yàn)楦鱾€(gè)領(lǐng)域的標(biāo)準(zhǔn)化不同。

          一、MDA(模型驅(qū)動架構(gòu))背景

                 MDA目前在以下領(lǐng)域得到了應(yīng)用:

                 *銀行業(yè)
                 *
          保險(xiǎn)業(yè)
                 *
          公共企業(yè)(特別在金融管理領(lǐng)域)
                 *嵌入式系統(tǒng)
                 *
          后勤保障系統(tǒng)

                您將會看到,MDA確在其中起到了作用。

                 MDA的流程
                 MDA
          的實(shí)現(xiàn)主要集中在以下3個(gè)步驟:

                 1 首先,您用UML對您的應(yīng)用領(lǐng)域進(jìn)行高度抽象的建模,這個(gè)模型和實(shí)現(xiàn)它的技術(shù)(或者底層技術(shù))完全沒有關(guān)系。這個(gè)模型我們稱之為平臺無關(guān)模型(PIM)

                 2 然后,PIM將被轉(zhuǎn)換為一個(gè)或多個(gè)平臺相關(guān)模型(PSM)。這個(gè)翻譯的過程一般是自動實(shí)現(xiàn)的。PSM將用一個(gè)特定的實(shí)現(xiàn)技術(shù)來描述您的系統(tǒng)。它將用到這種技術(shù)所提供的種種架構(gòu),比如EJB, 數(shù)據(jù)庫模型,COM組件等等。

                 3 最后,PSM將被翻譯成源代碼。因?yàn)槊總€(gè)PSM已經(jīng)完全依靠某種特定的技術(shù),這個(gè)步驟一般是比較簡單的。

                 MDA流程中最難的一步,是從PIM生成一個(gè)PSM。它要求您對您要應(yīng)用的基礎(chǔ)技術(shù)具有豐富且鞏固的知識,另一方面,源模型(PIM)必須具備自動生成PSM所要求的足夠信息量。

                通過模板生成:MDA-light?!

               MDA的實(shí)際應(yīng)用當(dāng)中,一個(gè)較容易的實(shí)現(xiàn)是通過模板(我們稱之為MDA-light)。這樣,平臺相關(guān)模型這一步可以說是被跳過了,您可以直接從高度抽象的PIM生成源代碼。您將繼續(xù)在MDA-light的基礎(chǔ)上進(jìn)行真正意義的編程:您必須在源代碼,而不是UML,編寫細(xì)致的應(yīng)用邏輯。 

           使用MDA的前提

                 * 業(yè)界(甚至是整個(gè)世界)一個(gè)被廣泛接受的事實(shí)是:只有變化是永恒的。技術(shù)永遠(yuǎn)在革新。這在中間件領(lǐng)域尤其明顯,當(dāng)然還有數(shù)據(jù)庫技術(shù),操作系統(tǒng),甚至是編程語言都經(jīng)常變化。這些技術(shù)明顯比應(yīng)用領(lǐng)域的基本概念要變化的快。

                 * 如果您在某一特定的應(yīng)用領(lǐng)域工作,在這個(gè)領(lǐng)域中的項(xiàng)目都具有一定的相似性。整個(gè)應(yīng)用程序族或者不同的項(xiàng)目都屬于同一個(gè)應(yīng)用領(lǐng)域,那么,MDA或者生成流程將特別適合于您
          。

                MDA的優(yōu)點(diǎn)

                 * 您對建模的投資將更加持久的有效--遠(yuǎn)長于您目前實(shí)現(xiàn)它所應(yīng)用的技術(shù)。這將更有利于保護(hù)您的投資。
                 *
          您具有了技術(shù)上的靈活性。
                 *
          您將不再受技術(shù)或應(yīng)用所具有的不同變化周期的影響--MDA的幫助下,您可以中立的保持兩方面的多樣性。

                MDA的缺點(diǎn)

                 * MDA意味著更多的"組裝"而不是"開發(fā)"--在為一個(gè)應(yīng)用建立PIM的時(shí)候,您基本上沒有技術(shù)上的周旋空間。這對于今天的很多開發(fā)人員來說,還是難以想象的。
                 *
          軟件開發(fā)的創(chuàng)造性在一定程度上減弱了。開發(fā)人員常常覺得,就一種新技術(shù)展開爭論,在技術(shù)的前沿工作,是十分吸引人的。可是在MDA流程下,大量的工作是建立模型,這和具體的技術(shù)相距甚遠(yuǎn),但符合OMG的建議。
                 *
          潛在的不成熟性。UML2.0還在幼年時(shí)代。MDA工具出現(xiàn)的時(shí)間也相對很短。這里還隱藏了很多風(fēng)險(xiǎn)。

                 MDA流程和生成開發(fā)中有待解決的問題

                 * 數(shù)據(jù)和應(yīng)用程序的移植:目前在商業(yè)領(lǐng)域經(jīng)常需要面對的問題是,大量的數(shù)據(jù)和應(yīng)用程序如何向新的,MDA為基礎(chǔ)的系統(tǒng)中移植。純粹的MDA流程將把數(shù)據(jù)模型和數(shù)據(jù)庫表結(jié)構(gòu)看成是技術(shù)細(xì)節(jié)。它們不應(yīng)該對平臺無關(guān)模型(PIM)層產(chǎn)生任何影響--那么,您的MDA工具或生成器也負(fù)責(zé)生成數(shù)據(jù)庫腳本嗎?
                 *
          軟件維護(hù):編制不同的發(fā)行版本,補(bǔ)丁或者升級,是對目前正在運(yùn)行的程序進(jìn)行維護(hù)的重要組成部分。MDA怎么處理這些問題呢?每次進(jìn)行一次全新的安裝?
                 *
          投資報(bào)酬率(Return-on-Investment):從什么樣的環(huán)境和系統(tǒng)開始計(jì)算?從應(yīng)用MDA的第二個(gè)項(xiàng)目?還是從第五個(gè)開始?
                 *
          購買軟件架構(gòu)還是自主開發(fā)?
                 *
          生成器和相關(guān)工具造成了對其生產(chǎn)商的依賴--這種對生產(chǎn)商的依賴是我們以往一直極力避免的。
                 *
          企業(yè)應(yīng)用整合(EAI):高度的抽象,聽起來不錯(cuò)--但是對于已經(jīng)在運(yùn)轉(zhuǎn)的應(yīng)用系統(tǒng),怎么得到這種抽象呢?
                 
          您可以看到--潛在很多實(shí)際問題(其回答都具有重要的意義)。這些問題正是我們創(chuàng)立openMDA的原因:在很多項(xiàng)目當(dāng)中,某些以上的問題已經(jīng)得到了實(shí)驗(yàn)性的回答,您(和我們)都將從中獲益!

          二、MDA的軟件開發(fā)周期

                MDA中軟件開發(fā)過程是由軟件系統(tǒng)的建模行為驅(qū)動的。下面是MDA的軟件開發(fā)周期:

                 MDA生命周期和傳統(tǒng)生命周期沒有大的不同,主要的區(qū)別在于開發(fā)過程創(chuàng)建的工件,包括PIMPlatform Independent Model,平臺無關(guān)模型)、PSMPlatform specific Model,平臺相關(guān)模型)和代碼。PIM是具有高抽象層次、獨(dú)立任何實(shí)現(xiàn)技術(shù)的模型。PIM被轉(zhuǎn)換為一個(gè)或多個(gè)PSMPSM是為某種特定實(shí)現(xiàn)技術(shù)量身定做。例如,EJB PSM是用EJB結(jié)構(gòu)表達(dá)的系統(tǒng)模型。開發(fā)的最后一步是把每個(gè)PSM變化為代碼, PSM同應(yīng)用技術(shù)密切相關(guān)。傳統(tǒng)的開發(fā)過程從模型到模型的變換,或者從模型到代碼的變換是手工完成的。但是MDA的變換都是由工具自動完成的。從PIMPSM,再從PSM到代碼都可以由工具實(shí)現(xiàn)。PIM, PSM,Code 模型被作為軟件開發(fā)生命周期中的設(shè)計(jì)工件,在傳統(tǒng)的開發(fā)方式中是文檔和圖表。重要的是,它們代表了對系統(tǒng)不同層次的抽象,從不同的視角來看待我們的系統(tǒng),將高層次的PIM 轉(zhuǎn)換到PSM 的能力提升了抽象的層次。能夠使得開發(fā)人員更加清晰地了解系統(tǒng)的整個(gè)架構(gòu),而不會被具體的實(shí)現(xiàn)技術(shù)所污染,同時(shí)對于復(fù)雜系統(tǒng),也減少了開發(fā)人員的工作量。

                 MDA的出現(xiàn),為提高軟件開發(fā)效率,增強(qiáng)軟件的可移植性、協(xié)同工作能力和可維護(hù)性,以及文檔編制的便利性指明了解決之道。MDA面向?qū)ο?/u>技術(shù)界預(yù)言為未來兩年里最重要的方法學(xué)。當(dāng)今建模的主要問題在于,對于很多企業(yè)來說它只是紙面上的練習(xí)。這就造成了模型和代碼不同步的問題,代碼會被不斷修改,而模型不會被更新,這樣模型就失去了意義。彌補(bǔ)建模和開發(fā)之間的鴻溝的關(guān)鍵就在于將建模變?yōu)殚_發(fā)的一個(gè)必不可少的部分。MDA 是模型驅(qū)動開發(fā)的框架,MDA 的愿景是定義一種描述和創(chuàng)建系統(tǒng)的新的途徑。MDA 使得UML 的用途走得更遠(yuǎn),而不僅僅是美麗的圖畫。很多專家預(yù)言MDA 有可能會帶領(lǐng)我們進(jìn)入軟件開發(fā)的另一個(gè)黃金時(shí)代。

          三、MDA框架

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

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


                
          上圖是MDA的框架,它的主要元素有模型、PIM、PSM、語言、變換、變換定義、以及變換工具。MDA 是一個(gè)開放的,中立于軟件供應(yīng)商的架構(gòu),它廣闊地支持不同的應(yīng)用領(lǐng)域和技術(shù)平臺,能夠成為應(yīng)用領(lǐng)域和具體技術(shù)平臺之間的杠桿。在MDA 開發(fā)途徑中,PIM 代表對需求的建模,PSM 代表應(yīng)用具體技術(shù)后的模型,這使得MDA 成為需求和技術(shù)之間的杠桿;它們各自的改變都可以是相互獨(dú)立的,不會造成商業(yè)邏輯和實(shí)現(xiàn)技術(shù)的緊密藕合,同時(shí)MDA 又可以通過轉(zhuǎn)換來彌補(bǔ)它們之間的鴻溝,從而保護(hù)我們的投資。MDA 開發(fā)途徑使得我們的系統(tǒng)能夠靈活地被實(shí)現(xiàn)、集成、維護(hù)和測試,系統(tǒng)的輕便性、互操作性和可重用性都是可以長期保持的,能夠應(yīng)對未來的變化。

          四、MDA的現(xiàn)狀

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

                目前在MDA開發(fā)工具市場上的情形是:由于從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中,也提出了EMFEclipse Modeling Framework)這一創(chuàng)新的MDA代碼生成系統(tǒng)項(xiàng)目,由此可見IBMMDA這一發(fā)展中的技術(shù)的重視程度。Borland公司宣稱他們也在關(guān)注MDA技術(shù),并且準(zhǔn)備在Together中配置基于MDA的模型自動生成功能。相對于業(yè)界大廠的冷靜和矜持,一些中小廠商反而特別活躍,像Interactive Objects公司著名的ArcStyler、Compuware公司著名的OptimalJ,還有開放源碼AndroMDA等遵循OMG標(biāo)準(zhǔn)規(guī)范的MDA工具已在一些項(xiàng)目中得到了廣泛的運(yùn)用,并取得了顯著的成效。

          五、MDA的相關(guān)標(biāo)準(zhǔn)

                為了實(shí)現(xiàn)MDA這一宏大構(gòu)想,OMG制定了一系列的標(biāo)準(zhǔn):

                 UMLUMLMDA用來描述各種模型。它并不是為MDA而生,但是作為目前最為風(fēng)行的建模語言,UML已經(jīng)占據(jù)了全球建模語言領(lǐng)域90%的市場份額,成為了建模語言事實(shí)上的標(biāo)準(zhǔn),因此OMG將它作為MDA技術(shù)的基礎(chǔ)是自然而然的明智選擇。它是MDA的基礎(chǔ),也是MDA最有力的武器。

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

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

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

                OMG的藍(lán)圖中,UMLMOF、XMI、CWM等一系列標(biāo)準(zhǔn)分別解決了MDA的模型建立、模型擴(kuò)展、模型交換、模型變換這幾個(gè)方面的問題。OMG試圖通過標(biāo)準(zhǔn)化的定義,擴(kuò)大MDA的應(yīng)用范圍。同時(shí)通過這樣一個(gè)可擴(kuò)展的建模語言環(huán)境,IT廠商可以自由實(shí)現(xiàn)自己的建模語言,以及語言到可執(zhí)行代碼的映射,然而不管怎么樣,都必須處于OMG的標(biāo)準(zhǔn)化框架之下。

          posted on 2007-07-13 21:00 Jhonney 閱讀(406) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 兴仁县| 太仆寺旗| 筠连县| 娄底市| 高阳县| 北票市| 宁夏| 治县。| 宕昌县| 阜宁县| 东兴市| 绥江县| 长武县| 昌图县| 谢通门县| 三江| 三都| 大理市| 南丹县| 吉首市| 西林县| 丰城市| 锦州市| 博客| 会同县| 泰安市| 浑源县| 广汉市| 利辛县| 黄大仙区| 潮安县| 五台县| 绵竹市| 河北省| 清流县| 祁阳县| 天全县| 从江县| 玛曲县| 秦安县| 榆社县|