前言
MetaEdit+ 是領域特定建模(DSM)領域的標杆產品。本文以 MetaEdit+ 官方範例「家族樹建模語言」為例,詳細記錄從元模型定義到模型演進的完整流程,幫助開發者快速掌握 DSM 工具開發的核心概念與操作步驟。
一、 環境準備與範例概覽
從 MetaCase 官網下載 MetaEdit+ Workbench 31 天試用版,安裝後內建 UML 等範例模型。本範例目標:建立一個家族樹圖形建模語言,支援人物、家庭關係、性別區分等概念,並能生成視覺化家族圖譜。
二、 GOPPRR 元模型語言核心概念
MetaEdit+ 採用 GOPPRR 元模型架構,包含六大核心元類型:
- Graph(圖):獨立模型容器,如「家族樹圖」。
- Object(對象):圖的主要元素,如「Person(人物)」。
- Property(屬性):描述元素特徵,如「First Name」、「Family Name」。
- Port(端口):定義連接語義,限制關係連接點。
- Relationship(關係):連接對象,如「Family(家庭)」。
- Role(角色):關係與對象的連接介面,如「Parent(父母)」、「Child(子女)」。
家族樹語言對應關係:Person 為 Object,Family 為 Relationship,Parent/Child 為 Role,姓名為 Property,初期無 Port 定義。
三、 逐步建立家族樹模型語言(5 步驟)
- 建立 Person 對象:定義屬性(First Name, Family Name)。
- 設計 Person 圖形符號:使用 Symbol Editor 繪製視覺表徵。
- 建立 Family 關係:定義連接兩個 Person 的關係類型。
- 定義 Parent、Child 角色:分別關聯 Family 關係的兩端。
- 建立 Family Tree 圖類型:整合上述元素,定義圖的工具箱與規則。
完成後即可在模型編輯器中拖放建立家族樹實例。
四、 模型演進:支援性別區分與連接約束
隨著需求變更,模型需支援男女性別區分,並限制連接語義(如:父親只能連接為 Parent 角色)。
- 修改 Person 屬性:新增 Gender 屬性。
- 繼承建立 Male、Female 子類型:從 Person 衍生,分別擁有專屬符號(如方形/圓形)。
- 更新圖定義:工具箱中替換為 Male、Female 兩種對象工具。
- 引入 Port 端口:在 Male/Female 定義輸入/輸出端口,限制 Family 關係的連接點(如:Male 只能作 Parent)。
- 驗證生成:建立新家族圖,驗證性別符號與連接規則生效。
五、 結語
MetaEdit+ 以「元模型驅動」方式,讓領域專家能快速建構專屬建模語言。家族樹範例展示了從核心概念定義、視覺符號設計、關係角色約束,到模型演進擴充的完整生命週期。若您計劃開發領域專用建模工具,MetaEdit+ 的 GOPPRR 架構與圖形化定義環境極具參考價值。