在 Part 1 裡面,我們已經建立並安裝好自訂的 UML Profile,在這篇續集中,自然就是要說明如何在模型中套用自訂的 stereotypes 了。
練習:在模型中套用自訂的 stereotypes
安裝好自訂的 UML profile 之後,接著就可以在繪製模型時使用我們定義的 stereotypes,練習步驟如下:
(1) 新建立一個塑模專案:從 Visual Studio 主選單點 File > New > Project...,在左邊範本清單裡選擇 Modeling Projects,再到右邊點選 Modeling Project,如下圖:
練習:在模型中套用自訂的 stereotypes
安裝好自訂的 UML profile 之後,接著就可以在繪製模型時使用我們定義的 stereotypes,練習步驟如下:
(1) 新建立一個塑模專案:從 Visual Studio 主選單點 File > New > Project...,在左邊範本清單裡選擇 Modeling Projects,再到右邊點選 Modeling Project,如下圖:
將專案名稱指定為 NorthwindModel,然後按 OK 鈕。
(2) 在此塑模專案中加入一個類別圖和活動圖:Project > Add New Item,然後選擇 UML Class Diagram。檔案名稱可用預設值。
(3) 從 Solution Explorer 中雙擊此類別圖,以開啟模型編輯器,然後從 Toolbox 拉一個 Class 元素到類別圖中。接著查看該元素的 stereotypes 屬性,在該屬性的下拉清單裡,應該看不到 model、view、controller 這三個 stereotypes。這是因為我們尚未將 profile 套用至模型的緣故。
(4) 欲將 profile 套用至模型,可開啟 UML Model Explorer(主選單 > Architecture > Windows > UML Model Explorer),點選其中的模型或套件(此例即為 NorthwindModel),然後到屬性視窗中設定 Profiles 屬性。參考下圖:
你可以看到,Vsiual Studio 2010 Ultimate 已內建三個 profiles,一個是專為 C# 語言提供的 C# Profile,另外兩個則是支援 UML 標準 stereotypes 的 Standard Profile L2 和 Standard Profile L3。
(5) 將 profile 套用至模型後,再回頭修改剛才的類別圖,現在應該可以看到類別元素的 Stereotype 屬性的下拉清單裡面有多出 model、view、controller 這三個選項。
(6) 勾選其中一個 stereotype,例如 "model",你就可以在類別圖中看到套用後的視覺效果(在類別名稱上面顯示已套用的 stereotypes):
(7) 在專案中加入一個活動圖:Project > Add New Item,然後選擇 UML Activity Diagram,檔案名稱可用預設值。
(8) 編輯剛才新增的活動圖,從 Toolbox 拉一個動作節點(Action)到活動圖中,然後設定該節點的 Stereotypes 屬性。屬性下拉清單裡面應該可以看到「人工作業」:
由於我們在編寫 MyUmlProfile.profile 時,已經指定 model、view、controller 這三個 stereotypes 只能套用於類別元素,因此這裡的 Stereotypes 屬性下拉清單裡並不會出現。此外,你會發現,雖然有為動作節點「處理訂單」套用了「人工作業」stereotype,但是在活動圖中並沒有顯示這個 stereotype(類別圖則會顯示,參考上一個步驟的圖):
Profile 檔案的結構
現在讓我們回頭看一下 .profile 檔案的內容:
每個 .profile 檔案裡面都有一個 <profile> 根元素,此元素有一個 name 屬性(1),用來指定 profile 的名稱,而 displayName 屬性是顯示名稱。在 <profile> 之下包含三個區段:
- <metaclasses>:列出這個檔案裡用到的 metaclass 清單(6)。
- <stereotypes>:定義各個 stereotypes。
- <propertyTypes>:列出 stereotype 區段中用到的屬性的型別。
此範例一共定義了四個 stereotypes,而且這裡都沒有定義新的屬性。這四個 stereotypes 分別是:
- humanTask(2):指定用於活動圖的節點。
- model(3):指定用於類別圖的類別元素。
- view(4):指定用於類別圖的類別元素。
- controller(5):指定用於類別圖的類別元素。
各個 stereotype 可套用於哪些元素,是由各 <stereotype> 區段中的 <metaclasses> 來指定,而每一種元素的類型則是由 <metaclassMoniker> 指定。例如:
<metaclassMoniker name="/MyUmlProfile/Microsoft.VisualStudio.Uml.Activities.IActivityNode" />
注意 name 的屬性值必須以 "/YourProfileName" 開始,而 YourProfileName 就是 <profile> 元素的 name 屬性值(此例即 "/MyUmlProfile")。
結語
在塑模比較複雜的應用程式時,UML 提供的基本表示法和 stereotypes 往往不敷使用,因此,如果知道如何使用自訂 profile 來擴充 UML 語意,開發人員也就掌握了更大的設計彈性。透過本文 Part 1 與 Part 2 的練習,你應該已經大致瞭解 UML profile 的用途,並且能夠用 Visual Studio 2010 Ultimate 建立自訂的 profile。限於篇幅,有些地方並未加以說明,例如:VSIX 編輯器中各個欄位的作用、為自訂的 stereotype 加上屬性、以及如何決定 stereotype 可套用的模型元素的類別名稱(.profile 中的 stereotypes\stereotype\metaclasses\metaclassMoniker 元素)等等。如欲獲得更多相關資訊,可參考文後列出的參考資料。
結語
在塑模比較複雜的應用程式時,UML 提供的基本表示法和 stereotypes 往往不敷使用,因此,如果知道如何使用自訂 profile 來擴充 UML 語意,開發人員也就掌握了更大的設計彈性。透過本文 Part 1 與 Part 2 的練習,你應該已經大致瞭解 UML profile 的用途,並且能夠用 Visual Studio 2010 Ultimate 建立自訂的 profile。限於篇幅,有些地方並未加以說明,例如:VSIX 編輯器中各個欄位的作用、為自訂的 stereotype 加上屬性、以及如何決定 stereotype 可套用的模型元素的類別名稱(.profile 中的 stereotypes\stereotype\metaclasses\metaclassMoniker 元素)等等。如欲獲得更多相關資訊,可參考文後列出的參考資料。
沒有留言: