主題
本頁說明 UML 1.x 和 UML 2.0 在 RUP 環境定義方面的差異。本頁無意涵蓋所有 UML ([UML04])
基礎架構與超架構規格,只是要提供相關的 UML 功能之概觀而已。另請參閱 [RUM05] 及 [ERI04],以取得詳細資訊。
請注意,"UML 1.x" 是指 UML 1.0 到 UML 1.5 的所有版本。
在 UML 2.0 特性集中的最重要變更是其行為圖,具體而言就是活動圖和一組互動圖 (請參閱以下的活動圖、序列圖以及通訊圖)。
「組合結構圖」和「結構類別」也是 UML 2.0 的新特性(請參閱以下的組合結構圖)。
簡介
建立活動模型在 UML 2.0 版做了全面的修訂。雖然就一般用途而言,其效果和外觀可能很類似,但是就 UML 1.5(以及更早的版本)的建模形式而言,依據 UML 1.x 的規則建立的模型所產生的嚴格解譯和執行結果,不會和 UML 2.0
產生的結果相同。因此,我們要提醒建立模型人員注意即使 UML 1.x 的活動模型不做任何變更,就似乎可以轉移到 UML 2.0,但是其執行方式可能不會相同,尤其是牽涉到平行作業的較複雜模型尤然。請參閱 [UML04],以取得詳細資訊。
如同 [UML04] 的定義,活動(會顯示在活動圖中)
是行為的規格,行為是由一系列的協調子單元組成,子單元的個別元素稱為動作。在 UML 1.x 活動圖中我們將可個別執行的步驟通稱為活動或活動狀態,或是正式的動作狀態;現在在 UML 2.0
中,我們將活動內的這些步驟稱為動作,並且這些動作不會在活動內進一步細分。狀態的涵意不再存在 UML 2.0 中,因為活動已經不再是一種狀態機,如在 UML 1.x 中的用法。在 UML 2.0
中,活動是由各種節點組成,動作是其中的一種,其他節點包括控制節點和物件節點,這些會在以下進一步說明。
串流語意
活動現在會有類似 Petri Net
的語意,這會依據記號串流,一個節點的執行活動,將會透過所指示的連接(稱為串流)影響其他節點的執行活動。包含物件或一群控制的記號,會透過這些連接在節點之間流動。當節點的輸入記號指定的條件成立時,節點就可以開始執行,當節點完成執行時,會在其輸出串流中提供記號,以便下游節點可以開始執行。串流連接節點會進一步修訂為控制和資料,或是物件串流,並且您可能也已經猜到,控制記號會在控制串流之間移動,並且物件或資料記號會透過物件串流傳遞。
這種方式對照於 UML 1.x ,其中的節點是之間具有轉換的狀態(或假狀態),限制了串流的建模工作。
平行建模
UML 2.0 的建模功能容許無限制的平行作業:但在 UML 1.x 中,整個狀態機(活動) 會進行「執行到完成」步驟,UML 2.0
功能的最完整形式是容許同一項執行作業處理活動的多重呼叫,這一個執行作業有多個記號串流,會在節點以及活動的串流連接器之間移動。這會將責任交代給模型器,使其注意競爭狀況和互動情況。另請參閱以下的語意差異一節,取得平行建立記號串流語意模型效果的其他範例。
表示法
動作與控制節點
下圖顯示 UML 2.0 的許多元素,並且是以 UML 2.0 的標準方式呈現,其中有一個長方形框,名稱位在左上角的分隔槽中。請將這個圖解和以下顯示的 UML 1.x
版圖解比較。它們的外觀都很類似(可以用不同方向顯示及不同的顏色使用慣例,不過這些對語意而言並不重要),並且這個模型在 UML 1.x 和 UML 2.0 中會有相同的執行結果。請注意控制節點(決策、合併、分出、結合、起始和終結) 看起來和
UML 1.x 的對等項一樣,並且控制串流是顯示成帶箭頭的線條,這是 UML 1.x 轉換箭頭的視覺類比。
UML 2.0 活動圖範例
UML 1.x 活動圖範例
UML 2.0 有一個額外的控制節點類型,稱為串流終結(在下列取自 [UML04]
的圖解中顯示),這個節點類型 作為「活動終結」節點的替代方案,來終止串流。這是必要的項目,因為在 UML 2.0 中,當控制到達「活動終結」節點的任意實例時,整個活動(包括所有串流在內)都會終止。「串流終結」只會終止其連接的串流。在
UML 1.5 中,因為執行到完成語意的關係,這不會形成問題,但在 UML 2.0 的無限制平行執行中,您卻不一定希望停止所有串流並摧毀所有記號。
串流終結控制節點
物件節點
UML 2.0 活動模型也可以支援物件節點。物件節點是一個活動節點,此節點指出 特定分類器的一個實例(很可能是處於特定的狀態)可能會在活動的特定點(例如動作的輸出或輸入)
時可供使用。物件節點是作為儲存器使用,特定類型(和可能處於特定狀態)的物件可以移到其中或從中移出。UML 2.0 針對物件節點引進一個新的表示法,稱為 Pin。Pin
代表動作的輸入或輸出,並且會畫成小的長方形,連接到動作長方形,如下圖所示。
Pin 表示法
箭頭代表物件串流。這些是實心線條,這和 UML 1.x 中用來代表轉換物件串流狀態的虛線不同。當動作的輸出 Pin 和連接的動作之輸入 Pin 同名時,輸出 Pin 和輸入 Pin 就會合併成一個獨立的 Pin。這也是對 UML 1.x
的物件串流提供一個視覺類比。
獨立 Pin 表示法
結構化活動節點
結構化活動節點是一個可執行的活動節點,它可能可以展開至子層活動節點。子層節點只隸屬於一個結構化活動節點,但是這些子層節點可以是巢狀的。它可能有連接控制串流和附加 Pin。結構化活動節點會畫成虛線方型,其中內含節點和串流,其頂端會有關鍵字
<<structured>>。
活動分割區
活動分割區是一種依據一些共同的特性,將活動的節點和串流分組的方法。在 UML 1.x 中,會在活動圖中使用泳道(視為分割區),將動作依據一些準則分類,例如,在商業模型中是依據執行組織。UML 2.0
將此分割區功能擴充為活動圖的多個維度,並提供額外的表示法,使諸如個別的動作可以用其隸屬的分割區名稱標示。下圖顯示會在 UML 2.0 中出現的多維泳道範例,其中的動作會依位置和職責分組。
使用二維泳道的活動分割區範例
語意差異
記號串流語意以及無限制的 UML 2.0 平行活動模型,要求習慣使用 UML 1.x 的建模者在建構新模型或轉換現有的模型時,要特別留意,以確保取得屬意的執行結果。例如,在上述的 processPassenger
範例中,辦理登機的旅客可能是經常搭乘的會員,在此情況下,工作人員就需要給予常客會員飛行里程,如以下 UML 1.x 模型片段所示。
使用管制的平行轉換
管制選用的平行轉換表示,在 UML 1.x 中,絕不會開始轉換,並且其行為就像是模型中沒有顯示出轉換一樣;因此,當其他兩個轉換完成時,執行會在結合之後繼續。而在 UML 2.0
中,如果旅客不是常客會員,就不會有記號送到該串流的結合點,並且模型會停止,因為結合會等候它的所有串流之記號都到達時,才會繼續。因此模型應該依如下所示建立,將狀況當作和封包處理串流相同的方式處理。可以直接對平行串流做管制,只要您確定沒有下游結合需要依賴該串流即可。
使用決策和合併節點來代替管制的平行串流
UML 1.x 的合作圖在 UML 2.0 中已改稱為通訊圖。這和舊版沒有語意方面的差異。通訊圖是以先前的合作圖為基礎,並且仍然是一種互動圖。
表示法
通訊圖專注於生命線之間的互動。它以圖形顯示,其節點呈長方形,代表結構化類別的一部分或合作作業的角色。環繞圖解的長方形外框,在其左上角分隔槽中會有一個名稱,這是從上一個 UML 版本以來的表示法變更。
-
節點會對應到互動作業中的生命線。
-
介於各個部分之間的線條代表形成通訊途徑的連接器。
-
連接器上可能會顯示對應關係。
-
各部分之間的訊息,是以靠近連接器線條的含標籤箭頭顯示。
通訊圖是用來建立實作作業或使用案例時,所呈現的互動模型。
通訊圖範例:
「訂單系統」的通訊圖範例
在 UML 2.0 中,元件是以一個類別符號表示,但沒有像 UML 1.4 定義的兩個突出長方形。 並改用 <<component>> 模板。不過,也可以選擇性地在元件符號的右上角,使用和 UML 1.4
圖示類似的元件圖示。
UML 2.0 將元件定義為結構化的類別,這表示在其內部結構(部分)的元素之間的合作關係,可以建構成更清楚說明其行為的模型。各個部分是透過連接器連接起來。可以使用連接埠,透過元件提供及需要的介面,來提高元件的封裝層次。請參閱概念:元件和概念:結構化類別,取得詳細資訊。
UML 的舊版本中定義一個特殊的建模元素,稱為子系統,這個元素會建模成具有介面的套件。此外,在實體架構中,也會使用元件來建立模型結構。在 UML 2.0
中,元件的用法較廣義,並且會在模型的所有部分中使用。因此,就不再需要使用特殊元素來建立子系統模型。在 UML 1.x 中的個別子系統實現子系統規格,在 UML 2.0 中變成套用至元件的個別模板 (分別為
<<realization>> 和 <<specification>>)。 另一個新的元件模板是 <<subsystem>>,指出大型元件的模型。
RUP 建議使用元件來建立子系統模型(請參閱準則:設計子系統,取得詳細資訊)。
架構的元素之間,可以具有特定的合作關係,在設計時,並不一定已經知道其各個部分和連接器。典型的類別圖(以及其他靜態圖)無法清楚呈現在這些元素套用的角色、職務、關係以及規則。
為了處理這些問題,UML 2.0 加入了組合結構圖。組合結構圖可以描述結構化類別 (例如元件或類別)的內部結構,這包括結構化類別和系統的其他部分之間的互動點。其中會顯示共同執行內含的結構類別行為的各個部分之配置。
「組合結構圖」可用來描繪「結構化類別」的內部內容(請參閱概念:結構化類別,取得「組合結構圖」的詳細資料以及範例)。
UML 2.0 在序列圖中加入數個新增特性:
-
其片段針對序列圖中發生的行為,提供更清楚的語意。合併的片段會封裝序列圖的一些部分,在其中可以建立個別串流的模型、顯示條件如何引導至不同的執行途徑。
-
所發生的互動會將互動分解為可重複使用的區塊。這是和其他多個互動共用互動部分的好方法。
-
在 UML 1.x 中,可以用來呈現迴圈的一個方法,是使用在「附註」中撰寫的迴圈條件。「附註」會附加至單一訊或一組訊息,這些訊息會在迴圈條件成立時執行。在 UML 2.0 中,迴圈有一個特定的表示法。
-
在 UML 2.0 中,序列圖可以顯示物件的建立和摧毀方式。
-
「執行出現項目」會顯示當物件於某些時間點收到訊息時,會執行的控制焦點。
由於包含新的功能可以呈現片段、互動發生次數及迴圈,因此序列圖可以以兩種形式使用:
-
實例形式:詳細說明特定的情境、記錄一個可能的互動、不含條件、分支或迴圈。這個形式是用來代表一個使用案例情境。同一個使用案例的不同情境會以不同的序列圖表示。支援 UML 1.x 語意的建模工具只接受這種呈現形式。
-
通用形式:說明情境中的所有可能情況,利用新的 UML 2.0 功能的優點,例如條件、分支和迴圈等。這種形式可以在使用案例適用的獨特序列圖中,代表同一個使用案例的數個情境。
下圖顯示一個序列圖建立不同情境模型的範例。替代片段顯示訊息序列的兩個可能情況,視條件是否符合而定:
範例:序列圖顯示出分支、迴圈及條件
|