<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA之路

    MDA,UML,XML,Eclipse及Java相關的Blog
    posts - 53, comments - 494, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    MDA的陣營劃分

    Posted on 2005-12-12 16:53 wxb_nudt 閱讀(4788) 評論(9)  編輯  收藏 所屬分類: 技術雜談

    MDA的陣營劃分

    MDA提出已經有5,6年的歷史了,其主要標準還是MOFUML(包括OCL),XMICWM四大核心。目前正在制訂的標準還有QVT(即模型的查詢、視圖和轉換)。這些標準族之間相互關聯共同組成了MDA這個龐大的體系結構。可以說,MDA是由系列的標準族加上模型驅動開發的思想共同組成的。而后續的研究者根據自己的興趣又有了不同的側重點,導致了MDA陣營的分裂(劃分?)。

    四個陣營

    Steve CookMDA研究者劃分為三個陣營,Martin Flower也同意他的觀點,并針對這三個陣營對待Language workbench的態度進行了詳細的討論。另外,Martin還提出了一個MDD陣營。總結他們兩個人的意見,可以將MDA陣營劃分為四個部分,其中有的陣營是完全對立的,而有的則是兼容并蓄的:

    1.         UML PIM陣營:使用UML來建立PIM,然后利用模型轉換來生成PSM,最后用PSM生成代碼;

    2.         MOF陣營:不使用UML,而用MOF來代替,建模語言和模型轉換都使用MOF來定義;

    3.         可執行的UML陣營:建立UML編譯器,將UML直接作為編程語言,使UML可以執行。

    (以上來自于Steve Cookblog,原文如下:

    1. The UML PIM camp: MDA involves the use of UML to build Platform Independent Models (PIMs) which are transformed into Platform Specific Models (PSMs) from which code is generated.

    2. The MOF camp: MDA does not involve the use of UML, but instead the crucial technology is MOF, and the definition of modelling languages and language transformations using MOF.

    3. The Executable UML camp: MDA involves building a UML compiler, making it a first class programming language.

    4.         MDDModel Driven Development)陣營:他們也可以說不屬于MDA的陣營,因為他們并不關心OMGMDA系列規范。他們關注的是模型驅動的開發思想,可以說,MDA就是MDDOMG規范上面的實現。

    也有部分研究者MDA劃分為狹義和廣義的兩個陣營。同上面的聯系起來看,狹義的MDA即前三個陣營,而廣義的MDAMDD陣營。我是這么認為的。

    UML PIM陣營

    UML PIM陣營可以說是目前最強大的,因為它是如此符合MDA最初的構想,從大家了解最多的UML開始建立PIM,然后轉換為PSM(例如CORBAJ2EE.NET),然后生成代碼,一切看來都如此流暢,和以前出現的技術可以兼容,并且也不缺少工具和廠商的支持。

    但是,它也是受到詬病最多的一個陣營,一個最大的問題就是關于UML是否是平臺無關的問題,如果UML不是平臺無關的,則顯然它不適合用來構建PIMMOF陣營的人對于UML的拋棄就是基于這個原因,他們認為MOF才是MDA的本源,過多的使用UML會導致不能真正的構建PIM,因為UML本身就是一個平臺。我覺得關于平臺無關的爭論可以休矣,當初C也是被認為平臺無關的,只要在不同的操作系統上重新編譯一次即可;后來的CORBA也號稱一舉解決了網絡平臺不兼容的問題;再來就是J2EE。可是,當你解決了上一個平臺相關問題時,你所創建的新技術同時變成了一個新的平臺,如CORBA平臺,J2EE平臺等。為了解決不同的CPU硬件平臺不兼容,發明了操作系統;為了解決不同的操作系統問題,發明了高級語言;為了解決網絡不兼容問題,發明了中間件;為了解決中間件不兼容的問題,發明了MDAweb service等等技術。目前看來,使用UML來建立的模型基本上具有平臺無關性,我(我是屬于UML PIM陣營的)認為使用UML來建立PIM是合適的。

    UML PIM陣營的另一個問題是,UML過于繁瑣,UML2.0標準充斥著各種各樣作用不大的填充物,不僅沒有能夠讓UML更加實用,反而導致了UML的復雜度增加,可用性下降。就好比要使用一個錘子,但是UML給出了一整個房間的工具,在里面翻了半天卻沒有找到一把合適的錘子。唉。。。因此MOF陣營的人就決定自己去造一把錘子,反正它和UML一樣,都貼有OMG出品的標簽。

    當目前的UML不能完全滿足需要時,UML給出了標準的擴充機制,也就是Profile(包括Stereotypetagged value)。但是,很多人認為UML的擴充機制和UML自身一樣,過于復雜,還不如用MOF重新構建一個建模語言(我倒不這么認為,感覺Profile還是比較簡單的)。

    還有一個不能回避的問題是,UML PIM陣營更加注重系統的結構,而不注重(不能解決)系統的語義(動作/流程),因此很多人傾向于去掉UML動作語義,或者根本不使用UML動作語義。

    盡管UML PIM有這么多的缺點,但是其優點也是顯而易見的:1.符合標準;2.對于普通的軟件從業者來說,學習UML比學習MOF要更容易一些;3.可以使用的工具更豐富一些。

    MOF陣營

    使用MOF來直接構建建模語言和模型轉換語言在一些書中稱為“重量級”方法,而使用UML Profile來擴充UML生成新的建模語言稱為“輕量級”方法。由此可見,學習和使用MOF是一件比較耗時的事情,但是這并沒有阻擋MOF陣營的腳步,他們認為MOF才是MDA的核心,才是純粹的MDA

    MOF定義的四層模型,幾乎將以往的模型概念一網打盡,在前人的基礎上(M1層和M2層的模糊概念)又定義了M3M0層。其中M2層可以包容以往所有已知的建模語言規范,然后定義了一個唯一的M3層,可以創建出所有這些建模語言,目前所有已知的模型技術中,唯有MOF是擁有M3層的,而且它是自定義的。這樣MOF兼容并蓄了所有的建模技術,成為一支獨大的元元模型工具。目前幾乎所有的建模工具都號稱MOF兼容的,因為做到這一點實在是太容易了,只要稍微修改一下自己的模型規范即可。可以這樣認為,所有不愿意使用UML的建模者,在MDA出現后一定倒向了MOF陣營。而且,新的模型語言和DSL的創建和使用者,也大部分會倒向MOF(使用UML Profile對于這些人來說,不如使用MOF來得順手和自如)。

    OMG在制訂MDA之初很明智的讓MOF脫離了UML,這樣增加了MDA的生命力,與其讓MDA技術與新的技術競爭,不如將MDA分化為幾個陣營之爭。MOF的缺點是學習困難,工具較少,而優點則是靈活自如。由于對MOF沒有深入研究過,姑妄言之。

    可執行的UML陣營

    這個陣營的人一定不會介意我將UML稱為第四代語言。在第三代語言(高級語言)瓜熟蒂落之時,就開始了第四代語言的爭論,到底第四代是屬于SQL這樣的描述性語言,還是類似于Agent系統這樣的智能系統,或者網格?神經系統?Web Service?但是這個陣營的人會自豪的告訴你,第四代語言就屬于可執行的UML,其他的無論影響力還是問題域的覆蓋性,統統不如。(可能我的語言有點偏激,大家不要砸磚。。。)

    這個陣營里面的人有個很好聽的名字,“模型程序員”。當UML真正可以執行了,對于高級語言程序員的需求量就會像現在的匯編程序員一樣稀少了。(寫到這里,想起了前年和幾個網友一起為MDACHINA論壇的《模型程序員》寫稿的日子,時光荏苒啊,轉眼都當爸爸了。)可執行的UML也是MDA研究的熱點,尤其是在MDA技術提出之初,所有的MDAer都滿心歡喜的想象UML編譯器的出現,可以將手頭的模型直接轉換為可執行程序。在OMG網站內部,就介紹了三本可執行UML的書籍。

    當然,在可以預計的將來(2,3年內?),我都想象不到可以有完全不產生高級語言代碼的UML編譯器。也許在某個局部領域內可以實現,但是能夠做到像高級語言編譯器那樣完整,在目前是根本不可能的。原因很簡單,目前的UML表達能力有限,它不能完全承載程序所需要的信息。即使是UML擴充了動作語義之后。

    那么,通過進一步的擴充UML有沒有可能呢?當然是可能的!當初誰也不認為高級語言可以完全取代匯編,可是現在已經很少有人再用匯編了(特殊領域如驅動程序等除外)。但是,目前的一個困境就是,UML已經過于臃腫了,已經由于體積的龐大遭到很多人的拋棄,如果再進一步擴充UML,是否會更加引起眾人的反感?

    對于這種困境,我建議將UML分為兩個部分:UML前臺和UML后臺。前臺是在目前UML的基礎上進行精簡,使之更加易學和實用;而后臺是為了定義UML編譯器,可以加入更多語義方面的東西。這樣,可執行UML陣營的人可以致力于定義UML后臺,使之能夠完全承載目前高級語言所能表達的語義,從而使UML的執行成為可能。類似于java虛擬機,UML虛擬機也是可能出現的,在這個虛擬機上面,用UML前臺編寫的模型可以自動運行,如果在前臺中沒有定義詳細的細節,那么后臺可以加上大量的默認值使其可以運行。

    MDD陣營

    MDD陣營嚴格說來不一定屬于MDA陣營,因為他們無視MDA的諸多規范,而是自成一體。他們是典型的“拿來主義”者,有用的就拿來,沒用的就扔掉。很多人號稱MDA的支持者,但是從來沒有遵循過任何MDA的規范。他們只是拿來了模型驅動的思想來武裝自己的開發方法。不過他們也許更加清晰的認識到MDA的精髓,畢竟他們還沒有在冗長的MDA規范中泡得發白。

    從另一個方面來說,他們是更加純粹的MDA支持者,因為MDA Guide的開頭就說:MDA is an approach to system development, which increases the power of models in that work. It is model-driven because it provides a means for using models to direct the course of understanding, design, construction, deployment, operation, maintenance and modification. MDA是一種方法,而不是僅僅是規范。

    小結

    謹以此文,獻給那些還在MDA泥潭中掙扎的戰友們,愿能拋磚引玉。很多地方都是我猜測的,不一定完全屬實,如果需要在正規文獻中引用,請參閱超鏈中的正規文獻(我鏈接的很多也不是正規文獻,汗!都是blog),或者參閱其他文檔。


    評論

    # re: MDA的陣營劃分  回復  更多評論   

    2005-12-12 18:16 by 江南白衣@ITO
    yeah,we all MDD。
    不過MDD的東西只能自己爽,不能別人爽。
    而正宗MDA是自己不爽,別人也不爽。

    # re: MDA的陣營劃分  回復  更多評論   

    2005-12-12 22:00 by wxb_nudt
    你說得很對,我現在就很不爽!!!!
    唉,路漫漫其修遠兮。

    # re: MDA的陣營劃分  回復  更多評論   

    2005-12-13 00:27 by 非魚
    我覺得MDA做為一種思想已經算是深入人心了。我是一個局外人,不知道MDA最終的目的是什么,如果說是完全的自動化,我覺得是一件不可能的事情。讓我感到最為迷惑的是,對于MDAer來說,到底是M修飾A呢,還是A修飾M?

    # re: MDA的陣營劃分  回復  更多評論   

    2005-12-13 11:09 by wxb_nudt
    當初OMG提出MDA的概念應該是想將它的兩大技術CORBA和UML統一在一個體系結構下面吧,這應該是OMG最初的目標。因為畢竟J2EE對于CORBA來說是一個巨大的威脅。
    但是OMG很快認識到如果將MDA和CORBA平臺關聯起來則沒有很長的生命力,所以MDA就自成體系了。在MOF出來之后,實際上MDA可以拋棄以往OMG的所有技術了,包括CORBA和UML。
    UML并沒有挽救CASE工具的夕陽,但是MDA的大旗一扯起來,工具廠商就蜂擁而至,其反響可能令OMG都吃驚吧。
    現在很難說是MDA規范在推動工具市場,還是不斷涌現的號稱MDA supported的工具在推動MDA技術繼續前行。
    我認為MDA的遭遇與當初人工智能的可能不同,他不僅僅可以幫助人寫paper,而是得到了眾多工具廠商的支持。雖然微軟扯起了DSL的大旗,但是包括IBM這樣的巨頭還是堅定的站在MDA陣營的(收購rational,開發MTF等)。
    所以鹿死誰手,還未可知!

    # re: MDA的陣營劃分  回復  更多評論   

    2006-01-02 16:52 by weide
    殊途同歸吧

    # re: MDA的陣營劃分  回復  更多評論   

    2006-02-10 11:12 by samuelei
    在下最近在研究MDA在仿真領域的應用問題,閱讀了UML2和MOF2等技術規范,有幾個具體問題請教wxb_nudt:

    1)MOF是在M3層,UML2是在M2層,層之間是實例化關系,但是看UML2的規范看不出UML2是如何實例化MOF2得到的,好像更多的是重用與特化關系,而不是實例化關系,不知是否正確?

    2)我目前對元模型的理解是就是建模語言,或者說元模型定義了建模語言,如果要基于MOF構造一個建模語言或元模型,應如何著手,是否存在一些步驟?或者說一個建模語言的元模型在結構上由哪些部分組成?

    以上問題還請wxb_nudt不吝賜教,謝謝!

    BTW:你的Blog以及Blog精神在下很是欽佩!

    # re: MDA的陣營劃分  回復  更多評論   

    2006-05-19 10:57 by steeven
    還好當時沒在mda上花時間 :)

    # re: MDA的陣營劃分  回復  更多評論   

    2007-12-24 01:24 by bh
    多謝學斌

    # re: MDA的陣營劃分  回復  更多評論   

    2009-02-10 13:05 by labyrinth
    博主是MDA愛好者啊!我很欣賞啊!!
    主站蜘蛛池模板: 亚洲成色在线影院| 99久久精品免费精品国产| 亚洲二区在线视频| 久久亚洲国产成人影院网站 | 亚洲精品在线播放| 亚洲精品乱码久久久久久蜜桃不卡 | 九九九精品视频免费| 亚洲熟女乱色一区二区三区 | 99热这里只有精品6免费| 免费在线人人电影网| 亚洲性日韩精品一区二区三区| h在线观看视频免费网站| 亚洲网红精品大秀在线观看| 中文字幕无码一区二区免费| 亚洲欧洲日产国码无码久久99| 好湿好大好紧好爽免费视频| 24小时日本在线www免费的| 久久国产精品成人免费| 成年女人色毛片免费看| 亚洲国产天堂在线观看| 无码一区二区三区AV免费| 亚洲综合色丁香婷婷六月图片| 国产免费不卡视频| 亚洲欧洲免费无码| 国产男女猛烈无遮挡免费视频网站| 四虎成人免费网站在线| 国产成+人+综合+亚洲专| 我要看WWW免费看插插视频| 亚洲av中文无码乱人伦在线观看 | 亚洲AV综合色区无码一区爱AV| 全部一级一级毛片免费看| 免费无码AV电影在线观看| 亚洲国产高清美女在线观看| 在线观看AV片永久免费| 亚洲天堂一区二区三区| 全部免费a级毛片| 亚洲av无码天堂一区二区三区| 日韩电影免费在线观看视频| 国产精品视频免费一区二区| 中文字幕日本人妻久久久免费| 亚洲国产成人精品91久久久|