UML 順序圖表:方針
在 Visual Studio Ultimate 中,您可以繪製「順序圖表」(Sequence Diagram) 來顯示互動。互動是類別、元件、子系統或行動典型執行個體之間的一系列訊息。順序圖表有兩種:
UML 順序圖表是 UML 模型專案一部分。本主題說明 UML 順序圖表。若要建立 UML 順序圖表,請在 [架構] 功能表上,按一下 [新增圖表]。
如需順序圖表項目的詳細資訊,請參閱 UML 順序圖表:參考。如需觀看示範影片, 請參閱略圖互動使用順序圖表 (2010)
以程式碼為基礎的序列序圖表可以從 .NET 程式碼產生。如需詳細資訊,請參閱藉由產生順序圖表顯現程式碼內容及其關聯性 以及 MSDN How Do I Series: How to Generate UML Sequence Diagrams (2010).
本主題內容
使用 UML 順序圖表
繪製順序圖表的基本步驟
建立和使用簡式順序圖表
類別和生命線
建立可重複使用的互動序列
摺疊生命線群組
使用片段描述控制結構
從程式碼產生順序圖表
使用 UML 順序圖表
您可以在不同的程式詳細資料層級上使用順序圖表,以用於各種目的。繪製順序圖表的典型情況如下所示:
如果您具有一個使用案例圖表,摘要系統的使用者及其目標,則您可以繪製順序圖表,以描述系統介面的主要元件如何互動,來完成每個使用案例的目標。如需詳細資訊,請參閱UML 使用案例圖表:方針。
如果您已識別到達元件介面的訊息,則您可以繪製順序圖表,以描述元件的內部各部分如何互動,來達到每個傳入訊息所需要的結果。如需詳細資訊,請參閱UML 元件圖表:方針。
繪製順序圖表有數個優點:
您可以更容易地看到如何在元件之間散發工作。
您可識別使軟體難於更新的互動模式。
與其他圖表的關聯性
您可利用數個方式,將 UML 順序圖表與其他圖表搭配使用。
生命線和型別
您在順序圖表中繪製的生命線,可以代表系統中元件或類別的典型執行個體。您可以從型別建立生命線,從生命線建立型別,以及在 UML 類別圖表和 UML 元件圖表中顯示型別。如需詳細資訊,請參閱類別和生命線。
參數型別
您也可以在 UML 類別圖表中描述參數和傳回值的型別,這些型別用於在生命線之間傳送的訊息。
使用案例詳細資料
使用案例代表使用者的目標,以及要達到目標所執行的步驟序列。可以使用數種方式來描述步驟序列。一種方式是繪製順序圖表,顯示使用者和系統主要元件之間的互動。如需詳細資訊,請參閱UML 使用案例圖表:方針。
原始程式碼
您可以從原始程式碼產生順序圖表。您可以修訂圖表,嘗試不同的設計選擇。如果您希望,也可以將內容複製到模型專案的順序圖表中。如需詳細資訊,請參閱從程式碼產生順序圖表。
繪製順序圖表的基本步驟
如需順序圖表上項目的完整清單,請參閱 UML 順序圖表:參考。
注意事項 |
---|
HOW TO:編輯 UML 模型和圖表中會說明如何建立任何模型圖表的詳細步驟。 |
若要建立順序圖表
按一下 [架構] 功能表上的 [新增圖表]。
在 [範本] 下,按一下 [UML 順序圖表]。
命名圖表。
在 [加入至模型專案] 中,選取方案中的現有模型專案,或 [建立新模型專案],然後按一下 [確定]。
新的順序圖表隨即出現,其中包含 [順序圖表] 工具箱。工具箱包含所需的項目和連接器。
若要繪製順序圖表
將 [生命線] (1) 從 [工具箱] 拖曳至圖表上,以代表類別、元件、行動或裝置的執行個體。
注意事項 您也可以透過將現有類別、介面、行動或元件從 [UML 模型總管] 拖曳至圖表,來建立生命線。如此即會建立生命線,代表所選擇型別的執行個體。
繪製訊息以顯示生命線如何共同合作來達成特定目標。
若要建立訊息 (3、4、6、7),請按一下訊息工具。然後,在傳送生命線中按一下想要訊息開始的點,然後按一下接收生命線。
接收生命線上隨即顯示執行出現次數 (5)。執行出現次數表示執行個體執行方法所用的時間期間。您可以建立從執行出現次數開始的其他訊息。
若要顯示來自未知事件來源 (9) 的訊息,或廣播至未知收件者 (10) 的訊息,請從圖表的空白處繪製非同步訊息或將非同步訊息繪製到圖表的空白處。這些訊息稱為「尋得訊息」(Found Message) (9) 和「遺失訊息」(Lost Message) (10)。
注意事項 若要移動具有遺失或尋得訊息的生命線群組,請遵循以下步驟來選取生命線,然後移動它們:在那些生命線周圍繪製矩形,或在按住 [CTRL] 鍵的同時,按一下每個生命線。如果您使用 [全選] 或 CTRL+A 來選取所有生命線,然後移動它們,則不會移動附加至這些生命線的任何遺失或尋得訊息。如果發生此案例,則您可以分別移動這些訊息。
針對每個傳入相同元件或系統的主要訊息繪製順序圖表。
若要變更訊息順序
在生命線中向上或向下拖曳訊息。您可以將該訊息拖曳至其他訊息上,也可以將該訊息拖入或拖出執行區塊。
-或-
按一下訊息,使用 [向上鍵] 和 [向下鍵] 調整訊息位置。使用 [SHIFT+向上鍵] 和 [SHIFT+向下鍵],變更訊息的順序。
若要移動或複製順序圖表上的訊息序列
以滑鼠右鍵按一下訊息 (3、4),然後按一下 [複製]。
以滑鼠右鍵按一下您要從中傳送新訊息的執行出現次數 (5) 或生命線 (1),然後按一下 [貼上]。如果您希望,新的傳送者可以位於不同的圖表上。
訊息的副本或其所有附帶訊息都會加入至執行出現次數的結尾,或生命線的結尾。
注意事項 貼上的訊息一律出現在執行出現次數或生命線的結尾。貼上之後,您可將其向上拖曳至先前的位置。
若要顯示和編輯訊息文字的簽章。
目標生命線必須繫結或對應加入簽章中的型別來被看見。若要完成這項任務,請執行下列任一步驟:
以滑鼠右鍵按一下生命線然後選取 [建立類別]。
-或-
選取生命線,按下 [F4] 然後在 [屬性]視窗中設定 [類型]為現有型別或為新型別指定名稱。以滑鼠右鍵按一下訊息的標籤,然後選取 [建立作業]。
簽章文字出現在訊息標籤下方。您現在可以編輯簽章文字了。如需詳細資訊,請參閱類別和生命線。
若要改進順序圖表的配置
以滑鼠右鍵按一下圖表的空白部分,然後按一下 [重新整理配置]。
若要復原作業,請按一下 [編輯],然後按一下 [復原]。
若要變更擁有互動的封裝
在 [UML 模型總管] 中,尋找順序圖表顯示的互動。
注意事項 互動在第一個生命線加入至順序圖表後,才會在 [UML 模型總管] 中出現。
將互動拖曳至封裝。
-或-
以滑鼠右鍵按一下互動,然後按一下 [剪下]。以滑鼠右鍵按一下封裝,然後按一下 [貼上]。
建立和使用簡式順序圖表
順序圖表最簡單且使用最廣泛的格式只包含生命線和訊息。此類圖表可讓您清楚顯示設計中各物件之間,或系統與其使用者之間的典型互動序列。這樣通常已足夠協助您就設計進行討論和溝通。
繪製簡式順序圖表時,需要考慮以下事項。
訊息的類型
有三個工具可用來建立訊息。
使用 [同步] 工具,以描述傳送者等待接收者傳回回應 (3) 的互動。
[<<傳回>>] 箭頭會顯示在執行出現次數的結尾。它表示要將控制項傳回至傳送者。
使用 [非同步] 工具,以描述傳送者可以立即繼續執行而無需等待接收者 (4) 的互動。
使用 [建立] 工具,以描述傳送者建立接收者 (8) 的互動。
建立訊息應是接收者收到的第一則訊息。
標註互動
若要描述序列的詳細資料,您可以在圖表的任何位置放置 [註解]。
使用 [註解連結],您可以將註解連結至生命線、執行、互動使用和片段。
警告 |
---|
您要將註解附加至序列的特定點時,請將它連結至執行出現次數、互動使用或片段。不要連結至生命線,因為在這種情況下,無法保證其仍會附加在序列中正確的點上。 |
使用註解:
注意在序列的關鍵點上完成的內容。這樣可協助讀者查看互動的目標。
描述整個序列的整體目標。將註解附加至初始執行出現次數,或保持不附加它。例如,「客戶已從菜單選擇項目,並已指定價格」。
描述每個生命線的職責。將註解附加至生命線。例如,「訂購管理員收集客戶的菜單選擇」。
請注意,可能會執行例外狀況或替代方案做為所顯示典型序列的替代方案。例如,「客戶可以選擇跳過此序列的其餘部分」。
- 考慮使用片段做為此類註解的較正式的替代方案。請參閱使用片段描述控制結構。
決定圖表的範圍
清楚了解圖表要顯示的內容非常重要。
初始化事件
每個圖表都應顯示一個初始化事件所產生的互動序列。例如,這可能為:
初始化使用案例 (例如開啟購買餐點網頁) 的使用者。
從一個系統元件傳入另一個系統元件的訊息,例如查詢客戶想要購買項目的可用性。
狀態變更觸發的事件,例如項目的庫存低於臨界值。
詳細資料層級
順序圖表可以顯示不同的詳細資料層級。您可以使用兩個幾乎獨立的個別維度來決定詳細資料層級:
生命線可以表示其中一個詳細資料層級:
程式碼中已存在或正在開發的物件。
元件或其子元件,通常會省略表面、Proxy 和其他連接機制。
系統和外部行動
訊息可以表示另一個詳細資料層級:
程式碼中位於 API 或 Web 介面上的軟體訊息。
異動或子異動,例如使用者與系統之間或程式碼與資料庫之間的異動。
使用案例 - 使用者與系統之間的主要互動。
無論是瀏覽現有程式碼或描述新設計,繪製不太詳細的檢視並進行討論通常都很有用。
描述變異
圖表顯示單一的典型事件序列。如果要顯示替代可能性,例如失敗案例,則可以使用下列任一選項:
繪製個別順序圖表來描述那些案例
使用使用片段描述控制結構來顯示迴圈、替代等。
評定設計
您可以使用圖表來評定其物件或元件之間的工作散發。如果看到以下模式,請考慮重構:
一個生命線可執行任何內容,呼叫任何其他生命線,而其他生命線只是被動回應。
許多訊息都會通過生命線。每個生命線只應傳送訊息給數個芳鄰,不可與芳鄰的芳鄰通訊。通常可以整理生命線,以便只有數個位置可讓訊息通過生命線,且當它們通過時,目標生命線不應同時交換已通過生命線的訊息。
部分生命線可處理多種工作。應該很容易找到一個簡潔的句子,描述每個生命線的職責,摘要它執行的工作以回應收到的每則訊息。
類別和生命線
順序圖表中的生命線顯示類別或元件介面的執行個體。您可以採用兩種方式來命名生命線:
使用目的 |
使用格式 |
---|---|
型別的匿名執行個體。 如果每個型別只有一個生命線,請使用此項目。 |
typeName |
型別的已命名執行個體。 如果要顯示涉及相同型別的一個以上執行個體的序列,請使用此項目。 |
objectName:typeName |
從型別建立生命線
您可從已經定義的類別建立新生命線,例如在類別圖表上。
注意事項 |
---|
請確認在執行此工作之前,您已有現有順序圖表。 |
若要從現有型別建立生命線
從 [UML 模型總管] 將類別、元件或介面拖曳至順序圖表。
-或-
以滑鼠右鍵按一下個別圖表上的類別、元件或介面,然後按一下 [建立生命線]。
在 [建立生命線] 對話方塊中,選取順序圖表,然後按一下 [確定]。
新的已命名執行個體生命線隨即出現,其型別是您拖曳的型別。
注意事項 您可以任意重複執行此動作。這樣會建立具有不同執行個體名稱的生命線。
若要變更生命線的型別
以滑鼠右鍵按一下生命線,然後按一下 [屬性]。
在 [屬性] 視窗中,設定 [型別] 屬性。您可以從下拉式功能表來選取型別,也可以輸入新名稱。
從生命線建立類別
已建立一個或多個順序圖表時,可以透過從生命線建立型別或介面來摘要生命線。
若要從生命線建立類別或介面
以滑鼠右鍵按一下生命線,然後按一下 [建立類別] 或 [建立介面]。
新的類別或介面會出現在 [UML 模型總管] 中。
針對生命線收到的每則訊息,在類別或介面中建立作業:
選取要包含的所有訊息。
以滑鼠右鍵按一下其中一則訊息,然後按一下 [建立方法]。
新類別或介面具有每則所選取訊息的作業。
作業名稱出現在每則訊息箭頭的下方,並且位於訊息的 [作業] 屬性中。
如果訊息包含的參數格式為 "(參數 : 型別)",則這些參數會出現在新作業的參數清單中。
注意事項 如果將新訊息加入至順序圖表,則必須重複此步驟。
若要詳細檢視新類別或介面,請將其加入至類別或元件圖表。
開啟或建立類別或元件圖表。
從 [UML 模型總管] 中,將新類別或介面拖曳至類別圖表。
類別或介面會出現在類別圖表中。
-或-
從 [UML 模型總管] 中,將新介面拖曳至元件圖表中的元件或連接埠。
介面隨即出現在元件上,顯示為棒棒糖。
建立參數的類別
您可以將參數包含在順序圖表上的訊息中。您可以使用 UML 類別圖表來描述參數型別。
建立可重複使用的互動序列
使用個別圖表,可以描述序列,其中包含要分隔出來的詳細資料,或數個圖表之間共有的詳細資料。
您可以在一個圖表上建立 [互動使用] 矩形 (12),其指向其他圖表的詳細資料。
按兩下 [互動使用],即可開啟所連結的順序圖表。
若要從現有生命線建立可重複使用的互動序列
在 [工具箱] 中,按一下 [互動使用]。
在順序圖表上,按住滑鼠按鈕,並且拖曳跨越要併入可重複使用序列的生命線。從您要插入互動使用的垂直位置開始。
在順序圖表上,互動使用會跨越選取的生命線顯示。
按兩下互動使用上的名稱,對其進行重新命名,以描述此圖表中可重複使用序列的效果。
-或-
撰寫類似函式呼叫 (含有參數) 的名稱。
將互動使用連結至其他順序圖表。以滑鼠右鍵按一下互動使用,然後執行下列其中一項:
按一下 [建立新序列],以建立新順序圖表
-或-
按一下 [連結至序列],以連結至現有圖表。
Visual Studio 會建立互動使用與新互動序列之間的連結。
方案中會出現新的順序圖表。它包含您用來建立互動使用的生命線。
注意事項 其中只包含您用來建立互動使用的生命線。新圖表不會包含在互動使用之後建立的生命線,即使互動使用現在已涵蓋它們也是如此。
若要從現有訊息建立可重複使用的系列
以滑鼠右鍵按一下要移動的訊息,然後按一下 [移至圖表]。
Visual Studio:
使用互動使用取代選取的訊息和任何附帶訊息。
將取代的訊息移至新順序圖表上。
建立互動使用與新順序圖表之間的連結。
若要巡覽至互動使用參考的序列
按兩下互動使用。
-或-
以滑鼠右鍵按一下互動使用,然後按一下 [移至序列]。
使用互動使用建立預留位置
您可以建立互動使用,而無需將它連結至其他圖表。您可以使用此項做為序列部分的預留位置,其詳細資料仍要進行處理。使用互動使用的名稱,表示您想要的結果。
摺疊生命線群組
您可以將一組生命線摺疊在一起,以便該群組顯示為一個生命線。這樣可協助您將物件群組顯示為單一元件。隱藏摺疊群組中生命線之間的訊息和互動使用。顯示包含其他生命線的訊息和互動序列。
若要將生命線群組摺疊在一起
選取兩個以上的生命線。
以滑鼠右鍵按一下其中一個,然後按一下 [摺疊]。
個別生命線會取代為單一生命線。
隱藏只涉及群組成員的訊息和互動使用。
若要重新命名群組,請按一下名稱。
注意事項 展開群組時,會遺失群組名稱。
若要展開已摺疊的群組
以滑鼠右鍵按一下已摺疊的生命線,然後按一下 [展開]。
注意事項 群組的名稱會遺失,群組中指向註解或工作項目的任何連結也會遺失。
使用片段描述控制結構
您可以使用合併片段 (13) 來定義順序圖表中的迴圈、分支和並行處理。或者,也可以考慮改為使用活動圖表。活動圖表在顯示行動之間的訊息時不是很有用,但在某些情況下,更適於顯示迴圈、分支和並行。
如需片段型別的完整清單,請參閱以 UML 順序圖表說明具有片段的控制流程。
若要建立合併片段
選取一則訊息,或全部訊息都在相同執行出現次數或生命線開始的訊息序列。
注意事項 選取訊息箭頭,而不是訊息指向的執行出現次數。
以滑鼠右鍵按一下其中一則訊息,指向 [範圍陳述式],然後按一下需要的片段型別。
新的片段隨即出現。它包含選取的訊息。
如果合併片段型別允許多個片段,則也會出現空的片段。
若要設定片段的成立條件,請以滑鼠右鍵按一下片段邊界,然後按一下 [屬性]。設定 [成立條件] 屬性。
成立條件用來定義分支或迴圈的條件。
若要將新片段加入至允許多個片段的類型,請以滑鼠右鍵按一下片段的界限,然後指向 [加入]。按一下 [Before 互動運算元] 或 [After 互動運算元]。
若要將新訊息加入至片段,請使用訊息工具,或複製和貼上。
從程式碼產生順序圖表
在 Visual C# 或 Visual Basic 程式碼檔案中,可以從方法定義產生順序圖表。
產生的順序圖表與在模型專案中建立的順序圖表非常類似,只是產生之順序圖表中的項目不會出現在 [UML 模型總管] 中。
若要從程式碼產生順序圖表
在 Visual Studio 中,開啟包含方法定義的程式碼檔案。
以滑鼠右鍵按一下方法定義內的任意位置,然後按一下 [產生順序圖表]。
如需詳細資訊,請參閱藉由產生順序圖表顯現程式碼內容及其關聯性。
注意事項 產生圖表之後,對圖表進行的任何變更都不會出現在程式碼中,而對程式碼進行的任何變更也不會出現在圖表中。若要顯示這些變更,必須產生新的順序圖表。您可以任意從相同的方法產生新順序圖表。
您可以從生命線和訊息來巡覽至它們代表之類別和方法的程式碼定義。
若要從產生的生命線和訊息巡覽至程式碼
- 以滑鼠右鍵按一下產生的生命線或訊息,然後按一下 [移至定義]。
將產生的序列複製到 UML 模型
您可以將產生之序列的生命線、訊息和其他部分複製到模型專案中的順序圖表。
若要將產生的順序圖表複製到 UML 模型或從 UML 模型複製產生的順序圖表
在順序圖表上,選取要複製的項目,例如生命線和訊息。如果要複製圖表中的所有項目,請按一下 [編輯] 功能表上的 [全選]。
在 [編輯] 功能表上,按一下 [複製]。
在模型專案中建立或開啟順序圖表。若要了解如何執行此操作,請參閱繪製順序圖表的基本步驟。
在 [編輯] 功能表上,按一下 [貼上]。
所選取項目的複本會顯示在圖表中。
注意事項 您可能必須調整貼上項目的色彩。選取它們,然後在 [屬性] 視窗中設定色彩。