程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> MetaModelEngine:元模型引擎開發思路

MetaModelEngine:元模型引擎開發思路

編輯:關於.NET

在DSM:使用MetaEdit+編寫Family Tree Modeling Language中介紹了MetaEdit+的一個家族樹模型語言應用示例,通過示例的學習掌握了基本的概念,本篇將介紹一下OpenExpressApp的元模型引擎MetaModelEngine的應用思路。

為何借鑒MetaEdit+思想

我在軟件產品線工程方法 - 四個主要方法原則提到產品線帶來的幾個好處:減少成本,快速上市,減少風險和提高質量,這些都是我們在做軟件產品時都期望達到的。在我以前blog中也有一個軟件工廠的圖,該圖表明了模型驅動開發是支持軟件產品線工程的一種方法,所以我會比較關注模型驅動開發。

在信息系統開發平台OpenExpressApp - 總體架構的由來中我講到過MetaEdit+是全球DSM領域內著名的產品,它能夠帶來產品線中期望的幾個好處:

縮短上市時間,開發生產力能夠提高5-10倍

開發人員可以集中設計和關注業務功能,而不必用代碼去寫所有方面的內容

由於使用的是經過驗證的工具,產品質量顯著提高

可以完全控制模型和代碼生成,而不像MDA方法模型和代碼生成固定,不便於特定領域開發

通過以上說明可以看出,我借鑒MetaEdit+的思路是想采用一種模型驅動開發方法來支持產品線工程。  

元模型引擎對OpenExpressApp平台的支持

知道MetaEdit+已經好多年了,之前也研究過這個工具,並查看過它的一些資料,也是在OpenExpressApp計劃之中的重要組成部分。

支持OpenStudio的圖形化建模,讓業務人員能看、能做,符合OpenExpressApp讓業務人員編寫軟件的價值主張,通過業務人員更早更多的參與,可以更快的構建應用

支持OpenTool的工具:快速原型開發工具、圖形化自動化測試工具等

Visual Studio的DSL架構

Microsoft.VisualStudio.Modeling:域模型框架時整個系統的核心,負責管理模型的元素和連接,也就是域類和域關系的實例。

Modeling.Disgrams:設計界面框架建立在域模型框架之上,它負責處理圖形符號的顯示,包括處理圖表、圖形、連接器和裝飾等元素在設計界面上的顯示

Modeling.Validation:驗證框架負責執行關於模型元素和連接的驗證方法,如果驗證失敗,它還要負責創建錯誤對象。它與Shell框架交互,把錯誤信息顯示到Visual Studio的錯誤窗口

Modeling.TextTemplation:模板引擎負責執行文本模板來生成代碼或其他的工件。模板引擎室一個獨立的組件,用於執行來自非DSL的模板輸入

Modeling.Shell:建模用的Shell負責管理將涉及器集成到Visual Studio中,例如處理工具窗口和菜單名利,以及文件的打開和關閉等

對MetaEdit+的技術借鑒

組件架構圖

MetaModel實現步驟:圖形編輯器(Diagram Editor)-> 矩陣和列表編輯器(Matrix和Table Editor)-> 代碼生成器

模型架構圖:GOPRR為元元模型層、領域概念為元模型層、產品規格為模型層、實例為系統應用層

元模型概念GOPPRR:圖、對象、屬性、端口、關系、角色

Graph 圖:一個獨立模型,通常使用圖來表示

Objects 對象:圖的主要元素,例如例子中的Person

Property 屬性:圖、對象、端口、角色和關系都可以擁有一些屬性描述

Port 端口:定義角色如何連接對象的可能語義

Relationship 關系:讓對象連接在一起

Role 角色:連接關系與對象之間

屬性和非屬性

圖的組成

綁定Binding

對象引用圖 Decomposition

實現DSM步驟

設計領域概念(參考示例:DSM:使用MetaEdit+編寫Family Tree Modeling Language)

找到領域概念

把領域概念映射到模型概念GOPPRR:圖、對象、屬性、端口、關系、角色

定義領域規則

定義規則

規則例子:【開始】狀態不能直接連接到【結束】狀態

畫標記

實現生成器

主要技術及初步計劃

元模型引擎

圖形編輯器

代碼生成器

今年下半年主要實現元模型引擎以及圖形編輯器,基於引擎初步支持企業架構建模工具。代碼生成器放在明年開始。

轉載請注明:http://zhoujg.cnblogs.com/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved