UML 1.x 和 UML 2.0 的差異
本頁說明 UML 1.x 和 UML 2.0 在 RUP 環境定義方面的差異。
主要說明

主題

概觀

本頁說明 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 1.x 活動圖範例

UML 2.0 有一個額外的控制節點類型,稱為串流終結(在下列取自 [UML04] 的圖解中顯示),這個節點類型 作為「活動終結」節點的替代方案,來終止串流。這是必要的項目,因為在 UML 2.0 中,當控制到達「活動終結」節點的任意實例時,整個活動(包括所有串流在內)都會終止。「串流終結」只會終止其連接的串流。在 UML 1.5 中,因為執行到完成語意的關係,這不會形成問題,但在 UML 2.0 的無限制平行執行中,您卻不一定希望停止所有串流並摧毀所有記號。

此圖解顯示串流終結控制節點。

串流終結控制節點

物件節點

UML 2.0 活動模型也可以支援物件節點。物件節點是一個活動節點,此節點指出 特定分類器的一個實例(很可能是處於特定的狀態)可能會在活動的特定點(例如動作的輸出或輸入) 時可供使用。物件節點是作為儲存器使用,特定類型(和可能處於特定狀態)的物件可以移到其中或從中移出。UML 2.0 針對物件節點引進一個新的表示法,稱為 Pin。Pin 代表動作的輸入或輸出,並且會畫成小的長方形,連接到動作長方形,如下圖所示。

本圖顯示物件節點的 Pin 表示法,其中有一個輸出 Pin 透過物件串流連接到輸入 Pin。

Pin 表示法

箭頭代表物件串流。這些是實心線條,這和 UML 1.x 中用來代表轉換物件串流狀態的虛線不同。當動作的輸出 Pin 和連接的動作之輸入 Pin 同名時,輸出 Pin 和輸入 Pin 就會合併成一個獨立的 Pin。這也是對 UML 1.x 的物件串流提供一個視覺類比。

此圖解顯示替代的獨立 Pin 表示法。

獨立 Pin 表示法

結構化活動節點

結構化活動節點是一個可執行的活動節點,它可能可以展開至子層活動節點。子層節點只隸屬於一個結構化活動節點,但是這些子層節點可以是巢狀的。它可能有連接控制串流和附加 Pin。結構化活動節點會畫成虛線方型,其中內含節點和串流,其頂端會有關鍵字 <<structured>>。

活動分割區

活動分割區是一種依據一些共同的特性,將活動的節點和串流分組的方法。在 UML 1.x 中,會在活動圖中使用泳道(視為分割區),將動作依據一些準則分類,例如,在商業模型中是依據執行組織。UML 2.0 將此分割區功能擴充為活動圖的多個維度,並提供額外的表示法,使諸如個別的動作可以用其隸屬的分割區名稱標示。下圖顯示會在 UML 2.0 中出現的多維泳道範例,其中的動作會依位置和職責分組。

UML 2.0 型活動分割區圖例,其中具有二維泳道。

使用二維泳道的活動分割區範例

語意差異

記號串流語意以及無限制的 UML 2.0 平行活動模型,要求習慣使用 UML 1.x 的建模者在建構新模型或轉換現有的模型時,要特別留意,以確保取得屬意的執行結果。例如,在上述的 processPassenger 範例中,辦理登機的旅客可能是經常搭乘的會員,在此情況下,工作人員就需要給予常客會員飛行里程,如以下 UML 1.x 模型片段所示。

此圖例顯示一個 UML 1.x 模型片段,其中包含管制的平行轉換。

使用管制的平行轉換

管制選用的平行轉換表示,在 UML 1.x 中,絕不會開始轉換,並且其行為就像是模型中沒有顯示出轉換一樣;因此,當其他兩個轉換完成時,執行會在結合之後繼續。而在 UML 2.0 中,如果旅客不是常客會員,就不會有記號送到該串流的結合點,並且模型會停止,因為結合會等候它的所有串流之記號都到達時,才會繼續。因此模型應該依如下所示建立,將狀況當作和封包處理串流相同的方式處理。可以直接對平行串流做管制,只要您確定沒有下游結合需要依賴該串流即可。

前一個圖型的 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 功能的優點,例如條件、分支和迴圈等。這種形式可以在使用案例適用的獨特序列圖中,代表同一個使用案例的數個情境。

下圖顯示一個序列圖建立不同情境模型的範例。替代片段顯示訊息序列的兩個可能情況,視條件是否符合而定:

序列圖顯示出分支、迴圈及條件

範例:序列圖顯示出分支、迴圈及條件