Defining Languages andInterchanging Models
在OMG的MDA旗幟下還有另一個(gè)重要的技術(shù):MOF。MOF是一個(gè)比UML更加抽象和難以理解的技術(shù)。理解了這個(gè)還有更難理解的術(shù)語(yǔ),象metamodel(元模型)和meta-metamodel(元-元模型),感謝還沒(méi)有出現(xiàn)meta-meta-meta-model,我們也會(huì)盡力阻止出現(xiàn)。
MOF主要作兩個(gè)工作。第一,它是一個(gè)被設(shè)計(jì)成定義建模語(yǔ)言的領(lǐng)域定義建模語(yǔ)言:一個(gè)MOF模型是一個(gè)MDA建模語(yǔ)言的定義。第二,它是一種計(jì)算一個(gè)MDA模型如何被序列化到一個(gè)XML文檔或Java API的機(jī)制。
一個(gè)領(lǐng)域的建模語(yǔ)言包含很多方面,它必須定義領(lǐng)域中的概念,必須把概念表示為圖形或文本,必須定義用戶如何與語(yǔ)言交互,必須定義一個(gè)模型是否合法,必須定義模型間如何交互。但是MOF僅僅定義了語(yǔ)言的基本概念,以及概念的模型如何存儲(chǔ)和交互。一種語(yǔ)言的MOF說(shuō)明并沒(méi)有提供多少用戶真正關(guān)心的東西:語(yǔ)言所包含的模型是什么,它看起來(lái)象什么,用戶如何和模型交互。
在微軟,我們希望我們的語(yǔ)言能夠整合到Visual Studio包括IntelliSense®,工具欄,菜單,屬性欄,和對(duì)Debug的支持,我們發(fā)現(xiàn)定義如何對(duì)概念建模在整個(gè)工作中只是一個(gè)次要的方面,而且我們的語(yǔ)言定義工具要整合到Visual Studio中要比MOF好。
事實(shí)上,盡管這是語(yǔ)言定義技術(shù)的通常的地位,MOF仍然是一個(gè)存儲(chǔ)概念模型,并且使用XMI(XML Metadata Interchange)在模型和CORBA和Java API之間轉(zhuǎn)換的主要技術(shù)。如果使用MOF來(lái)定義一種語(yǔ)言的概念,接下來(lái)就可以使用XMI的方法來(lái)進(jìn)行對(duì)語(yǔ)言的基于XML的自動(dòng)生成。
從這個(gè)方面看,這似乎是挺吸引人的,但是,還是有一些問(wèn)題。首先,XML的生成基于語(yǔ)言的定義,這也就意味著使用UML1.4標(biāo)準(zhǔn)進(jìn)行的XMI序列化將無(wú)法被基于UML2.0的實(shí)現(xiàn)所理解,除非用戶在這些概念的觀點(diǎn)能夠保持前后一致。再者,XMI本身就在變化,也就是說(shuō)可能會(huì)出現(xiàn)對(duì)與同一個(gè)模型的不同XMI序列化版本。第三,MOF的定義也在變化,它會(huì)為了對(duì)付不同的組合而不斷加入新的元素,這將導(dǎo)致MOF的版本具有不同的取向,而且無(wú)法完全一致。所以,雖然XMI宣稱為建模工具提供互操作性,但是實(shí)際情況是,除非每個(gè)工具都能夠支持MOF,XMI,UML標(biāo)準(zhǔn)下的所有可能的組合,工具之間的交互才是沒(méi)問(wèn)題的。XMI的更深層次問(wèn)題是,特別是對(duì)于舊版本,由機(jī)器生成的XML架構(gòu)常常冗長(zhǎng)且難以閱讀,這就迫使開(kāi)發(fā)者們?nèi)で罂梢暬潭雀叩,可轉(zhuǎn)換的技術(shù)來(lái)維護(hù)XML文檔。mda.com
我們不認(rèn)為XMI對(duì)于模型的序列化來(lái)說(shuō)是正確的方法。XML正在變的成熟,市場(chǎng)上有大量的模式和工具。我們認(rèn)為正確的方法是,對(duì)特定的建模語(yǔ)言有他自己特定的XML架構(gòu),并且提供工具來(lái)管理語(yǔ)言和序列化格式間如何自動(dòng)解釋和映射。如果對(duì)一個(gè)特定領(lǐng)域進(jìn)行標(biāo)準(zhǔn)化,XML架構(gòu)就可以是標(biāo)準(zhǔn)的,這是業(yè)界廣泛存在的觀點(diǎn)。之后,如果語(yǔ)言的定義發(fā)展了,可以在舊的XML架構(gòu)上擴(kuò)充,進(jìn)行移植。XMI有效地阻止了這個(gè)清晰的思路發(fā)展,并導(dǎo)致了大量不兼容的XML架構(gòu)標(biāo)準(zhǔn),和它的互操作的目的完全背離了。
簡(jiǎn)而言之,微軟不支持MOF是因?yàn)橄旅娴脑颍?BR> 1. 它還不是個(gè)穩(wěn)定的標(biāo)準(zhǔn) 使用它來(lái)作為設(shè)計(jì)我們的工具的語(yǔ)言會(huì)產(chǎn)生我們不愿看到的結(jié)果。 支持MOF所沒(méi)有提供的元素需要商業(yè)級(jí)的實(shí)現(xiàn),我們會(huì)繼續(xù)引入MOF定義的改動(dòng)。 MOF沒(méi)有實(shí)現(xiàn)自己的目標(biāo)。
結(jié)論:討論了模型在軟件開(kāi)發(fā)中的角色,特別是domain-specific languages的定義和使用,以及在產(chǎn)品線中的使用,同時(shí)對(duì)OMG的MDA作了總體的評(píng)價(jià)。我們確信在敏捷軟件開(kāi)發(fā)過(guò)程中模型會(huì)得到更多的使用,我們正在構(gòu)筑工具和技術(shù)來(lái)支持這些開(kāi)發(fā)。我們看到UML作為重要的一步,它的未來(lái)是基于圖釋的開(kāi)發(fā)者間的約定,而且可以作為面向特定問(wèn)題領(lǐng)域的領(lǐng)域定義語(yǔ)言的靈感。也看到XML是模型的表現(xiàn)和交互的關(guān)鍵技術(shù),我們期望對(duì)領(lǐng)域內(nèi)容的標(biāo)準(zhǔn)化能盡早開(kāi)始。
轉(zhuǎn)帖于:軟件水平考試_考試吧
版權(quán)聲明 --------------------------------------------------------------------------------------
如果
軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系
,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本
軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。