成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入MDD模型驅(qū)動(dòng)開發(fā)

開發(fā) 項(xiàng)目管理
采用模型驅(qū)動(dòng)開發(fā)MDD,并不只是在開發(fā)項(xiàng)目的過程中更換一種工具,MDD還必須和已根深蒂固的開發(fā)過程結(jié)合起來。模型驅(qū)動(dòng)開發(fā)確實(shí)正在起作用,并必將改變我們開發(fā)系統(tǒng)的方式。

51CTO之前的文章《使用模型驅(qū)動(dòng)開發(fā)(MDD)的十五個(gè)理由》詳細(xì)介紹了使用模型驅(qū)動(dòng)開發(fā)對(duì)程序員、項(xiàng)目以及商業(yè)需求方面的種種好處,但模型驅(qū)動(dòng)開發(fā)的內(nèi)在特質(zhì)是怎樣的?MDD究竟會(huì)如何發(fā)展?本文將帶您深入模型驅(qū)動(dòng)開發(fā),講解MDD的發(fā)展趨勢(shì)和幾個(gè)必要組成。

“模型驅(qū)動(dòng)開發(fā)”——體會(huì)一下這幾個(gè)詞。它們說出了這個(gè)不斷變化的工業(yè)中一個(gè)新的改變。這里不是說一種革命,而是一種緩慢的變化,但是肯定會(huì)滲透到我們開發(fā)系統(tǒng)的方式中。這種推動(dòng)將降低代碼的重要性,并且專注于一些開發(fā)中的真正事情:最終的應(yīng)用程序被期望怎樣工作,并確保你能夠根據(jù)客戶的需求可靠地建立起它來。

模型驅(qū)動(dòng)開發(fā)(MDD:Model-Driven Developement)是更偉大視景MDA 中的一部分。MDA 是模型驅(qū)動(dòng)體系架構(gòu)(Model-Driven Architecture)的簡稱,由對(duì)象管理組織OMG(Object Management Group)所驅(qū)動(dòng)。MDA 表示了一種模型驅(qū)動(dòng)開發(fā)方法的概念框架。然而,盡管完整的MDA 還沒有成為現(xiàn)實(shí),模型驅(qū)動(dòng)開發(fā)現(xiàn)在已成為可能。實(shí)際上,它已以較低級(jí)的形式存在了較長一段時(shí)間,所以我們并不是在做某種新的東西。

沒有魔法

如果模型驅(qū)動(dòng)開發(fā)這么好的話,為什么不是每個(gè)人立刻加入到這個(gè)潮流中來呢?

首先,模型驅(qū)動(dòng)開發(fā)不是一個(gè)銀彈,能神奇地解決你所有的問題??傆心橙诵枰?shí)現(xiàn)系統(tǒng)的功能,并且還找不到任何工具來完成這一點(diǎn)。所有你能發(fā)現(xiàn)的工具只是使這項(xiàng)工作更容易和直接一些。

第二,采用模型驅(qū)動(dòng)開發(fā),并不只是在開發(fā)項(xiàng)目的過程中更換一種工具。它還必須和已根深蒂固的開發(fā)過程結(jié)合起來(如果沒有的話,你就可以開始使用模型驅(qū)動(dòng)開發(fā)了;否則你就只能改善當(dāng)前的情況),但實(shí)際上更重要的是,你還會(huì)擔(dān)心它對(duì)現(xiàn)有應(yīng)用程序的影響。決定改用基于模型的方法前確實(shí)需要有一些仔細(xì)的考慮,并且,一般說來,為了不影響當(dāng)前的工作,你只會(huì)在新項(xiàng)目中改變開發(fā)方法。

第三,你還需要獲得那些使用工具的人們的支持(你需要一些工具來應(yīng)用模型驅(qū)動(dòng)開發(fā))。開發(fā)人員常會(huì)認(rèn)為“模型驅(qū)動(dòng)開發(fā)不是編程”而回避它,并且當(dāng)心他們的工作難于被接受。他們還可能擔(dān)心模型驅(qū)動(dòng)開發(fā)將會(huì)使他們以前辛苦學(xué)來的一些技巧過時(shí)。他們的擔(dān)心也不是完全沒有理由。采用模型驅(qū)動(dòng)開發(fā)后,市場(chǎng)確實(shí)很有可能會(huì)減少對(duì)那些精通好幾種編程語言的開發(fā)人員的需求。但是另一方面,所有好的開發(fā)人員,首先和最主要的是,他們是問題的解決者。他們感興趣的是盡可能地為手邊的主要問題找到新的更好的解決方案。模型驅(qū)動(dòng)開發(fā)激動(dòng)人心的一點(diǎn)就是它允許開發(fā)人員集中精力于解決主要的設(shè)計(jì)問題,增加新的、酷的功能;而不是花費(fèi)他們的主要時(shí)間于改正語法錯(cuò)誤,防止內(nèi)存泄露,或無休止的低級(jí)bug 上。

還有第四點(diǎn),它也是第三點(diǎn)的一個(gè)結(jié)果,工具必須足夠的好。不幸的是,有時(shí)用戶對(duì)工具期待太多,或工具提供廠商承諾過多,實(shí)際上卻不能交付。這兩種情況都很容易使用戶放棄模型驅(qū)動(dòng)開發(fā)的想法。你確實(shí)需要保證工具能夠滿足你的需求。

可視化軟件工程

模型驅(qū)動(dòng)開發(fā)(MDD)的基礎(chǔ)是模型和表達(dá)模型的語言。模型提供了這樣一種能力,能夠一致性地顯示這個(gè)系統(tǒng)的不同視圖。一個(gè)常見的錯(cuò)誤是認(rèn)為模型驅(qū)動(dòng)開發(fā)是模型和代碼之間的一種關(guān)系,通過代碼實(shí)現(xiàn)了模型。確實(shí)很多情況下,這二者是等同的,但它大大限制了我們的視野。

#T#模型的一個(gè)主要用途消除開發(fā)過程中各參與方之間的隔閡,需求工程師,系統(tǒng)分析員,軟件開發(fā)人員和測(cè)試者都可以使用同一種語言。你可以注意到,他們可能專注于語言的不同部分,以滿足他們的需要,但他們都會(huì)共用一些基本的結(jié)構(gòu),并對(duì)他們正工作的系統(tǒng)有一個(gè)統(tǒng)一的認(rèn)識(shí)。而且使用統(tǒng)一的語言有助于消除角色間的界限,使得在項(xiàng)目的不同階段人員轉(zhuǎn)換到被需要的角色更加容易。還有另外一些人需要知道項(xiàng)目的進(jìn)展情況,包括項(xiàng)目領(lǐng)導(dǎo)、經(jīng)理和評(píng)估委員會(huì)。更重要的是,用戶也需要知道什么將會(huì)被交付,需要加入到整個(gè)開發(fā)過程中,與創(chuàng)建系統(tǒng)的不同人員進(jìn)行交流。一種圖形建模語言,比如UML,使得各參與方之間的交流成為可能,幫助架起參與方與某些系統(tǒng)復(fù)雜功能之間的橋梁。模型驅(qū)動(dòng)開發(fā)正逐漸獲得公司高級(jí)管理者注意,其中的一個(gè)主要原因就是這種能夠逐漸增加用戶、管理層和大的組織機(jī)構(gòu)參與的能力。

那么編程將會(huì)怎樣呢?它不再需要了嗎?我們?cè)谶@之前提及了一下,現(xiàn)在再詳細(xì)討論它。給模型提供足夠的信息,工具就能生成大部分和全部系統(tǒng)所需要的代碼。請(qǐng)注意,如果你用工具去生成全部的代碼,這就相當(dāng)于編譯你的模型。在很多方面,這都類似于當(dāng)從匯編編程轉(zhuǎn)到C 編程時(shí)發(fā)生的模式轉(zhuǎn)換,開始的時(shí)候,存在一定的懷疑,特別是那些匯編語言編程者。對(duì)于模型驅(qū)動(dòng)開發(fā),我們說的也是一種相似的模式轉(zhuǎn)換,建模語言代替了編程語言,用建模語言來實(shí)現(xiàn)系統(tǒng)。這主要是因?yàn)榻UZ言正變得更有表現(xiàn)力,允許用戶能夠指定詳細(xì)的系統(tǒng)行為。而且,主機(jī)上的確認(rèn)和驗(yàn)證技術(shù)能用于檢查系統(tǒng)的正確性。在模型中,一般說來你會(huì)忽略掉那些令人不快的細(xì)節(jié),比如分布式,代理和內(nèi)存管理,并且讓工具去生成它們的代碼。這些都表明你還需要對(duì)系統(tǒng)的行為進(jìn)行建模(或者如果你愿意,也可以編程),但你可以在更抽象的層次上進(jìn)行,關(guān)注于系統(tǒng)的重要功能。

你的明星程序員,你記不清他已多少次拯救你的公司了,可能會(huì)說,“如果我用編程的方式實(shí)現(xiàn)系統(tǒng)可能要快很多。”你知道他說的可能是對(duì)的。但是,這是個(gè)大系統(tǒng),或者請(qǐng)慢,他打算對(duì)什么編程呢?是誰為他創(chuàng)建了系統(tǒng)規(guī)范?難道他不是團(tuán)隊(duì)的一部分嗎?或者這個(gè)系統(tǒng)確實(shí)很小,一個(gè)人就能夠確定規(guī)范,開發(fā)和測(cè)試?即使這樣,你愿意所有的信息都只存在這一個(gè)人的頭腦中?如果他不小心發(fā)生車禍,或者你的競(jìng)爭對(duì)手為他提供了一份他無法抗拒的待遇,這時(shí)會(huì)怎樣呢?系統(tǒng)交付以后又會(huì)怎樣呢?最終用戶能夠修改實(shí)現(xiàn)嗎?或即使是理解系統(tǒng)?將來升級(jí),系統(tǒng)維護(hù)起來方便嗎?

這將我們帶入到模型驅(qū)動(dòng)開發(fā)的另一個(gè)主要用途,把系統(tǒng)和軟件開發(fā)更多地納入到系統(tǒng)和軟件工程規(guī)則中。模型驅(qū)動(dòng)開發(fā)是關(guān)于開發(fā)和維護(hù)系統(tǒng)的,系統(tǒng)并不只是由應(yīng)用程序組成,還包括其他的部分,使得人們可以理解這個(gè)應(yīng)用程序。一個(gè)模型可以包含明顯可執(zhí)行的部分,但它幾乎總是還有其他部分,并不能被運(yùn)行,比如需求,系統(tǒng)的粗略框架,商業(yè)模型和分析模型。在項(xiàng)目開發(fā)時(shí),所有這些都應(yīng)該被創(chuàng)建出來并保持最新,它們對(duì)于將來的維護(hù)非常重要。

模型驅(qū)動(dòng)開發(fā)的現(xiàn)代工具提供了運(yùn)行一個(gè)(或部分)模型的能力,這使得可以更早得到確認(rèn),系統(tǒng)能按預(yù)定方式工作。換句話說,這意味著項(xiàng)目風(fēng)險(xiǎn)被極大地降低。在模型驅(qū)動(dòng)開發(fā)中,測(cè)試也變得更加重要,因?yàn)槟軌虮桓绾透l繁地進(jìn)行。這種方式,會(huì)使你對(duì)在項(xiàng)目后期,應(yīng)用程序的各部分能夠統(tǒng)一合作具有更多地信心。直觀地,你可能以為所有這些額外的工作會(huì)延長開發(fā)周期,但是經(jīng)驗(yàn)顯示,產(chǎn)品上市時(shí)間實(shí)際上是縮短了。你花費(fèi)更少的時(shí)間用于實(shí)現(xiàn)和測(cè)試階段,更多的時(shí)間用于分析和設(shè)計(jì)階段,當(dāng)你迭代重復(fù)這些過程時(shí),你會(huì)發(fā)現(xiàn),這種方式的好處是實(shí)實(shí)在在的。

UML 2.0 的作用

無疑,統(tǒng)一建模語言(UML,Unifid Modeling Language)就是設(shè)計(jì)用來進(jìn)行模型驅(qū)動(dòng)開發(fā)的語言。它第一次標(biāo)準(zhǔn)化是在1997 年,作為當(dāng)時(shí)各種面向?qū)ο蠓治龇椒ㄖ疇幍慕Y(jié)果。然后它迅速成為最流行的建模語言,用于“可視化、構(gòu)造和存檔在基于軟件的系統(tǒng)創(chuàng)建過程中的產(chǎn)品”。

我們沿著這條道路已經(jīng)走了五年,用戶和工具提供商對(duì)于UML 語言都有了更多的經(jīng)驗(yàn)。我們知道什么很有用處,也知道什么需要被改進(jìn)。而且,軟件工業(yè)在這些年也發(fā)生了變化,需要去支持一些新的技術(shù),比如基于構(gòu)件的開發(fā)和可執(zhí)行的模型。這些需求還不能用現(xiàn)在的UML 合適地處理。為了解決這些問題,對(duì)UML 大的修訂工作兩年前由OMG 開始啟動(dòng),預(yù)計(jì)于2002 年底前完成。

在語言中新增加的性能,用于對(duì)系統(tǒng)架構(gòu)建模,都是些很重要的部分,使得更容易創(chuàng)建任何復(fù)雜度的實(shí)際系統(tǒng)。對(duì)這種規(guī)模可伸縮性的關(guān)注也擴(kuò)展到了其他領(lǐng)域,包括對(duì)行為進(jìn)行建模的圖形,比如順序圖和狀態(tài)機(jī)。既然UML 試圖適合很多參與方的需要,它需要變成一種相當(dāng)大的語言,但是并不是每一個(gè)人都需要知道語言的所有部分。它被有意識(shí)地分割成幾種視圖或圖形,允許你關(guān)注于只與你相關(guān)的專門領(lǐng)域。其他人可能希望工作在其他的視圖上,模型將保持這些視圖間的一致性。

工具的考慮

工具實(shí)現(xiàn)模型驅(qū)動(dòng)開發(fā)的方式各不相同,給予用戶或多或少的靈活性。雙向工程是一個(gè)可憐人的選擇,他不能在模型中捕獲到系統(tǒng)行為,并且他還把自己與某種特定的編程語言綁定在一起,這還是一種以代碼為中心的方法,所有這些都將使你感到難受。在一些緊急的場(chǎng)合,你甚至?xí)浤P?,比如一個(gè)項(xiàng)目就要到達(dá)最后期限(看起來在某處總有一個(gè)最后期限)了。在項(xiàng)目的最后,你得到了一個(gè)可工作的應(yīng)用程序,還有一個(gè)沒有實(shí)際用處的模型。這時(shí),你甚至懷疑建模的重要性了。

對(duì)雙向工程問題的一個(gè)讓步就是在模型中直接插入編程代碼,因此強(qiáng)迫你更新模型以確保最終得到一個(gè)可執(zhí)行的應(yīng)用程序。這同樣使你感到難受,又被綁定到某種特定編程語言,你還不得不在模型的很多地方插入代碼片斷。這很像在C 程序中插入?yún)R編代碼,盡管有時(shí)這是必要的,但是將來維護(hù)會(huì)是問題并可能傷害你。

考慮直接在模型中提供指定系統(tǒng)行為的能力,上述兩種方法都變得過時(shí)。在模型驅(qū)動(dòng)開發(fā)中,你只需按一個(gè)鍵,在你選擇的平臺(tái)上,就能獲得自動(dòng)生成的任何語言的代碼,這樣在模型這一級(jí)上就能實(shí)現(xiàn)應(yīng)用程序的可移植性。你不需要修改代碼,改變你的系統(tǒng)就能直接反應(yīng)到模型的實(shí)現(xiàn)上。當(dāng)然,目前還有一些路需要走,大部分的工具廠商目前都有他們自己的語言映射,但要實(shí)現(xiàn)MDA 的目標(biāo),就需要有對(duì)不同語言和平臺(tái)的標(biāo)準(zhǔn)映射和腳本。好消息就是這種前景正在展現(xiàn)。模型驅(qū)動(dòng)開發(fā)確實(shí)正在起作用,并必將改變我們開發(fā)系統(tǒng)的方式。

責(zé)任編輯:佚名 來源: 百度Hi
相關(guān)推薦

2009-12-31 08:39:44

MDD模型驅(qū)動(dòng)開發(fā)

2009-12-31 08:49:15

模型驅(qū)動(dòng)開發(fā)

2009-11-09 10:57:34

ibmdwUML

2023-02-23 19:28:09

ODD測(cè)試

2024-06-25 08:43:25

C#編程模型

2009-12-23 13:17:36

Linux設(shè)備驅(qū)動(dòng)

2025-02-13 08:53:10

WinForm事件驅(qū)動(dòng)編程模型開發(fā)

2010-01-06 10:50:15

.NET Framew

2010-07-12 08:53:32

UML模型圖

2010-09-28 09:22:34

DOM模型Html

2010-09-28 13:24:34

DOM文檔對(duì)象模型

2023-11-05 12:05:35

JVM內(nèi)存

2009-06-03 08:53:20

微軟Windows 7操作系統(tǒng)

2017-11-16 14:46:58

Linuxplatform總線驅(qū)動(dòng)設(shè)備

2025-04-17 10:17:29

2023-05-04 10:41:58

2010-08-11 09:29:25

FlexJava數(shù)據(jù)模型

2020-12-07 06:23:48

Java內(nèi)存

2021-03-11 12:23:13

Linux驅(qū)動(dòng)開發(fā)

2022-09-16 11:19:25

失敗開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲一区国产 | 91久久精品日日躁夜夜躁国产 | 国内激情av片 | 久久久久国产成人精品亚洲午夜 | 国产在线观看网站 | 日日操视频 | 国产精品久久久久久久久久久久久 | 91精品国产综合久久久久久首页 | 日韩精品在线看 | av大片在线 | 国产一区二区欧美 | 国产激情在线 | 免费观看一级黄色录像 | 国产香蕉视频 | 日韩欧美视频在线 | 天天插天天操 | 亚洲一区二区三区在线播放 | 欧美久久久久久久久中文字幕 | 亚洲精品免费视频 | 亚洲精品乱码久久久久久蜜桃91 | 丁香综合 | 国产特级毛片 | 日韩一区二区视频 | 免费一级欧美在线观看视频 | 波多野结衣中文字幕一区二区三区 | 精品一区在线看 | 中文一区| 久久久久一区二区 | 国产精品久久久久久久久久久久 | 欧美一级全黄 | 尤物视频在线免费观看 | 又爽又黄axxx片免费观看 | 男女激情网站免费 | 永久免费av | 国产毛片毛片 | 国产激情视频在线免费观看 | www国产亚洲精品久久网站 | 欧美在线a | 欧美一级网站 | 色综合中文 | 日韩精品1区2区3区 爱爱综合网 |