模型驅動開發Model Driven Development (MDD) 是一種以模型作為主要工件的高級別抽象的開發方法,模型在工具的支持下,被作為核心資產被轉換成代碼或者可運行配置。現在軟件業存在多種MDD開發方法,本篇將對MDD進行概要介紹。
定義
在過去多年,軟件開發面臨了多個挑戰,新的需求和存在系統不斷增長,系統也變得越來越復雜,以至于我們很難及時的構建它們。為了解決這些問題, 就出現了很多新的方法,其中最突出的一個就是模型驅動開發。 MDD代表了一套理論和工業化軟件開發的方法框架,在軟件開發全生命周期中系統的的使用模型作為主要工件,它主要為了解決 軟件的兩個根本危機:復雜性和變更能力 。
使用模型作為文檔和規范是有價值的,但是它需要嚴格的管理方式來確保模型是持續更新的。在實際工作中,我們迫于時間壓力經常會出現于實現不一致的模型,這對開發和項目其實是不利的。而
MDD的基本思想是讓開發中心從編程轉移到高級別抽象中去,通過
模型
轉成代碼或其他工件來
驅動
部分或全部的
自動化開發
。
模型是一種抽象的語言
多種模型
模型是一種建模語言,它需要我們自己根據業務和技術需要去設計它,在架構、分析、設計、實現等不同階段都會存在多種模型, 如企業架構模型、技術架構模型、領域模型、UI模型、數據庫建模、業務規則模型、系統部署模型、測試模型等。
模型驅動開發方法中,模型作為first class除了生成代碼之外,還可以生成很多其他非代碼工件,以下為一些從模型生成工件的通用例子:
三個階段
模型和建模這兩部分內容已經存在很多方法,它們在現在軟件開發過程中已經處于重要位置,但是在需要哪些表達模型以及如何使用這些模型存在著差 異。傳統的模型只是一個設計藍圖,而MDD必須滿足額外的要求,這些模型必須是可讀的,也就是說必須存在第三個階段,也就是模型轉換:model to model (M2M) 和 model to code (M2C)
優勢
- 提高產能 :開發快、降低成本、提高質量
- 可維護性 :高級別模型與技術分類,技術架構的改變意味著只是模型的一種新的轉換
- 一致性 :手工編碼和架構決策容易出錯,MDD可以確保生成的工件是一致的
- 可重用性 :模型、轉換和架構都是可以重用的,由于架構和技術問題已經被解決,所以開發新功能的風險也低
- 改善涉眾溝通 :模型忽略系統邏輯行為的底層實現,而直接展現問題域,這樣可以保證和涉眾使用同一種語言進行溝通
- 改善設計溝通 :模型與系統是匹配及時更新的,所以可以通過模型來改善系統設計的討論和溝通
- 捕獲領域知識 :可以加強領域專家對系統的直接影響,通過模型還可以幫助組織進行知識管理
- Business-IT對齊 :關注問題域,關聯技術域,一種業務和IT對齊的方法
- 模型作為一種長期的核心資產 :高級別的模型作為核心資產管理起來,只有在業務需求變更時才會進行更改
- 推遲技術決策 :應用開發在早期關注業務邏輯問題,對于技術選擇可以推遲到后期
- 提供及時的文檔 :通過模型可以生成很多同步的文檔,利于與不同涉眾進行交流
經濟模型
MDD方法相關
- 特定領域建模 DSM
- 面向語言編程 LOP
- 軟件工廠 SOftware Factories
- 語言工作平臺 Language Workbenches
- 產生式編程 Generative Rrogramming
- 意圖軟件 Intentional Software
- 模型驅動開發 MDA
MDE - Model Driven Engineering - reference guide
參考: Model Driven Development – Future or Failure of Software Development
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
