UML擴展機制

 爲了避免UML語言整體的複雜性,UML沒有吸收所以的面向對象的建模機制和技術而是設計了擴展機制,通過擴展機制用戶可以定義使用自己的元素。在前邊介紹UML構成的時候,提到了UML的擴展機制(extensibility mechanism):版型(stereotype)、標記值(tagged value)和約束(constraint)。在很多情況下我們利用UML的版型這種機制對UML進行擴展,使其能夠應用到更廣泛的領域。 
1、什麼是版型

  版型是建模元素的一種類型,擴展UML的語義。版型必須以UML中已經定義的元素爲基礎,可以擴展語義但不能擴展已存在的元素結構。版型不是給元素增加新的屬性或約束,而是直接在已有元素中增加新的語義,這種機制可以看作是已有元素進行專有化。版型的表示方法是在模型元素的旁邊添加一個版型的名稱,版型名稱使用雙括號括起來,《版型名》。版型是一種非常好的擴展機制他避免了UML語義過於複雜化,同時也使得UML能夠適應各種需求。

  通常人們在特定方法或特定的應用領域中使用UML時,會使用版型。有些概念、方法或特定領域特有標註UML不支持,用戶就可以自定義。自定義版型時需要作以下工作:描述自定義版型的基礎是哪個元素;對該元素語義的影響;給出使用該版型的例子。

  利用UML的擴展機制對UML進行擴展是已經非常有意義的工作,有時我們需要使用UML來建模,但是UML本身提供的元素滿足不了我們的需要,此時並不意味者UML沒有用了,而是需要我們應用UML的擴展機制來實現自定義元素,從而實現建模。

1.1 數據建模

  我們在進行數據建模時經常使用的建模工具是ERWin、Power Designer、ERStudio等。既然UML功能強大使用UML可以進行數據建模嗎?當然可以,此時我們需要UML的擴展機制。對於關係型數據庫來說,可以用類圖描述數據庫模式,用類描述數據庫表,用類的操作來描述觸發器和存儲過程。

  進行數據庫設計時有一些關鍵概念我們需要用UML來表示,他們是模式(schema)、主鍵、外鍵、域、關係、約束、索引、觸發器、存儲過程、視圖等。從某種意義上說,使用UML進行數據庫建模就是要確定如何使用UML中的元素來表示這些概念。同時考慮引用完整性、範式等要求。下面是使用版型來表示這些元素。

數據庫中的概念
 版型
 對應UML元素
 
數據庫
 《database》
 組件
 
模式
 《schema》
 包
 

 《table》
 類
 
視圖
 《view》
 類
 

 《domain》
 類
 
索引
 《index》
 操作
 
主鍵
 《PK》
 操作
 
外鍵
 《FK》
 操作
 
唯一約束
 《Unique》
 操作
 
檢查約束
 《check》
 操作
 
觸發器
 《trigger》
 操作
 
存儲過程
 《SP》
 操作
 
表之間非確定性關係
 《Non-Identifying》
 關聯,聚合
 
表之間非確定性關係
 《Identifying》
 組合
 

1.2 Web建模

  對Web應用程序建模時需要利用UML的擴展機制對UML的建模元素進行擴展,對Web建模主要是利用了UML的版型這個擴展機制,在類和關聯上定義一些版型以解決Web應用系統建模的問題。Jim Conallen提出的擴展方法影響比較大,稱爲WAE(Web application extension for UML)。WAE定義了一些常見的Web建模元素的版型,但他並沒有也不可能預先定義所有的版型,如果我們在開發中遇到WAE沒有提供的版型,完全可以根據UML的擴展機制定義自己的版型。

1.3 業務建模

  用UML進行業務建模需要對UML做一些擴展,可以通過在UML的核心建模元素上定義版型來滿足業務建模的需要。目前用的比較多的是Eriksson和Penker定義的一些版型稱爲Eriksson-Penker業務擴展。Eriksson-Penker擴展方法主要是利用UML的擴展機制對UML的核心元素進行擴展,這些擴展可分爲幾個方面的內容:業務過程方面的元素、業務資源方面的元素、業務規則方面的元素、業務目標方面的元素以及其他一些元素。

2、標記值

  標記值是一對字符串包括標記字符串和值字符串也就是一個鍵值對,它存儲着有關元素的一些信息。標記值可以與任何元素相關聯,包括模型元素和表達元素。標記表示建模者想要記錄的名字,值是給定元素的值。通常使用類似下面的方式表示:

{Name=“Tom”}

如果標記是個布爾類型,可以省略其值,默認爲真。除了布爾類型以外其它的類型都必須明確寫出值。

3、約束

  約束是用文字表達式表示的語義限制,它應用於元素。約束顯示在{}內,可以直接放在圖中或者獨立出來。約束可以是UML預定義的,也可以之自定義的。描述約束的語言可以是正式的數學符號、OCL語言、僞代碼或自然語言。如果這種語言是非正式的,那麼它的解釋也是非正式的,並且要由人來解釋。即使約束由一種正式語言來表示,也不意味着它自動爲有效約束。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/royal_coffee/archive/2007/01/28/1496318.aspx

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