UML擴展機制

介紹

在當今的市場中,組織需要不斷髮展。這導致了一場知識革命,通過戰略性地獲取、交流和利用知識資產,使組織能夠靈活響應。面向對象和基於組件的開發是這場革命的主幹,它是統一建模語言(UML),將它們結合在一起成爲進化的必要基礎。但是,正是UML擴展機制進一步推動了這一點,並使組織能夠通過戰略捕獲、通信和利用智能資產,真正以敏捷和響應的方式發展。

UML是一種通用的、工具支持的、標準化的建模語言,用於指定、可視化、構建和記錄各種系統密集型流程的所有元素。它促進了以用例爲驅動、以體系結構爲中心、迭代和增量的過程,這是面向對象和基於組件的過程。UML廣泛地應用於不同類型的系統、領域、方法和過程,這就是爲什麼它是如此流行和廣泛使用的語言。

然而,儘管UML定義得很好,但在某些情況下,您可能會發現自己希望以某種可控的方式彎曲或擴展語言,以便將其定製到特定的問題域,以簡化目標的通信。這就是UML擴展機制出現的地方。

有四種常見的機制可以在整個語言中一致地使用,即規範、公共劃分、修飾和可擴展性機制,我們將在這裏討論這些機制;但是,這項工作的主要焦點將是這四種機制中的後者,即可擴展性機制。

規格 (Specification)

前面提到的第一個擴展機制稱爲規範。這是一個很容易理解的術語,因爲我們都知道規範在我們的日常語言中意味着什麼。在UML中,它同樣簡單。

通過使用規範,我們基本上更詳細地指定了一些內容,以便以更清晰和簡潔的方式向我們展示所指定術語的角色和含義。例如,我們可以通過定義一組完整的屬性、操作、完整的簽名和行爲來爲類 (Class) 提供豐富的規範。然後我們將對該類的能力和侷限性有一個更清晰的概念。規範可以包含在類中,也可以單獨指定。

 

共同部門 (Common Divisions)

這是UML提供給我們的第二個擴展機制。爲了區分兩個看起來非常相似或彼此密切相關的事物,使用了共同的劃分。有兩個主要的共同部分:抽象與表現,接口與實現。


在前者中,我們主要討論一個類和一個對象之間的區別,其中類是一個抽象,對象是該類的一個清晰的表現。
大多數UML構建塊都有這種類/對象區別,例如用例、用例實例等。


在第二個常見的劃分(接口與實現)中,我們說接口聲明瞭某種契約或協議,而實現則表示對該契約的一種具體實現。然後,實現負責執行接口。


裝飾物 (Adornments)

修飾是文本或圖形項,可以添加到UML構建塊的基本符號中,以便可視化該元素規範中的某些細節。例如,讓我們考慮關聯,它在最簡單的符號中由一行組成。現在,這可以用一些額外的細節來修飾,比如角色和每一端的多樣性(見下圖)。

最重要的裝飾品之一是便條。這是一個圖形符號,用於向元素(或元素集合)添加一些註釋或約束,以幫助澄清正在創建的模型。我們可以使用註釋來附加一些額外的信息到我們的模型中,例如解釋、需求或者僅僅是一個O觀察(見下圖)。


值得一提的是,註釋不具有語義影響,即註釋的內容不會以任何方式改變其所附模型的意義。

可擴展性機制 (Extensibility Mechanisms)


擴展性機制允許您通過添加新的構建塊、創建新的屬性和指定新的語義來定製和擴展UML,以便使語言適合您的特定問題域。UML定義了三種常見的可擴展性機制:原型、標記值和約束。


刻板印象 (Stereotypes)


構造型允許您擴展UML的詞彙表,這樣您就可以創建新的模型元素,這些元素是從現有的元素派生的,但是具有適合您的問題域的特定屬性。它們用於對UML構建塊進行分類或標記,以便引入新的構建塊,這些構建塊使用您所在領域的語言,看起來像原始的或基本的模型元素。


例如,在建模網絡時,可能需要有表示路由器和集線器的符號。通過使用構造型節點,您可以將這些內容顯示爲原始構建基塊。

作爲另一個例子,讓我們考慮Java或C++中的異常類,有時可能要對它們進行建模。理想情況下,你只想讓他們被扔和抓住,其他什麼都不想。現在,通過用適當的刻板印象標記它們,您可以在您的模型中將這些類變成第一類公民;換句話說,您可以將它們顯示爲基本的構建基塊。

刻板印象還允許您引入新的圖形符號,爲使用特定領域詞彙表的模型提供視覺提示(見下圖)。

從圖形上看,一個刻板印象被呈現爲一個由行會者包圍的名稱,並放置在另一個元素的名稱之上(見下圖)。或者,可以使用與該構造型關聯的新圖標來呈現構造型元素(見圖)。

 

標記值 (Tagged Values)


標記值是用於指定模型元素的關鍵字-值對的屬性,其中關鍵字是屬性。它們允許您擴展UML構建塊的屬性,以便在該元素的規範中創建新的信息。


可以爲現有的模型元素或單個原型定義標記值,以便具有該原型的所有內容都具有該標記值。值得注意的是,標記值不等於類屬性。相反,您可以將標記值視爲元數據,因爲它的值應用於元素本身而不是其實例。


標記值的最常見用法之一是指定與代碼生成或配置管理相關的屬性。例如,可以使用標記值來指定映射特定類的編程語言,或者使用它來表示組件的作者和版本。


作爲標記值有用的另一個例子,考慮一個項目的發佈團隊,該團隊負責組裝、測試和部署發佈。在這種情況下,跟蹤每個主要子系統的版本號和測試結果可能是可行的,因此將這些信息添加到模型中的一種方法是使用標記值。


從圖形上看,標記值呈現爲一個由括號括起來的字符串,該字符串放在另一個模型元素的名稱下面。字符串由名稱(標記)、分隔符(符號=)和值(標記)組成(見下圖)。

約束條件 (Constrants)


約束是用於指定語義和/或條件的屬性,對於模型的元素,這些屬性必須始終保持爲真。它們允許您通過添加新規則或修改現有規則來擴展UML構建基塊的語義。

例如,在建模硬實時系統時,用一些附加信息(如時間預算和截止日期)修飾模型可能很有用。通過使用約束條件,可以很容易地捕獲這些定時需求。


從圖形上看,約束呈現爲一個由括號括起來的字符串,該字符串放在關聯元素附近,或者通過依賴關係連接到元素。這個符號還可以用來修飾模型元素的基本符號,以便可視化元素規範中沒有圖形提示的部分。


例如,您可以使用約束表示法來提供一些關聯的屬性,例如順序和可更改性(見下圖)。

結論

建模就是溝通。當使用UML時,您將獲得指定、可視化、構造和文檔化軟件密集型系統元素所需的所有工具。但是,在某些情況下,您可能希望在線條之外添加顏色,即彎曲或擴展建模語言,以便根據項目的特定需求對其進行形狀和增長。

UML提供了幾種擴展機制,允許您在沒有修改基礎建模語言。這些機制允許您添加新的構建基塊,修改現有基塊的屬性,甚至更改它們的語義學。

UML擴展機制不僅提供了一種通信手段,而且也是一個框架,用於瞭解發展文化,使文化得以發展。他們可能不能滿足所有的需要在一個項目的開發過程中產生的,但是它們確實適應了大部分建模者所需的部分裁剪和定製以簡單的方式進行這很容易實現。但是,必須記住,擴展與UML的標準形式有很大的不同,並且通過使用它,因此可能會遇到一些互操作性問題。因爲這個原因在使用擴展機制之前,必須仔細權衡收益和成本,只有在絕對必要的時候才這樣做。


 UML推薦軟件 - Visual Paradigm Online


用例圖

類圖

活動圖

組件圖

部署圖

包裝圖

狀態機圖

序列圖

ER圖

數據流圖

 

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