一頓操作猛如虎 “模型驅動開發”瞭解一下

前言導讀

  當下企業軟件應用開發面臨着需求複雜多變、新的需求和系統不斷增長,軟件系統變得越來越複雜,普通的軟件開發方式難以快速滿足用戶需求。爲了解決這些問題,就出現了很多新的方法,其中最突出的一個就是模型驅動開發 MDD (Model Driven Development)。
  基於高度業務模型驅動開發MDD,通過使用高度抽象的領域業務模型作爲構件,完成代碼轉換實現或各種模型驅動引擎配置支撐,降低開發成本,應對複雜需求變更。其基本思想是讓開發中心從編程轉移到高級別抽象中去,通過模型轉成代碼或其他構件來驅動部分或全部的自動化開發。它主要爲了解決軟件的兩個根本危機:複雜性和變更能力。

關鍵詞解讀

  說到模型驅動開發就不得不先了解幾個相近的概念;
  模型驅動架構(MDA,Model Driven Architecture)
  MDA 是由國際對象管理組織(OMG,Object Management Group)於2001年7月提出的基於MDD形式化後的模型驅動架構。
  爲了實現MDA的三大目標:輕便可移植性、互操作性和可重用性,採用了模型和技術分離的架構設計。使用一定的建模標準(UML、MOF、XMI等)構建描述應用程序或集成系統的業務功能和行爲的模型,這些模型獨立於具體平臺並且和實現具體業務功能和行爲的特定技術代碼分離,從而實現了業務和應用程序邏輯與底層平臺技術的分離,這種分離也帶來了應用程序的核心與技術變化週期的隔離。系統的業務部分和技術部分都可以各自進化而互不影響 - 業務邏輯響應業務需求,技術部分按業務需要利用新的技術開發。
一頓操作猛如虎 “模型驅動開發”瞭解一下
  上圖爲MDA 結構示意圖。最左側爲OMG提出的架構理論,其次是 MDA 的核心技術:MOF ( Meta Object Facility ,元對象設施)、 CWM (Common Warehouse Metamodel ,公共數據倉庫元模型)和 UML . MDA 的主要工作就是要把基於這些技術建立的PIM 轉換到不同的中間件平臺上,得到對應的 PSM .PSM中給出的是目前主要針對的實現平臺:CORBA 、 XML 、JAVA 、 Web Services 和 .NET .顯然,隨着技術的發展,這個列表將不斷擴充。最後是基於PSM平臺相關模型在公共服務及垂直領域等組件或應用中進行模型驅動開發。
  領域驅動設計/模型驅動設計(DDD,Domain-Driven Design)
  DDD是由Eric Evans最先提出,目的是對軟件所涉及到的領域進行建模,以應對系統規模過大時引起的軟件複雜性的問題。整個過程大概是這樣的,開發團隊和領域專家一起通過通用語言(Ubiquitous Language)去理解和消化領域知識,從領域知識中提取和劃分爲一個一個的子領域(核心子域,通用子域,支撐子域),並在子領域上建立模型,再重複以上步驟,這樣周而復始,構建出一套符合當前領域的模型。
  建模的過程是由不同階段的成員來完成,有些模型之間有引用關係,應用軟件通過所有人的建模工作而構建起來。
一頓操作猛如虎 “模型驅動開發”瞭解一下
  模型驅動開發(MDD, Model Driven Development)
  MDD 上面簡介中已經解釋過的,這裏講名詞放在一起便於對比。
  模型驅動開發框架(MDF, MDD Framework)
  MDF 實際上就是一套開發框架,可以是基於spring、spring boot 等技術開發框架搭建的腳手架,承載了模型驅動相關的設計、開發方法等的編碼框架。
  那麼對於上面幾個概念之間的關係是怎麼樣的?
  MDA環境下的系統開發方式就是在開發活動中通過創建各種模型精確描述不同的問題域,並利用模型轉換來驅動包括分析、設計和實現等在內的整個軟件開發過程。
  不難看出MDA說的是整體的軟件架構設計使用的是模型驅動;而在軟件開發的過程中,對不同領域的業務需求進行分析、抽象建模和技術框架分層所常用的分析方法就是DDD;整個軟件的開發活動就稱之爲MDD。

新體驗 MDD-MDF

  整個的模型驅動開發的目的就是爲了解決軟件的複雜性和變更能力,從而達到軟件編程工業化產出的目的。
一頓操作猛如虎 “模型驅動開發”瞭解一下
  傳統的瀑布式開發流程如下圖,每一個需求的產生都需要進行需求分析、設計、編碼、測試等一系列流程。
一頓操作猛如虎 “模型驅動開發”瞭解一下
  模型驅動框架的開發流程如下圖
一頓操作猛如虎 “模型驅動開發”瞭解一下
  對比上面兩圖可以瞭解到模型驅動的優勢在於不用爲每個需求定製化的編碼,而是通過高度抽象化的模型映射到具體的業務元數據上來實現需求功能;這樣大大減少了編碼的重複工作,同時也提高了軟件的可變更性。
一頓操作猛如虎 “模型驅動開發”瞭解一下
  MDA架構設計中,MDA需要從需求採集和理解業務需求開始;PIM和PSM可以由不同團隊完成,獨立工作,但是組合後能產生健壯的業務解決方案;整個流程中模型轉化和相關模型的驅動引擎是核心。
  接下來重點了解一下我們的MDD的腳手架(MDF)都做了什麼?
  在腳手架中主要的是通過元數據SDK、規則SDK、UI元數據SDK和其他相關支持工具包完成對整體的模型驅動開發支持的。其中元數據SDK包含業務元數據的建模、數據查詢等相關功能;UI元數據SDK包含了UI模板定義查詢相關功能,搭配Node的前端驅動項目進行UI模板的渲染和組件的過濾展示等;而規則SDK包含了對於業務數據CRUD的默認規則、編碼規則、唯一性校驗規則、參照查詢規則以及卡片翻頁等默認規則。接下來讓通過一個更完整的圖來看MDD開發腳手架。
一頓操作猛如虎 “模型驅動開發”瞭解一下
  首先,需求輸出到開發階段,根據需求設計抽取定義業務元數據,及頁面設計的UI元數據。
  其次,業務元數據通過XML或統一中央元數據倉庫的形式加載到腳手架項目啓動中。
  再次,瀏覽器訪問node前端,node前端路由請求到java後端Controller.
  最後,後端處理邏輯在規則執行引擎中執行相應的規則,分別查詢UI元數據用於頁面渲染,以及業務數據的查詢。並將結果返回給node前端做渲染展示。
  目前腳手架功能中部分擴展功能上圖沒有體現,這些擴展功能包括:
  a. UI元數據查詢邏輯通過規則引擎查詢,可通過增加前置或後置規則進行功能擴展;UI元數據支持遠程獲取;
  b. Redis 是否使用可通過開關配置。並支持單機模式,哨兵模式,集羣模式配置;
  c. MySQL數據庫支持規則、UI元數據和業務數據區分不同的數據源存儲;
  d. 支持Ali OSS 存儲;
  e. 支持基於ES的參照及翻譯;
  f. 接入統一三方包管理和統一異常及日誌;
  g. 支持MySQL、Redis、應用基本信息、環境信息等的健康檢查與監控;
  以上就是MDD的基本實現原理和功能描述,整體看上去還是很簡單清晰的。

總結展望

  下面通過下圖表達一下模型驅動開發的優勢
一頓操作猛如虎 “模型驅動開發”瞭解一下
  模型驅動開發在企業應用開發過程中,通過把基礎服務及各領域當作獨立的問題域,分別進行需求分析和抽象建模搭載模型驅動腳手架提供基礎支撐服務或領域通用服務,再通過部分個性化業務的建模實現等提供的個性化能力 構成整個的企業應用。
  當下及未來的企業應用開發使用MDD, 不僅可以通過重用模型來提高開發效率,對於需求的複雜多變由模型驅動的可擴展性和多態來應對。並且對於整個應用的統一規範、統一管理和標準化的文檔輸出提供更加便捷的途徑。例如,以前需要開發十幾個表單頁交互的情況,現在使用模型驅動開發,再也不需要996,輕輕鬆鬆完成開發,早點下班回家帶娃!!!還在猶豫什麼,趕快來嚐嚐鮮吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章