免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版
打開APP
未登錄
開通VIP,暢享免費電子書等14項超值服
開通VIP
首頁
好書
留言交流
下載APP
聯(lián)系客服
MDA模型驅動介紹
燮羽
>《軟件工程》
2010.11.14
關注
模型驅動體系架構(Model Driven Architecture, MDA)是由 OMG 提出的新的軟件方法學,被面向對象技術界預言為未來幾年里最重要的軟件方法學。
模型驅動體系架構(MDA)把建模語言用作一種編程語言而不僅僅是設計語言,并以一種全新的方式將IT技術的一系列新的趨勢性技術整合到一起。這些技術包括基于組件的開發(fā)、設計模式、中間件、說明性約束、抽象、多層系統(tǒng)、企業(yè)應用整合以及契約式設計等。
模型驅動體系架構(MDA)的出現(xiàn),為如何提高軟件開發(fā)效率,如何增強軟件的可移植性、協(xié)同工作能力、可維護性,以及如何提高文檔編制的便利性指明了解決之道。
MDA概述
MDA是“模型驅動體系架構”(Model Driven Architecture)的縮寫。它是由OMG定義的一個軟件開發(fā)框架。其關鍵之處是,模型在軟件開發(fā)過程中扮演了非常重要的角色。在MDA中,軟件開發(fā)過程是由對軟件系統(tǒng)的建模行為驅動的。
MDA開發(fā)生命周期和傳統(tǒng)的生命周期并沒有很大的不同。MDA的工件是形式化模型,也就是可以被計算機理解的模型。下面列出的3種模型位于MDA的核心:
· 平臺獨立模型(PIM):具有高抽象層次、獨立于任何實現(xiàn)技術的模型。
· 平臺相關模型(PSM):為某種特定實現(xiàn)技術量身定做,讓你用這種技術中可用的實現(xiàn)構造來描述系統(tǒng)的模型。PIM會被變換成一個或多個PSM。
· 代碼:用源代碼對系統(tǒng)的描述(規(guī)約)。每個PSM都將被變換成代碼。
傳統(tǒng)上,從模型到模型的變換,或者從模型到代碼的變換,主要是手工完成的。與此相反,MDA變換總是由工具執(zhí)行的,許多工具可以把PSM變換成代碼,這并不令人驚奇。MDA的創(chuàng)新之處是把PIM到PSM的變換也自動化了。
軟件開發(fā)是什么
Alistair Cockburn在他的Agile Software Development一書中歸納了業(yè)界對軟件開發(fā)的看法:以C.A.R Hoare為代表的數(shù)學觀、以Bertrand Meyer為代表的工程觀、以很多程序員為代表的手工藝觀,還有一些程序員則認為軟件開發(fā)是神秘的創(chuàng)造行為。當然,近20年來,也有越來越多的人對軟件開發(fā)持建模觀,比如Ivar Jacobson就曾聲稱:軟件開發(fā)就是建模。MDA Explained一書的作者也指出:代碼就是模型。Cockburn則在他的書中獨樹一幟地提出:軟件開發(fā)是一種協(xié)作游戲。
自然,持不同軟件開發(fā)觀的項目主導者會關注軟件開發(fā)過程的不同方面。為了節(jié)省資源,我們希望軟件開發(fā)領域的研究者和項目主導者(實踐者)的關注焦點是真正決定項目成敗的那個方面。否則,學術界投入大量時間精力去研究對項目成敗無足輕重的因素,項目主導者把大量人力物力用于控制項目中無關緊要的方面(如Cockburn調侃地指出的:開發(fā)場所的環(huán)境濕度),那豈不冤枉至極?
那么,這個“至關重要”的方面究竟是什么呢?是工具?是過程?是整個方法學?還是人?或者是別的我們尚未注意到的因素?目前,沒有人知道確切答案。或許,每個方面都對項目成敗有些影響吧。無論如何,因為MDA將會對軟件開發(fā)的各個方面都產(chǎn)生深遠影響,所以不管您對軟件開發(fā)持何觀點,您都無法回避MDA。下文我將簡述MDA對軟件開發(fā)各方面帶來的影響。
MDA改變了協(xié)作游戲的角色和規(guī)則
好吧,我們就按照Cockburn的說法,把軟件開發(fā)看作協(xié)作游戲好了。不過,任何游戲總要有參與者和游戲規(guī)則吧?目前,編碼員是重要的游戲參與者,但在MDA版本的協(xié)作游戲中,沒有這個角色了,取而代之的是建模者。但是,MDA也引入了另一個新游戲——這個游戲不是編寫軟件產(chǎn)品,而是編寫變換規(guī)則。變換規(guī)則市場會逐漸成長,就像基于組件的開發(fā)啟動了組件市場那樣。在新游戲中,原來的編碼員中的精英人物將找到他們新的位置,而他們也將自豪地發(fā)現(xiàn),他們編寫的代碼將獲得程度空前的復用。至于游戲規(guī)則的改變,我在這里說不好也說不全,請您在玩新版本的游戲時慢慢體會吧J
MDA改變了開發(fā)過程
目前,許多項目經(jīng)理都很注重開發(fā)過程。或許因為過程對項目成敗真的很重要,或許僅僅因為過程是軟件開發(fā)中項目經(jīng)理唯一可以施加較大影響的方面。無論如何,MDA對開發(fā)過程的改變不容忽視。
比如,開發(fā)過程的需求分析階段依然存在,不過需求分析員要編寫的不再是需求分析文檔,而是PIM——平臺獨立模型。需求分析文檔和PIM有什么區(qū)別?閱讀需求分析文檔的是人,是設計師或者程序員,但閱讀PIM的則主要是類似于編譯器的自動工具。
既然需求分析階段產(chǎn)生的工件改變了,那么依賴需求分析階段結果的設計階段自然也要改變,而“編碼”這項工作則需要完全重新定義了。測試、部署等階段也會有相應改變。此處不再詳敘,請閱讀本書正文。
MDA改變了開發(fā)工具
隨著技術的進步,開發(fā)工具的改變一直都沒有停止。當主流開發(fā)語言是匯編的時候,您可曾想象到含自動完成、重構、集成調試器的IDE?你可曾想到會有一天匯編代碼不再由人手寫而是由編譯器自動生成并且可以高度優(yōu)化?那么,當主流開發(fā)語言的抽象層次即將再次躍升,開發(fā)工具的革命也將到來。在MDA的世界中,“變換工具”扮演了傳統(tǒng)編譯器的角色,傳統(tǒng)編譯器則退居目前匯編器(就是把匯編語言翻譯成機器語言的程序)的地位,其余各層工具依次后退。調試器也將逐漸進化,就如同從機器碼級調試(匯編語言級調試)向源碼級調試的過渡那樣,慢慢過渡到模型級調試。在IDE中最重要的也不再是基于文本的代碼編輯窗口,而是基于圖形的建模窗口。人們將像現(xiàn)在談論一個API函數(shù)那樣談論一個設計模式(design patterns),而代碼模式(idioms)將完全由變換工具自動生成,不再是人們關心的內容。
MDA讓你重新認識文檔、代碼、模型
以前,我們傾向于認為,給人看的文檔或者模型不需要寫得太精確,因為人總會有很強的理解力,人的大腦能夠“全自動”地更正一些無關緊要的錯誤并補全一些省略之處。另外,文檔或者模型寫得太精確是浪費時間,因為文檔和模型又不能變成可以運行的產(chǎn)品,你總是需要用代碼把模型重新翻譯一遍。Cockburn和一些XP推崇者的觀點更極端:文檔和模型不重要,人們拿著文檔或者圍在畫著模型的白板前的討論才重要,因為真正的溝通不是發(fā)生于閱讀文檔之時,而是發(fā)生于人與人的討論中。
好吧,或許以前確實如此。但MDA將完全顛覆這一現(xiàn)實。模型不再主要是給人看的了,而主要是給機器看的。寫的精確一點也不再是浪費時間,因為只寫一遍(您不需要再把文檔和模型手工翻譯成代碼)而且早晚要認真地寫一遍。至于圍在白板前的討論——如果是在討論如何編碼實現(xiàn)某個模型,那么很抱歉,這樣的討論不再需要了。當然,其他方面的溝通還是需要的,但必須承認,游戲規(guī)則已經(jīng)改變,游戲中的關卡已經(jīng)改變,您有了不少新的“通關任務”,而很多老任務則自然取消了。
MDA帶來了數(shù)學般的精確性
是的,凡是能讓機器理解和自動處理的東西都必須是數(shù)學般地精確的。您在編譯程序時有沒有遇到過這樣的編譯器信息:“警告:第nnn行代碼具有二義性”?那意思就是,請您把代碼寫得更精確些。那么,MDA要說的就是,請您把模型建得更精確性。MDA工具會嚴格檢查您的模型以確保這一點的。
MDA為新方法學提供了土壤
如果軟件開發(fā)是游戲,那么方法學就是攻略?;蛟S高手不需要攻略也能把游戲玩通關,但大多數(shù)人在攻略的指導下能少走很多彎路。MDA制定了新的游戲規(guī)則,那么我們自然可以期待新版本的攻略如雨后春筍般出現(xiàn)。即便是同一個游戲,您手中有了不同的戰(zhàn)斗工具、不同的裝備,玩法也會不同。那么,既然MDA帶來了很多新一代的工具,新的方法學會誕生也不足為奇了。
既然提到方法學,我就再多說幾句。把軟件工程中“methodology”這一術語譯為“方法學”其實頗具誤導性,因為這個詞的內涵往往不是哲學老師常掛于嘴邊的“世界觀和方法學”的那個方法學,而是指一系列你需要照著做的方法,或者說一系列約束開發(fā)人員的規(guī)則。它不是“研究方法的學科”,而就是一系列方法和規(guī)則的集合。
按照規(guī)則的多少和約束的強弱,可以大致地把方法學分為重型和輕型兩種。“重型方法學”比較正規(guī)和嚴謹,在采用重型方法學的項目中,開發(fā)人員具有較強的可替換性,因為方法學本身強制要求開發(fā)者把他所創(chuàng)造的所有東西都記錄在案(按照該方法學規(guī)定的格式),所以參與項目的新人能借助這些文檔很快上手(前提是新人也熟悉這種方法學規(guī)定的格式),從而開發(fā)人員跳槽對項目的沖擊也相對較小。項目經(jīng)理們可能會比較偏愛這樣的方法學,因為這樣一來他們掌控的因素比較多,風險就比較小。開發(fā)人員則不會喜歡這樣的方法學,因為在采用重型方法學的項目中,他們只是可替換的螺絲釘,難以感覺到自己的重要性。而且做連篇累牘的文案工作純屬利他(對經(jīng)理、對可能加入的新人有利),毫不利己(很無聊很費時間,而且占用的是自己本可用于開發(fā)的時間)。
輕型方法學則具有相反的特質。記錄在案的東西不多,交付的就是代碼以及可以跑的產(chǎn)品,當然還有測試用例。大多數(shù)交流是口頭的、非正式的,很高效,但也只存在項目成員的腦海中。如果成員從項目中離去,那么他腦海中的這些東西也隨之帶走。因為開發(fā)人員往往都希望自己具有不可替代的重要性,而且一般都覺得寫程序比寫文檔好玩,再者輕裝向前可以走得比較快(因為不必把時間浪費于編寫正規(guī)文檔),所以開發(fā)人員一般都比較偏愛輕型方法學。
一般而言,大型項目采用重型方法學好一點,因為項目人手多,周期長,即便所有員工都很愛戴老板很忠于公司很喜歡這個項目,但這么多人在這么長時間內一個都不跳槽一個都不生病一個都不結婚生孩子也是挺難辦到的。而小型項目則往往采用輕型方法學好一點。Cockburn提出的水晶方法族就充分考慮了項目規(guī)模的因素,當然,還考慮了項目緊要性等別的因素。
那么,MDA有沒有對某種類型的方法學特別垂青呢?沒有,MDA是“輕重咸宜”的。既然XP(極限編程)儼然已是輕型方法的招牌,那么自有好事者用模型替換代碼,提出了XM(極限建模)。輕型方法的另一特征是迭代和重構,MDA極佳的同步特性也為之提供了有力支持。而重型方法也能從MDA獲益匪淺。重型方法有一大特征就是書寫詳盡的文檔,創(chuàng)建大量的模型,那么MDA說:讓文檔更詳盡些吧,讓模型更精確些吧……詳盡精確到機器都能理解并自動編譯了,這一量變到質變的轉換也就完成了。
從學術界及業(yè)界,我們已經(jīng)看到,一些傳統(tǒng)的方法學正從MDA這一變革中汲取新的養(yǎng)分,而新的方法學也能從MDA的土壤中茁壯成長?;蛟S未來20年中,又會有一批涉及MDA的新方法學著作出現(xiàn)吧。
創(chuàng)造性的腦力勞動是無可替代的
所有的改革都會在一定程度上重新分配社會資源,都會造成新的富人和新的窮光蛋。MDA也不例外。不過MDA所威脅到的是只會老老實實地把詳盡的設計文檔翻譯成C++或者Java代碼的人。
社會發(fā)展的歷史就是一部機器逐漸替代人的勞動的歷史。所以部分人失業(yè)是進步的必然代價。不要試圖阻止技術進步的腳步,因為技術進步的同時也會創(chuàng)造新的工作機會。比如MDA很可能就會創(chuàng)造出新的變換定義集市場。但是,只要您從事的工作具有創(chuàng)造性,就無法被機器取代。
軟件設計是需要創(chuàng)造性的,這一創(chuàng)造性或者體現(xiàn)在代碼中,或者體現(xiàn)在文檔中。在MDA出現(xiàn)之前,如果我們認真地編寫文檔,然后認真地編寫代碼,那么我們進行了兩遍創(chuàng)造性勞動,這浪費了勞動力。而有些軟件成熟度(CMM)級別高的企業(yè)(特別是印度和日本企業(yè))是這樣做的:認真地編寫文檔,代碼則是文檔的精確翻譯。更多的中國企業(yè)則是這樣做的:文檔敷衍了事(敷衍CMM檢查組或者敷衍上級領導和客戶),創(chuàng)造性勞動則在編碼階段做。這些做法的優(yōu)劣不去評述,但只要您做的是創(chuàng)造性工作,那么在MDA的世界中您會如魚得水的,因為工具只是為您節(jié)約了做無聊瑣事的時間,讓您可以把精力集中到創(chuàng)造性過程中去。
業(yè)界和IT媒體前段時間曾有“大量需要軟件藍領”的聲音,我不知道當時是否真的有此需要。但我在此大膽預言:MDA一旦普及,軟件藍領會大量失業(yè)。因此,我敬請讀者您不要把“軟件藍領”作為您的職業(yè)生涯目標。如要在未來立足軟件開發(fā)業(yè),請您永遠不要放棄自己創(chuàng)造性思維的能力。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請
點擊舉報
。
打開APP,閱讀全文并永久保存
查看更多類似文章
猜你喜歡
類似文章
淺析軟件工程開發(fā)方法學RUP
Scrum中文網(wǎng)_敏捷起源以及敏捷創(chuàng)始人的傳記
軟件開發(fā)過程學習總結CMM、RUP、XP
可以選擇瀑布模型作為試點項目的生命周期模型嗎?
第11章 軟件項目管理
理順軟件開發(fā)各個環(huán)節(jié)-2(開發(fā)模式選?。?/div>
更多類似文章 >>
生活服務
首頁
萬象
文化
人生
生活
健康
教育
職場
理財
娛樂
藝術
上網(wǎng)
留言交流
回頂部
聯(lián)系我們
分享
收藏
點擊這里,查看已保存的文章
導長圖
關注
一鍵復制
下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!
聯(lián)系客服
微信登錄中...
請勿關閉此頁面
先別劃走!
送你5元優(yōu)惠券,購買VIP限時立減!
5
元
優(yōu)惠券
優(yōu)惠券還有
10:00
過期
馬上使用
×