1. 程式人生 > >全模型驅動架構(f-MDA)的基本思想

全模型驅動架構(f-MDA)的基本思想

傳統MDA實現方案的共同缺陷

        模型驅動架構(ModelDriven Architecture, MDA)的核心思想是抽象出與實現技術無關、完整描述業務功能的核心平臺無關模型( PIM , Platform Independent Model ),然後針對不同實現技術制定多個轉換規則,通過這些轉換規則及輔助工具將 PIM 轉換成與具體實現技術相關的平臺相關模型( PSM , Platform Specific Model ),最後將經過充實的 PSM 轉換成程式碼[1]

        然而至今,許多MDA實現方案都存在一個非常嚴重的共同缺陷:模型的業務語義太弱,大量的業務語義無法反映在業務模型(PIM)中

。一方面,在實際的業務開發中,當涉及多種實現技術時,總是需要編寫大量相似甚至完全相同業務語義的不同程式語言程式碼,比如:同一個業務功能的Web、手機App、客戶端等多種UI層的程式碼;另一方面,由於業務模型中沒有包含全部業務語義,業務模型的重用價值低,例如:利用建模資料開發通用工具的難度和廣度被大大提高了。

全模型驅動架構(f-MDA)的基本思想

        基於上述理由(以及本文未說明的其它原因),我認為MDA的下一步發展方向應是:使PIM模型能完整描述業務功能的全部業務語義,真正實現MDA提出時的初衷。為與經典的MDA實現方案相區別,我稱之為全模型驅動架構(Full-Model DrivenArchitecture, f-MDA)

,其基本思想是:針對特定領域設計描述業務模型的元資料模型,將描述業務功能所需的各類業務語義分別以相應型別的元資料予以描述,根據業務模型即可直接得到最終的執行系統,即:所有的業務開發工作在業務建模(PIM)階段全部完成。下圖是一個典型的企業應用類單據編輯功能的元資料模型分層及執行引擎處理流程示意圖。

全模型驅動架構(f-MDA)的優點

       全模型驅動架構可以達到一次開發可以適配多種技術平臺和多種應用場景的目的,業務開發人員配置完一個編輯功能的元資料模型後,由於模型中已包含了全部業務語義,執行引擎僅根據模型即可自動生成適合於PC、手機、平板的業務功能;如果需要得到與該功能相關的其他功能,如:列印成PDF文件、匯出為Word文件、處理工作流任務、批量匯出業務資料、批量匯入業務資料、生成API文件、生成詳細設計文件
等,則由相應應用場景的執行引擎從上述完整的元資料描述中按需抽取所需元資料自動完成。

        以工作流任務處理為例,為在處理任務時檢視和編輯單據資訊,通常的辦法有兩種:其一是,將業務單據功能頁面嵌入在任務處理介面中,這種方式會大大增加許可權控制的複雜性(在實際應用中,常常導致安全漏洞或額外的效能開銷)、以及流程處理和單據狀態的不一致問題(單據儲存與任務處理不在一個事務中);另一是,為工作流任務處理開發專門的單據檢視/編輯介面,這種方式則會大大增加重複的開發工作量。而在全模型驅動架構中,工作流任務處理時,在操作介面層,UI引擎可以從元資料模型中抽取出與UI相關的部分自動生成單據資料的檢視/編輯介面,與任務處理介面完美融合,當提交任務時,任務相關資料與單據資料一起提交,任務處理引擎從元資料模型中抽取出與資料校驗/儲存相關的部分自動完成單據資料的儲存,單據資料的儲存與流程控制的處理在一個事務中完成

        以業務功能的元資料模型為基礎,還可以在系統框架層面提供自動提醒、自定義標籤、UI個性化配置、單據新增的預設值方案、UI互動過程跟蹤、系統性能優化提示、業務模型重構等通用工具,大大提高系統的易用性。

 參考文獻

相關推薦

模型驅動架構f-MDA基本思想

傳統MDA實現方案的共同缺陷         模型驅動架構(ModelDriven Architecture, MDA)的核心思想是抽象出與實現技術無關、完整描述業務功能的核心平臺無關模型( PIM , Platform Independent Model ),然後針對不同

DSM領域定義建模MDA模型驅動架構

Domain-Specific Modeling and Model Driven Architecture

linux驅動學習 i2c驅動架構史上最 davinc dm368 i2c驅動分析

預備知識 在閱讀本文最好先熟悉一種i2c裝置的驅動程式,並且瀏覽一下i2c-core.c以及晶片提供商的提供的i2c匯流排驅動(i2c-davinci.c)。標題黨請見諒! 其實i2c介面非常的簡單,即使用51單片的gpio來模擬i2c,編寫一個e2prom或者其他i2c介

領域模型驅動設計Domain Driven Design入門概述

軟體開發要幹什麼: 反映真實世界要自動化的業務流程解決現實問題 領域Domain Domain特指軟體關注的領域在不能充分了解業務領域的情況下是不可能做出一個好的軟體  領域建模 領域模型驅動設計 }  分層架構 }  實體 }  值物件 }  服務 }  模組

使用模型驅動開發MDD的十五個理由

【51CTO譯文】什麼是模型驅動開發(MDD)?為什麼使用MDD?本文將回答這些問題,告訴您在軟體專案中使用模型驅動開發的十五個理由。 1、MDD開發更快速 相比傳統軟體開發,模型驅動開發(MDD)的軟體專案中,應用程式被指定為一個更高層次的抽象模型。通過對模型的解釋/執行或產生的程式碼,抽象模型會

MDA模型驅動架構 簡介

模型驅動架構(MDA)是一種獨立於特定平臺和軟體供應商的軟體體系結構設計和開發方法,它適用於設計、部署、整合等軟體開發的整個生命週期。 MDA 遵循的是諸如統一建模語言(UML)、可擴充套件標記語言(XML)和公共物件請求代理體系結構(CORBA)等一系列業界開放標準。 MDA 建模是基於功能,而非基於特定

MDA 模型驅動架構

MDA(Model DrivenArchitecture)是模型驅動架構,它是由OMG定義的一個軟體開發框架。它是一種基於UML以及其他工業標準的框架,支援軟體設計和模型的視覺化、儲存和交換。和UML相比,MDA能夠創建

Action接收引數的3種方式屬性,域模型模型驅動,struts2.1.8

常用第一種跟第二種 1.Action屬性傳引數: 建議:屬性應該與引數名相同。 在一個繼承ActionSupport類中新增接收引數的屬性,並生成其get() set()方法,在請求中附帶引數和對應的值,在struts2幫我們new這個類的時候,會自動呼叫get,set方法

MDA模型驅動架構

中科永聯高階技術培訓中心(www.itisedu.com) MDA(Model Driven Architecture)是模型驅動架構,它是由OMG定義的一個軟體開發框架。它是一種基於UML以及其他工業標準的框架,支援軟體設計和模型的視覺化、儲存和交換。和UML相比,MDA能夠創建出機器可讀和高度抽象的模

使用公式C=5/9F-32打印華氏溫度與攝氏溫度對照表

-1 .cn png 華氏溫度 mage bsp es2017 images 打印 使用公式C=(5/9)(F-32)打印華氏溫度與攝氏溫度對照表

阿裏雲centos7.2 centos 超lamp 環境搭建 各種拼接:)

vmw ati ipad 默認網關 html -i add-port grant light vmware 安裝 修改dns /etc/sysconfig/network-scripts 下面查找ifcfg-en33(可能會不同) 的文件,vi 編輯這個文件

HTML5架構HTML5 Boilerplates

earch itl 谷歌 title html foo 頁面 內核 rip 為什麽HTML5會成今天炙手可熱的前端語言,而不是2022年後呢,本文會給出一系列的HTML5架構,你現在就可以在你的項目小試牛刀了。 html5文檔的快速建立html5文檔非常容易建立,你只需要改

24.C語言最排序方法小結不斷更新

http 希爾 找到 sin -s arr span 計算機 gpo 希爾排序: 該方法的基本思想是:先將整個待排元素序列切割成若幹個子序列(由相隔某個“增量”的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全

阿裏雲彈性裸金屬服務器-神龍架構X-Dragon揭秘

架構摘要: 在5月16日的飛天技術會新品直播中,特別邀請了業界知名大咖狒哥以及阿裏雲虛擬化資深專家旭卿作為現場直播的嘉賓。本次直播主要從產品背景到“X-Dragon架構”,從硬件設備到軟件應用來深度的剖析“X-Dragon架構”為彈性計算裸金屬服務器提供的極致計算能力。在5月16日的飛天技術會新品直播中,特別

TP的關聯模型查詢筆記備忘

//進行關聯定義belongsTo設定(一對一關係) public function img(){ //關聯模型名,外來鍵名,當前模型主鍵名 return $this->belongsTo("ImageModel","img_id","id"); }   //

PCB CS架構工程系統實現單點登入方法

社會的不斷進步發展,分工也越來越細了.而我們工作接觸的範圍也越來越狹小了,但這不是倒退了,而是分工之細讓人們在各個方面深耕細作。PCB企業軟體系統發展路線同樣也如此,隨著我們PCB企業發展不斷壯大,軟體系統也在不斷細分。目的只有一個,讓專業的事情交給專業的系統去做。回想當初起公司用必有德ERP,一個ERP能搞

模型評估方法混淆矩陣

在資料探勘或機器學習建模後往往會面臨一個問題,就是該模型是否可靠?可靠性如何?也就是說模型的效能如何我們暫時不得而知。 如果模型不加驗證就使用,那後續出現的問題將會是不可估計的。所以通常建模後我們都會使用模型評估方法進行驗證,當驗證結果處於我們的可控範圍之內或者效果更佳,那該模型便可以進行後

Asp.net mvc+三層架構註冊篇

                                            &

開發轉測試七年,我從測試策略到測試架構Test architecture

程式設計師之間流傳著這樣一句順口溜:有人喜歡創造世界,他們做了開發者;有的人喜歡開發者,他們做了測試員。什麼是軟體測試?軟體測試就是一場本該在使用者面前發生的災難提前在自己面前發生了,這會讓他們生出一種救世主的感覺,拯救了使用者,也就拯救者這個軟體,避免了他們被解除安裝的命運。  

【ROS-MoveIt!原始碼學習】ROS中機器人模型的構建Build RobotModel

1.本文討論的內容和目的 本文從ROS MOVEIT!的入門教程moveit_tutorial中的運動學模型(kinematic_model_tutorial.launch.cpp)入手,目的是想搞明白: (1)ROS是如何匯入機器人模型;(本文內容) (2)如何呼叫逆運動學演算法求