使用模型驅(qū)動(dòng)開(kāi)發(fā)(MDD)的十五個(gè)理由
原創(chuàng)【51CTO譯文】什么是模型驅(qū)動(dòng)開(kāi)發(fā)(MDD)?為什么使用MDD?本文將回答這些問(wèn)題,告訴您在軟件項(xiàng)目中使用模型驅(qū)動(dòng)開(kāi)發(fā)的十五個(gè)理由。
1、MDD開(kāi)發(fā)更快速
相比傳統(tǒng)軟件開(kāi)發(fā),模型驅(qū)動(dòng)開(kāi)發(fā)(MDD)的軟件項(xiàng)目中,應(yīng)用程序被指定為一個(gè)更高層次的抽象模型。通過(guò)對(duì)模型的解釋/執(zhí)行或產(chǎn)生的代碼,抽象模型會(huì)自動(dòng)轉(zhuǎn)化為可工作的軟件應(yīng)用。
在代碼方面,因?yàn)槟P途哂懈叩某橄髮哟危员认嗤瑢?shí)現(xiàn)的其他方式具有更小的代碼量。換句話(huà)說(shuō),模型中的每個(gè)元素(符號(hào)或其它偽編程語(yǔ)言)可以代表多行代碼;這樣,我們可以在相同的時(shí)間內(nèi)實(shí)現(xiàn)更多的功能。比如,對(duì)比Mendix和Java開(kāi)發(fā), MetaEdit+或其他MDD開(kāi)發(fā)工具比傳統(tǒng)開(kāi)發(fā)方式快五倍的速度。
2、MDD使開(kāi)發(fā)成本更低
MDD能夠以更低的成本高效的實(shí)現(xiàn)項(xiàng)目。正如上文所說(shuō),MDD的開(kāi)發(fā)速度更高,可以縮短軟件產(chǎn)品的交付日期,提早上市時(shí)間。其次,使用MDD本身就可以用較低的成本完成開(kāi)發(fā);比如,可以用更少的工程師和非專(zhuān)業(yè)人士并保證軟件高質(zhì)量的完成。當(dāng)然,能節(jié)約多少成本還取決于學(xué)習(xí)MDD的成本和開(kāi)發(fā)或購(gòu)買(mǎi)MDD開(kāi)發(fā)工具的成本。
另外,使用MDD來(lái)改變正在開(kāi)發(fā)和維護(hù)的項(xiàng)目也能夠節(jié)約成本。在維護(hù)方面,閱讀高抽象模型的應(yīng)用程序行為更加容易(詳細(xì)參考第六點(diǎn)),此外,我們還可以更快的使用高級(jí)語(yǔ)言添加或改進(jìn)產(chǎn)品的功能。
3、MDD可以提高開(kāi)發(fā)質(zhì)量
在使用MDD的軟件開(kāi)發(fā)過(guò)程中,應(yīng)用程序使用高級(jí)的抽象模型,而模型由一個(gè)引擎執(zhí)行或被解釋成代碼;所以,該程序模塊的質(zhì)量將取決于執(zhí)行引擎或解釋器,而執(zhí)行引擎或解釋器一般是由一流軟件公司和專(zhuān)家級(jí)程序員打造的。
此外,我們?cè)陧?xiàng)目中所使用的所有好的方法都可以包含在模型驅(qū)動(dòng)開(kāi)發(fā)(MDD)引擎中,并且在使用MDD工具開(kāi)發(fā)軟件時(shí)應(yīng)用到你的項(xiàng)目中。如果你購(gòu)買(mǎi)了一個(gè)MDD工具,你也同時(shí)購(gòu)買(mǎi)了眾多優(yōu)秀的開(kāi)發(fā)工具,因?yàn)镸DD工具建立在過(guò)去所有軟件項(xiàng)目的優(yōu)秀技術(shù)總結(jié)。
4、MDD出錯(cuò)率更低
每個(gè)具有軟件開(kāi)發(fā)經(jīng)驗(yàn)的人都知道,測(cè)試會(huì)花費(fèi)開(kāi)發(fā)人員大量的時(shí)間和精力。MDD可以確保我們專(zhuān)注于程序功能的測(cè)試,這意味這我們只需進(jìn)行驗(yàn)收測(cè)試。技術(shù)細(xì)節(jié)的測(cè)試已經(jīng)包含在MDD測(cè)試工具中。比如,對(duì)基礎(chǔ)構(gòu)造或安全問(wèn)題的測(cè)試。
5、MDD的有效性驗(yàn)證
在使用MDD時(shí),程序功能本身是低錯(cuò)誤的,因?yàn)槌绦虻挠行则?yàn)證時(shí)在MDD的高層模型中完成的。我們知道,在使用傳統(tǒng)的編程語(yǔ)言時(shí),IDE會(huì)提供一些語(yǔ)法檢查,甚至?xí)M(jìn)行靜態(tài)代碼的分析。但這并不能真正幫助我們避免程序的功能性錯(cuò)誤。
當(dāng)使用MDD方法時(shí),對(duì)特定領(lǐng)域的有效性驗(yàn)證可以在系統(tǒng)設(shè)計(jì)時(shí)進(jìn)行,由此產(chǎn)生的錯(cuò)誤也可以控制在一定的范圍內(nèi)。比如對(duì)本文的一個(gè)靜態(tài)文本驗(yàn)證。在使用Mendix模型環(huán)境中,我們可以使用實(shí)時(shí)的一致性檢查以確保模型的一致性并保證其可以在運(yùn)行時(shí)環(huán)境執(zhí)行。
6、MDD使人在軟件中的影響降低
在第二點(diǎn)中我們提到過(guò)使用MDD可以用更少的工程師和非專(zhuān)業(yè)人士并保證軟件高質(zhì)量的完成。當(dāng)你不再需要技術(shù)專(zhuān)家來(lái)建立軟件,你可以挑選更多人來(lái)為你工作。另外,與傳統(tǒng)的開(kāi)發(fā)方式相比,在使用MDD的項(xiàng)目中,如果有人中途加入,他可以更簡(jiǎn)單的理解軟件應(yīng)用的高級(jí)模型,因?yàn)樗槐貫楦愣绦虻哪承┕δ芏喿x大量的源碼。
7、MDD給行業(yè)專(zhuān)家更高多空間
MDD可以使行業(yè)專(zhuān)家專(zhuān)注于軟件的行業(yè)特性,而技術(shù)專(zhuān)家將集中精力用于構(gòu)建MDD的工具(詳見(jiàn)第八點(diǎn))。構(gòu)建復(fù)雜的應(yīng)用程序?qū)⒉辉偈蔷⒊绦騿T的專(zhuān)利,在MDD項(xiàng)目中,將允許行業(yè)專(zhuān)家用他們自己的知識(shí)系統(tǒng)使用特定的符號(hào)構(gòu)建一個(gè)模型,并使之融入高層的程序模型中。
8、MDD使高階程序員只做他們?cè)撟龅氖?/STRONG>
在使用MDD開(kāi)發(fā)的項(xiàng)目中,開(kāi)發(fā)人員很少進(jìn)行重復(fù)性的工作。他們將有更多的機(jī)會(huì)在他們的工作中發(fā)揮創(chuàng)造性。比如,他們可以關(guān)注如何構(gòu)建MDD工具;他們可以指導(dǎo)程序新手進(jìn)行軟件的初級(jí)開(kāi)發(fā)或配合行業(yè)專(zhuān)家進(jìn)行系統(tǒng)建模。高級(jí)程序?qū)⒂酶嗟木θソ鉀Q應(yīng)用程序中關(guān)鍵部分的技術(shù)攻關(guān)。比如,行業(yè)專(zhuān)家可以為圖形用戶(hù)接口、處理流程和商業(yè)規(guī)則創(chuàng)建模型。應(yīng)用的集成部分(WebServices、API調(diào)用、數(shù)據(jù)庫(kù)成等)對(duì)行業(yè)專(zhuān)家和開(kāi)發(fā)新手存在困難,但這部分工作留給高級(jí)程序員去關(guān)注。高級(jí)程序員可以輕松而富有創(chuàng)造性的搞定這類(lèi)項(xiàng)目中難度較大的部分。
9、MDD將消除業(yè)務(wù)和IT之間的隔閡
業(yè)務(wù)和IT的完美對(duì)接是在軟件開(kāi)發(fā)中經(jīng)常被談及的。MDD可以用以下方法使商業(yè)和IT之間走的更近:
◆行業(yè)專(zhuān)家或業(yè)務(wù)分析人員可以直接的參與開(kāi)發(fā)過(guò)程(參考第七點(diǎn))。軟件的應(yīng)用部分被定義為一個(gè)很高的抽象模型,這些模型將無(wú)限接近業(yè)務(wù)概念中的描述和定義。
◆因?yàn)镸DD可以更快速的進(jìn)行開(kāi)發(fā)(參考第一點(diǎn)),軟件的構(gòu)建過(guò)程將更少的迭代,這將使軟件更符最初的需求(軟件交付日期縮短,從市場(chǎng)策劃到最終用戶(hù)的周期變短)。
◆業(yè)務(wù)和模型以及模型和IT系統(tǒng)之間的定義更加明確。比如,使用模型驅(qū)動(dòng)的面向業(yè)務(wù)需求(SOA)的一個(gè)框架。
10、MDD使軟件開(kāi)發(fā)不再懼怕商業(yè)需求變更
軟件開(kāi)發(fā)界當(dāng)前存在的一個(gè)問(wèn)題是商業(yè)需求的經(jīng)常變化,而且這種變化的速度遠(yuǎn)遠(yuǎn)高于軟件系統(tǒng)本身所容納的限度。這主要是目前企業(yè)的長(zhǎng)期戰(zhàn)略無(wú)法保持足夠的時(shí)間就產(chǎn)生變化并導(dǎo)致核心IT業(yè)務(wù)經(jīng)常變化。當(dāng)前動(dòng)態(tài)的商業(yè)環(huán)境不得使企業(yè)有足夠的反應(yīng)時(shí)間。
但MDD可以提供有效的解決方案,因?yàn)镸DD可以使軟件開(kāi)發(fā)更加快速(參考第一點(diǎn)),它還可以是應(yīng)用程序的改變更加容易(參考第二點(diǎn)和第六點(diǎn))。如何商業(yè)需求和軟件應(yīng)用模型的關(guān)聯(lián)足夠明確,需求變化甚至可以自動(dòng)傳遞到軟件應(yīng)用部分的變化(參考第九點(diǎn))。
11、由技術(shù)產(chǎn)生的軟件變化更少
技術(shù)的更新與變化越來(lái)越快。想想Java EE、 SOA/SOBA、WebServers、REST、OSGi和最近一年云計(jì)算帶來(lái)的技術(shù)變革。MDD可以確保我們的應(yīng)用程序模型在遷移到其他技術(shù)平臺(tái)時(shí)不會(huì)發(fā)生變化;我們只需根據(jù)所變更的技術(shù)平臺(tái)相應(yīng)的改版代碼編譯器或解釋器。更換解釋器后,所有的程序模型將直接被編譯成新平臺(tái)的代碼。
12、MDD使架構(gòu)更加強(qiáng)壯
公司經(jīng)常會(huì)定義架構(gòu)標(biāo)準(zhǔn),軟件開(kāi)發(fā)必須按照這些標(biāo)準(zhǔn)行事。但當(dāng)所有代碼都用手創(chuàng)建時(shí)如何檢查或執(zhí)行這些架構(gòu)標(biāo)準(zhǔn)?當(dāng)選擇MDD進(jìn)行項(xiàng)目開(kāi)發(fā)時(shí),應(yīng)用程序會(huì)遵守既定的架構(gòu)標(biāo)準(zhǔn)。你可以確保IT架構(gòu)的標(biāo)準(zhǔn)化,因?yàn)檫@些架構(gòu)標(biāo)準(zhǔn)在MDD工具中被定義。
一般,功能性的架構(gòu)標(biāo)準(zhǔn)將指導(dǎo)功能設(shè)計(jì)。這些標(biāo)準(zhǔn)表現(xiàn)在你所采用的DSL(領(lǐng)域特定語(yǔ)言)。在MDD中,架構(gòu)標(biāo)準(zhǔn)指導(dǎo)功能設(shè)計(jì),并將在代碼編譯器和解釋器中得到體現(xiàn)。
13、MDD使開(kāi)發(fā)人員獲得更多行業(yè)知識(shí)
MDD的另一個(gè)好處是你不只是建立一個(gè)軟件,在高層的軟件模型中,你將獲得所建立軟件的領(lǐng)域知識(shí)。在大多數(shù)軟件項(xiàng)目中,領(lǐng)域需求的描述并不清晰,我們通常需要與行業(yè)專(zhuān)家或領(lǐng)域內(nèi)不同的用戶(hù)接觸,用他們的專(zhuān)業(yè)知識(shí)來(lái)描述系統(tǒng)需求并建模。在MDD中,基于高度抽象的領(lǐng)域模型,我們可以通過(guò)行業(yè)專(zhuān)家對(duì)應(yīng)用模型的描述獲得深入了解具體應(yīng)用領(lǐng)域的機(jī)會(huì)。
14、MDD可以提供最新的文檔
當(dāng)使用MDD進(jìn)行項(xiàng)目開(kāi)發(fā)時(shí),我們無(wú)需再忍受不完整或不及時(shí)的文檔,因?yàn)槟P途褪俏臋n。當(dāng)使用正確的抽象方法,模型的描述對(duì)行業(yè)專(zhuān)家和項(xiàng)目需求方具有很高的易讀性(請(qǐng)參考第十三點(diǎn))。
15、MDD使項(xiàng)目重心放在業(yè)務(wù)問(wèn)題,而不是技術(shù)
就行前面提到的,MDD可以讓我們更多的關(guān)注業(yè)務(wù)問(wèn)題而不是如何將這些問(wèn)題用技術(shù)實(shí)現(xiàn)。所以,不要再討論我們?cè)撌褂肑ava EE還是.NET,應(yīng)該盡快開(kāi)始MDD的學(xué)習(xí)和項(xiàng)目實(shí)踐。
原文:15 reasons why you should start using Model Driven Development
鏈接:http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development
【編輯推薦】