国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
MDA模型驅(qū)動(dòng)介紹
    
    模型驅(qū)動(dòng)體系架構(gòu)(Model Driven Architecture, MDA)是由 OMG 提出的新的軟件方法學(xué),被面向?qū)ο蠹夹g(shù)界預(yù)言為未來(lái)幾年里最重要的軟件方法學(xué)。 
    模型驅(qū)動(dòng)體系架構(gòu)(MDA)把建模語(yǔ)言用作一種編程語(yǔ)言而不僅僅是設(shè)計(jì)語(yǔ)言,并以一種全新的方式將IT技術(shù)的一系列新的趨勢(shì)性技術(shù)整合到一起。這些技術(shù)包括基于組件的開發(fā)、設(shè)計(jì)模式、中間件、說(shuō)明性約束、抽象、多層系統(tǒng)、企業(yè)應(yīng)用整合以及契約式設(shè)計(jì)等。
    模型驅(qū)動(dòng)體系架構(gòu)(MDA)的出現(xiàn),為如何提高軟件開發(fā)效率,如何增強(qiáng)軟件的可移植性、協(xié)同工作能力、可維護(hù)性,以及如何提高文檔編制的便利性指明了解決之道。 

              

 
MDA概述
    MDA是“模型驅(qū)動(dòng)體系架構(gòu)”(Model Driven Architecture)的縮寫。它是由OMG定義的一個(gè)軟件開發(fā)框架。其關(guān)鍵之處是,模型在軟件開發(fā)過(guò)程中扮演了非常重要的角色。在MDA中,軟件開發(fā)過(guò)程是由對(duì)軟件系統(tǒng)的建模行為驅(qū)動(dòng)的。
    MDA開發(fā)生命周期和傳統(tǒng)的生命周期并沒有很大的不同。MDA的工件是形式化模型,也就是可以被計(jì)算機(jī)理解的模型。下面列出的3種模型位于MDA的核心:
· 平臺(tái)獨(dú)立模型(PIM):具有高抽象層次、獨(dú)立于任何實(shí)現(xiàn)技術(shù)的模型。 
· 平臺(tái)相關(guān)模型(PSM):為某種特定實(shí)現(xiàn)技術(shù)量身定做,讓你用這種技術(shù)中可用的實(shí)現(xiàn)構(gòu)造來(lái)描述系統(tǒng)的模型。PIM會(huì)被變換成一個(gè)或多個(gè)PSM。
· 代碼:用源代碼對(duì)系統(tǒng)的描述(規(guī)約)。每個(gè)PSM都將被變換成代碼。 
    傳統(tǒng)上,從模型到模型的變換,或者從模型到代碼的變換,主要是手工完成的。與此相反,MDA變換總是由工具執(zhí)行的,許多工具可以把PSM變換成代碼,這并不令人驚奇。MDA的創(chuàng)新之處是把PIM到PSM的變換也自動(dòng)化了。

軟件開發(fā)是什么
    Alistair Cockburn在他的Agile Software Development一書中歸納了業(yè)界對(duì)軟件開發(fā)的看法:以C.A.R Hoare為代表的數(shù)學(xué)觀、以Bertrand Meyer為代表的工程觀、以很多程序員為代表的手工藝觀,還有一些程序員則認(rèn)為軟件開發(fā)是神秘的創(chuàng)造行為。當(dāng)然,近20年來(lái),也有越來(lái)越多的人對(duì)軟件開發(fā)持建模觀,比如Ivar Jacobson就曾聲稱:軟件開發(fā)就是建模。MDA Explained一書的作者也指出:代碼就是模型。Cockburn則在他的書中獨(dú)樹一幟地提出:軟件開發(fā)是一種協(xié)作游戲。
    自然,持不同軟件開發(fā)觀的項(xiàng)目主導(dǎo)者會(huì)關(guān)注軟件開發(fā)過(guò)程的不同方面。為了節(jié)省資源,我們希望軟件開發(fā)領(lǐng)域的研究者和項(xiàng)目主導(dǎo)者(實(shí)踐者)的關(guān)注焦點(diǎn)是真正決定項(xiàng)目成敗的那個(gè)方面。否則,學(xué)術(shù)界投入大量時(shí)間精力去研究對(duì)項(xiàng)目成敗無(wú)足輕重的因素,項(xiàng)目主導(dǎo)者把大量人力物力用于控制項(xiàng)目中無(wú)關(guān)緊要的方面(如Cockburn調(diào)侃地指出的:開發(fā)場(chǎng)所的環(huán)境濕度),那豈不冤枉至極?
    那么,這個(gè)“至關(guān)重要”的方面究竟是什么呢?是工具?是過(guò)程?是整個(gè)方法學(xué)?還是人?或者是別的我們尚未注意到的因素?目前,沒有人知道確切答案?;蛟S,每個(gè)方面都對(duì)項(xiàng)目成敗有些影響吧。無(wú)論如何,因?yàn)镸DA將會(huì)對(duì)軟件開發(fā)的各個(gè)方面都產(chǎn)生深遠(yuǎn)影響,所以不管您對(duì)軟件開發(fā)持何觀點(diǎn),您都無(wú)法回避MDA。下文我將簡(jiǎn)述MDA對(duì)軟件開發(fā)各方面帶來(lái)的影響。 

MDA改變了協(xié)作游戲的角色和規(guī)則
    好吧,我們就按照Cockburn的說(shuō)法,把軟件開發(fā)看作協(xié)作游戲好了。不過(guò),任何游戲總要有參與者和游戲規(guī)則吧?目前,編碼員是重要的游戲參與者,但在MDA版本的協(xié)作游戲中,沒有這個(gè)角色了,取而代之的是建模者。但是,MDA也引入了另一個(gè)新游戲——這個(gè)游戲不是編寫軟件產(chǎn)品,而是編寫變換規(guī)則。變換規(guī)則市場(chǎng)會(huì)逐漸成長(zhǎng),就像基于組件的開發(fā)啟動(dòng)了組件市場(chǎng)那樣。在新游戲中,原來(lái)的編碼員中的精英人物將找到他們新的位置,而他們也將自豪地發(fā)現(xiàn),他們編寫的代碼將獲得程度空前的復(fù)用。至于游戲規(guī)則的改變,我在這里說(shuō)不好也說(shuō)不全,請(qǐng)您在玩新版本的游戲時(shí)慢慢體會(huì)吧J

MDA改變了開發(fā)過(guò)程
    目前,許多項(xiàng)目經(jīng)理都很注重開發(fā)過(guò)程?;蛟S因?yàn)檫^(guò)程對(duì)項(xiàng)目成敗真的很重要,或許僅僅因?yàn)檫^(guò)程是軟件開發(fā)中項(xiàng)目經(jīng)理唯一可以施加較大影響的方面。無(wú)論如何,MDA對(duì)開發(fā)過(guò)程的改變不容忽視。
    比如,開發(fā)過(guò)程的需求分析階段依然存在,不過(guò)需求分析員要編寫的不再是需求分析文檔,而是PIM——平臺(tái)獨(dú)立模型。需求分析文檔和PIM有什么區(qū)別?閱讀需求分析文檔的是人,是設(shè)計(jì)師或者程序員,但閱讀PIM的則主要是類似于編譯器的自動(dòng)工具。
    既然需求分析階段產(chǎn)生的工件改變了,那么依賴需求分析階段結(jié)果的設(shè)計(jì)階段自然也要改變,而“編碼”這項(xiàng)工作則需要完全重新定義了。測(cè)試、部署等階段也會(huì)有相應(yīng)改變。此處不再詳敘,請(qǐng)閱讀本書正文。

MDA改變了開發(fā)工具
    隨著技術(shù)的進(jìn)步,開發(fā)工具的改變一直都沒有停止。當(dāng)主流開發(fā)語(yǔ)言是匯編的時(shí)候,您可曾想象到含自動(dòng)完成、重構(gòu)、集成調(diào)試器的IDE?你可曾想到會(huì)有一天匯編代碼不再由人手寫而是由編譯器自動(dòng)生成并且可以高度優(yōu)化?那么,當(dāng)主流開發(fā)語(yǔ)言的抽象層次即將再次躍升,開發(fā)工具的革命也將到來(lái)。在MDA的世界中,“變換工具”扮演了傳統(tǒng)編譯器的角色,傳統(tǒng)編譯器則退居目前匯編器(就是把匯編語(yǔ)言翻譯成機(jī)器語(yǔ)言的程序)的地位,其余各層工具依次后退。調(diào)試器也將逐漸進(jìn)化,就如同從機(jī)器碼級(jí)調(diào)試(匯編語(yǔ)言級(jí)調(diào)試)向源碼級(jí)調(diào)試的過(guò)渡那樣,慢慢過(guò)渡到模型級(jí)調(diào)試。在IDE中最重要的也不再是基于文本的代碼編輯窗口,而是基于圖形的建模窗口。人們將像現(xiàn)在談?wù)撘粋€(gè)API函數(shù)那樣談?wù)撘粋€(gè)設(shè)計(jì)模式(design patterns),而代碼模式(idioms)將完全由變換工具自動(dòng)生成,不再是人們關(guān)心的內(nèi)容。

MDA讓你重新認(rèn)識(shí)文檔、代碼、模型
    以前,我們傾向于認(rèn)為,給人看的文檔或者模型不需要寫得太精確,因?yàn)槿丝倳?huì)有很強(qiáng)的理解力,人的大腦能夠“全自動(dòng)”地更正一些無(wú)關(guān)緊要的錯(cuò)誤并補(bǔ)全一些省略之處。另外,文檔或者模型寫得太精確是浪費(fèi)時(shí)間,因?yàn)槲臋n和模型又不能變成可以運(yùn)行的產(chǎn)品,你總是需要用代碼把模型重新翻譯一遍。Cockburn和一些XP推崇者的觀點(diǎn)更極端:文檔和模型不重要,人們拿著文檔或者圍在畫著模型的白板前的討論才重要,因?yàn)檎嬲臏贤ú皇前l(fā)生于閱讀文檔之時(shí),而是發(fā)生于人與人的討論中。
    好吧,或許以前確實(shí)如此。但MDA將完全顛覆這一現(xiàn)實(shí)。模型不再主要是給人看的了,而主要是給機(jī)器看的。寫的精確一點(diǎn)也不再是浪費(fèi)時(shí)間,因?yàn)橹粚懸槐椋恍枰侔盐臋n和模型手工翻譯成代碼)而且早晚要認(rèn)真地寫一遍。至于圍在白板前的討論——如果是在討論如何編碼實(shí)現(xiàn)某個(gè)模型,那么很抱歉,這樣的討論不再需要了。當(dāng)然,其他方面的溝通還是需要的,但必須承認(rèn),游戲規(guī)則已經(jīng)改變,游戲中的關(guān)卡已經(jīng)改變,您有了不少新的“通關(guān)任務(wù)”,而很多老任務(wù)則自然取消了。

MDA帶來(lái)了數(shù)學(xué)般的精確性
    是的,凡是能讓機(jī)器理解和自動(dòng)處理的東西都必須是數(shù)學(xué)般地精確的。您在編譯程序時(shí)有沒有遇到過(guò)這樣的編譯器信息:“警告:第nnn行代碼具有二義性”?那意思就是,請(qǐng)您把代碼寫得更精確些。那么,MDA要說(shuō)的就是,請(qǐng)您把模型建得更精確性。MDA工具會(huì)嚴(yán)格檢查您的模型以確保這一點(diǎn)的。

MDA為新方法學(xué)提供了土壤 
    如果軟件開發(fā)是游戲,那么方法學(xué)就是攻略。或許高手不需要攻略也能把游戲玩通關(guān),但大多數(shù)人在攻略的指導(dǎo)下能少走很多彎路。MDA制定了新的游戲規(guī)則,那么我們自然可以期待新版本的攻略如雨后春筍般出現(xiàn)。即便是同一個(gè)游戲,您手中有了不同的戰(zhàn)斗工具、不同的裝備,玩法也會(huì)不同。那么,既然MDA帶來(lái)了很多新一代的工具,新的方法學(xué)會(huì)誕生也不足為奇了。
    既然提到方法學(xué),我就再多說(shuō)幾句。把軟件工程中“methodology”這一術(shù)語(yǔ)譯為“方法學(xué)”其實(shí)頗具誤導(dǎo)性,因?yàn)檫@個(gè)詞的內(nèi)涵往往不是哲學(xué)老師常掛于嘴邊的“世界觀和方法學(xué)”的那個(gè)方法學(xué),而是指一系列你需要照著做的方法,或者說(shuō)一系列約束開發(fā)人員的規(guī)則。它不是“研究方法的學(xué)科”,而就是一系列方法和規(guī)則的集合。
    按照規(guī)則的多少和約束的強(qiáng)弱,可以大致地把方法學(xué)分為重型和輕型兩種。“重型方法學(xué)”比較正規(guī)和嚴(yán)謹(jǐn),在采用重型方法學(xué)的項(xiàng)目中,開發(fā)人員具有較強(qiáng)的可替換性,因?yàn)榉椒▽W(xué)本身強(qiáng)制要求開發(fā)者把他所創(chuàng)造的所有東西都記錄在案(按照該方法學(xué)規(guī)定的格式),所以參與項(xiàng)目的新人能借助這些文檔很快上手(前提是新人也熟悉這種方法學(xué)規(guī)定的格式),從而開發(fā)人員跳槽對(duì)項(xiàng)目的沖擊也相對(duì)較小。項(xiàng)目經(jīng)理們可能會(huì)比較偏愛這樣的方法學(xué),因?yàn)檫@樣一來(lái)他們掌控的因素比較多,風(fēng)險(xiǎn)就比較小。開發(fā)人員則不會(huì)喜歡這樣的方法學(xué),因?yàn)樵诓捎弥匦头椒▽W(xué)的項(xiàng)目中,他們只是可替換的螺絲釘,難以感覺到自己的重要性。而且做連篇累牘的文案工作純屬利他(對(duì)經(jīng)理、對(duì)可能加入的新人有利),毫不利己(很無(wú)聊很費(fèi)時(shí)間,而且占用的是自己本可用于開發(fā)的時(shí)間)。
    輕型方法學(xué)則具有相反的特質(zhì)。記錄在案的東西不多,交付的就是代碼以及可以跑的產(chǎn)品,當(dāng)然還有測(cè)試用例。大多數(shù)交流是口頭的、非正式的,很高效,但也只存在項(xiàng)目成員的腦海中。如果成員從項(xiàng)目中離去,那么他腦海中的這些東西也隨之帶走。因?yàn)殚_發(fā)人員往往都希望自己具有不可替代的重要性,而且一般都覺得寫程序比寫文檔好玩,再者輕裝向前可以走得比較快(因?yàn)椴槐匕褧r(shí)間浪費(fèi)于編寫正規(guī)文檔),所以開發(fā)人員一般都比較偏愛輕型方法學(xué)。
    一般而言,大型項(xiàng)目采用重型方法學(xué)好一點(diǎn),因?yàn)轫?xiàng)目人手多,周期長(zhǎng),即便所有員工都很愛戴老板很忠于公司很喜歡這個(gè)項(xiàng)目,但這么多人在這么長(zhǎng)時(shí)間內(nèi)一個(gè)都不跳槽一個(gè)都不生病一個(gè)都不結(jié)婚生孩子也是挺難辦到的。而小型項(xiàng)目則往往采用輕型方法學(xué)好一點(diǎn)。Cockburn提出的水晶方法族就充分考慮了項(xiàng)目規(guī)模的因素,當(dāng)然,還考慮了項(xiàng)目緊要性等別的因素。
    那么,MDA有沒有對(duì)某種類型的方法學(xué)特別垂青呢?沒有,MDA是“輕重咸宜”的。既然XP(極限編程)儼然已是輕型方法的招牌,那么自有好事者用模型替換代碼,提出了XM(極限建模)。輕型方法的另一特征是迭代和重構(gòu),MDA極佳的同步特性也為之提供了有力支持。而重型方法也能從MDA獲益匪淺。重型方法有一大特征就是書寫詳盡的文檔,創(chuàng)建大量的模型,那么MDA說(shuō):讓文檔更詳盡些吧,讓模型更精確些吧……詳盡精確到機(jī)器都能理解并自動(dòng)編譯了,這一量變到質(zhì)變的轉(zhuǎn)換也就完成了。
    從學(xué)術(shù)界及業(yè)界,我們已經(jīng)看到,一些傳統(tǒng)的方法學(xué)正從MDA這一變革中汲取新的養(yǎng)分,而新的方法學(xué)也能從MDA的土壤中茁壯成長(zhǎng)。或許未來(lái)20年中,又會(huì)有一批涉及MDA的新方法學(xué)著作出現(xiàn)吧。

創(chuàng)造性的腦力勞動(dòng)是無(wú)可替代的
    所有的改革都會(huì)在一定程度上重新分配社會(huì)資源,都會(huì)造成新的富人和新的窮光蛋。MDA也不例外。不過(guò)MDA所威脅到的是只會(huì)老老實(shí)實(shí)地把詳盡的設(shè)計(jì)文檔翻譯成C++或者Java代碼的人。
    社會(huì)發(fā)展的歷史就是一部機(jī)器逐漸替代人的勞動(dòng)的歷史。所以部分人失業(yè)是進(jìn)步的必然代價(jià)。不要試圖阻止技術(shù)進(jìn)步的腳步,因?yàn)榧夹g(shù)進(jìn)步的同時(shí)也會(huì)創(chuàng)造新的工作機(jī)會(huì)。比如MDA很可能就會(huì)創(chuàng)造出新的變換定義集市場(chǎng)。但是,只要您從事的工作具有創(chuàng)造性,就無(wú)法被機(jī)器取代。
    軟件設(shè)計(jì)是需要?jiǎng)?chuàng)造性的,這一創(chuàng)造性或者體現(xiàn)在代碼中,或者體現(xiàn)在文檔中。在MDA出現(xiàn)之前,如果我們認(rèn)真地編寫文檔,然后認(rèn)真地編寫代碼,那么我們進(jìn)行了兩遍創(chuàng)造性勞動(dòng),這浪費(fèi)了勞動(dòng)力。而有些軟件成熟度(CMM)級(jí)別高的企業(yè)(特別是印度和日本企業(yè))是這樣做的:認(rèn)真地編寫文檔,代碼則是文檔的精確翻譯。更多的中國(guó)企業(yè)則是這樣做的:文檔敷衍了事(敷衍CMM檢查組或者敷衍上級(jí)領(lǐng)導(dǎo)和客戶),創(chuàng)造性勞動(dòng)則在編碼階段做。這些做法的優(yōu)劣不去評(píng)述,但只要您做的是創(chuàng)造性工作,那么在MDA的世界中您會(huì)如魚得水的,因?yàn)楣ぞ咧皇菫槟?jié)約了做無(wú)聊瑣事的時(shí)間,讓您可以把精力集中到創(chuàng)造性過(guò)程中去。
    業(yè)界和IT媒體前段時(shí)間曾有“大量需要軟件藍(lán)領(lǐng)”的聲音,我不知道當(dāng)時(shí)是否真的有此需要。但我在此大膽預(yù)言:MDA一旦普及,軟件藍(lán)領(lǐng)會(huì)大量失業(yè)。因此,我敬請(qǐng)讀者您不要把“軟件藍(lán)領(lǐng)”作為您的職業(yè)生涯目標(biāo)。如要在未來(lái)立足軟件開發(fā)業(yè),請(qǐng)您永遠(yuǎn)不要放棄自己創(chuàng)造性思維的能力。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
淺析軟件工程開發(fā)方法學(xué)RUP
Scrum中文網(wǎng)_敏捷起源以及敏捷創(chuàng)始人的傳記
軟件開發(fā)過(guò)程學(xué)習(xí)總結(jié)CMM、RUP、XP
可以選擇瀑布模型作為試點(diǎn)項(xiàng)目的生命周期模型嗎?
第11章 軟件項(xiàng)目管理
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服