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