模型驅(qū)動(dòng)開(kāi)發(fā)Model Driven Development (MDD) 是一種以模型作為主要工件的高級(jí)別抽象的開(kāi)發(fā)方法,模型在工具的支持下,被作為核心資產(chǎn)被轉(zhuǎn)換成代碼或者可運(yùn)行配置。現(xiàn)在軟件業(yè)存在多種MDD開(kāi)發(fā)方法,本篇將對(duì)MDD進(jìn)行概要介紹。
定義
在過(guò)去多年,軟件開(kāi)發(fā)面臨了多個(gè)挑戰(zhàn),新的需求和存在系統(tǒng)不斷增長(zhǎng),系統(tǒng)也變得越來(lái)越復(fù)雜,以至于我們很難及時(shí)的構(gòu)建它們。為了解決這些問(wèn)題, 就出現(xiàn)了很多新的方法,其中最突出的一個(gè)就是模型驅(qū)動(dòng)開(kāi)發(fā)。 MDD代表了一套理論和工業(yè)化軟件開(kāi)發(fā)的方法框架,在軟件開(kāi)發(fā)全生命周期中系統(tǒng)的的使用模型作為主要工件,它主要為了解決 軟件的兩個(gè)根本危機(jī):復(fù)雜性和變更能力 。
使用模型作為文檔和規(guī)范是有價(jià)值的,但是它需要嚴(yán)格的管理方式來(lái)確保模型是持續(xù)更新的。在實(shí)際工作中,我們迫于時(shí)間壓力經(jīng)常會(huì)出現(xiàn)于實(shí)現(xiàn)不一致的模型,這對(duì)開(kāi)發(fā)和項(xiàng)目其實(shí)是不利的。而
MDD的基本思想是讓開(kāi)發(fā)中心從編程轉(zhuǎn)移到高級(jí)別抽象中去,通過(guò)
模型
轉(zhuǎn)成代碼或其他工件來(lái)
驅(qū)動(dòng)
部分或全部的
自動(dòng)化開(kāi)發(fā)
。
模型是一種抽象的語(yǔ)言
多種模型
模型是一種建模語(yǔ)言,它需要我們自己根據(jù)業(yè)務(wù)和技術(shù)需要去設(shè)計(jì)它,在架構(gòu)、分析、設(shè)計(jì)、實(shí)現(xiàn)等不同階段都會(huì)存在多種模型, 如企業(yè)架構(gòu)模型、技術(shù)架構(gòu)模型、領(lǐng)域模型、UI模型、數(shù)據(jù)庫(kù)建模、業(yè)務(wù)規(guī)則模型、系統(tǒng)部署模型、測(cè)試模型等。
模型驅(qū)動(dòng)開(kāi)發(fā)方法中,模型作為first class除了生成代碼之外,還可以生成很多其他非代碼工件,以下為一些從模型生成工件的通用例子:
三個(gè)階段
模型和建模這兩部分內(nèi)容已經(jīng)存在很多方法,它們?cè)诂F(xiàn)在軟件開(kāi)發(fā)過(guò)程中已經(jīng)處于重要位置,但是在需要哪些表達(dá)模型以及如何使用這些模型存在著差 異。傳統(tǒng)的模型只是一個(gè)設(shè)計(jì)藍(lán)圖,而MDD必須滿足額外的要求,這些模型必須是可讀的,也就是說(shuō)必須存在第三個(gè)階段,也就是模型轉(zhuǎn)換:model to model (M2M) 和 model to code (M2C)
優(yōu)勢(shì)
- 提高產(chǎn)能 :開(kāi)發(fā)快、降低成本、提高質(zhì)量
- 可維護(hù)性 :高級(jí)別模型與技術(shù)分類,技術(shù)架構(gòu)的改變意味著只是模型的一種新的轉(zhuǎn)換
- 一致性 :手工編碼和架構(gòu)決策容易出錯(cuò),MDD可以確保生成的工件是一致的
- 可重用性 :模型、轉(zhuǎn)換和架構(gòu)都是可以重用的,由于架構(gòu)和技術(shù)問(wèn)題已經(jīng)被解決,所以開(kāi)發(fā)新功能的風(fēng)險(xiǎn)也低
- 改善涉眾溝通 :模型忽略系統(tǒng)邏輯行為的底層實(shí)現(xiàn),而直接展現(xiàn)問(wèn)題域,這樣可以保證和涉眾使用同一種語(yǔ)言進(jìn)行溝通
- 改善設(shè)計(jì)溝通 :模型與系統(tǒng)是匹配及時(shí)更新的,所以可以通過(guò)模型來(lái)改善系統(tǒng)設(shè)計(jì)的討論和溝通
- 捕獲領(lǐng)域知識(shí) :可以加強(qiáng)領(lǐng)域?qū)<覍?duì)系統(tǒng)的直接影響,通過(guò)模型還可以幫助組織進(jìn)行知識(shí)管理
- Business-IT對(duì)齊 :關(guān)注問(wèn)題域,關(guān)聯(lián)技術(shù)域,一種業(yè)務(wù)和IT對(duì)齊的方法
- 模型作為一種長(zhǎng)期的核心資產(chǎn) :高級(jí)別的模型作為核心資產(chǎn)管理起來(lái),只有在業(yè)務(wù)需求變更時(shí)才會(huì)進(jìn)行更改
- 推遲技術(shù)決策 :應(yīng)用開(kāi)發(fā)在早期關(guān)注業(yè)務(wù)邏輯問(wèn)題,對(duì)于技術(shù)選擇可以推遲到后期
- 提供及時(shí)的文檔 :通過(guò)模型可以生成很多同步的文檔,利于與不同涉眾進(jìn)行交流
經(jīng)濟(jì)模型
MDD方法相關(guān)
- 特定領(lǐng)域建模 DSM
- 面向語(yǔ)言編程 LOP
- 軟件工廠 SOftware Factories
- 語(yǔ)言工作平臺(tái) Language Workbenches
- 產(chǎn)生式編程 Generative Rrogramming
- 意圖軟件 Intentional Software
- 模型驅(qū)動(dòng)開(kāi)發(fā) MDA
模型驅(qū)動(dòng)開(kāi)發(fā)(MDD)的一些參考資料
MDE - Model Driven Engineering - reference guide
參考: Model Driven Development – Future or Failure of Software Development
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

