關於序列圖你需要知道的一切
UML 序列圖是詳細說明如何執行操作的交互圖。它們捕獲協作上下文中對象之間的交互。序列圖是時間焦點,它們通過使用圖的垂直軸來表示發送什麼消息以及何時發送的時間來直觀地顯示交互的順序。
什麼是序列圖?
時序圖,又稱時序圖、時序圖或時序圖,是一種UML交互圖。它通過描述消息在它們之間發送的時間順序來顯示多個對象之間的動態協作。
在 UML 中,序列圖中的對像被繪製為包含對象名稱的矩形,並帶有下劃線。可以通過以下三種方式之一命名對象:對象名稱、對象名稱及其類,或僅類名稱(匿名對象)。對象的三種命名方式如下圖所示。
時序圖的對象
- 顯示對象之間交互的順序。將交互行為建模為消息傳遞,並通過描述對象之間如何發送和接收消息來動態顯示對象之間的交互。
- 與其他UML圖相比,時序圖更強調交互行為的時間順序。
- 它可以形像地描述並發的過程。
序列圖的元素
1. Actor——系統參與者,可以是人、機器、其他系統、子系統;用於在時序圖中表示。
2. 對象——對象的命名方式有以下三種:
- 包括對象名和類名,例如:live class:class,在時序圖中,帶“object:class”。
- 只顯示類名,即為匿名對象,例如::course; 在時序圖中,帶有“:class”。
- 只顯示對象名,不顯示類名,eg: lecturer; 在時序圖中,用“object”表示。
三種命名方式一應俱全,看年表的人最容易理解,選擇哪一種。
3.對象的順序
- 對象的左右順序並不重要,但為了使圖表清晰整潔,應遵循以下兩個原則: 交互頻繁的對象盡可能靠近放置;
- 將初始化整個交互活動的對象放在最左端。
生命線
時序圖中從對像圖標向下延伸的虛線,表示對象存在了多長時間。
- Focus of Control(也稱為激活期)是表示對象將執行相應操作的時間段的符號。在C語義中可以解釋為一對括號{};用一個小矩形表示。它表示元素執行操作的時間段。矩形的頂部和底部分別與開始時間和完成時間對齊。
- 消息一般分為同步消息、異步消息和返回消息。
注意
- 消息的發送者將控制傳遞給消息的接收者,然後停止活動並等待消息的接收者放棄或返回用於指示同步的控制。
- 消息的發送者通過消息將信號傳遞給消息的接收者,然後繼續其活動,而無需等待接收者返回消息或控制。異步消息的接收者和發送者同時工作。
- 返回消息表示從過程調用返回。
創建和銷毀消息
參與者不一定在序列圖交互的整個持續時間內都存在。可以根據傳遞的消息創建和銷毀參與者。
構造函數消息創建它的 接收者。在交互開始時已經存在的發送者被放置在圖表的頂部。在交互過程中通過構造函數調用創建的目標會自動放置在圖表的更下方。
析構函數消息銷毀它的 接收者。還有其他方法可以指示目標在交互過程中被銷毀。只有當目標的銷毀設置為“析構函數之後”時,您才必須使用析構函數。
非即時消息
消息通常被認為是瞬時的,因此到達接收者所需的時間可以忽略不計。消息繪製為水平箭頭。為了表示在接收者實際收到消息之前需要一段時間,使用了一個 傾斜的箭頭。
組合片段
序列片段表示為稱為組合片段的框,它包含序列圖中交互的一部分。片段運算符(在左上角)表示片段的類型。交互式片段允許您在序列圖中對相關消息進行分組。提供了各種預定義的片段類型,允許您指定替代結果、並行消息或循環。
序列圖中的片段是在圖的一部分上繪製的矩形框。它們代表影響消息流的條件結構。這些框架在 UML 規範中稱為組合片段,容器稱為交互操作數。幀標記在左上角。此標籤在 UML 中稱為交互運算符。
示例——下訂單場景
想在線下訂單的船員。訂購的商品將根據她的會員身份(VIP、普通會員)通過快遞或普通郵件發送給會員。如果會員在訂單中選擇通知選項,店鋪將向會員發送確認通知。
另一個例子:下訂單
時序圖是一個二維圖,橫軸代表對象,縱軸代表時間,消息在對象之間橫向傳遞,縱向按時間順序排列。該示例顯示了一個包含三個參與對象的序列圖:客戶、訂單和庫存。甚至不需要正式地了解符號,您就可能對正在發生的事情有一個很好的了解。
- 第 1 步和第 2 步:客戶創建訂單。
- 第 3 步:客戶將商品添加到訂單中。
- 第 4 步、第 5 步:檢查每個項目的庫存可用性。
- 第 6、7、8 步:如果產品可用,則將其添加到訂單中。
- 第九步返回
- Step 10, 11: 保存並銷毀訂單
常用組合片段
片段類型包括 ref、assert、loop、break、alt、opt 和 neg、ref、sd。
操作員 | 意義 |
替代 | 可選的多個片段:只有條件為真的片段才會執行。 |
選擇 | 可選:片段僅在提供的條件為真時執行。相當於只有一條痕蹟的 alt。 |
標準桿 | 並行:每個片段並行運行。 |
環形 | Loop:片段可能會執行多次,守衛表示迭代的基礎。 |
批判的 | 臨界區:片段一次只能有一個線程執行。 |
否定 | 否定:片段顯示無效交互。 |
參考 | 參考:指的是在另一個圖上定義的交互。繪製框架以覆蓋交互中涉及的生命線。您可以定義參數和返回值。 |
標準差 | 時序圖:用於包圍整個時序圖。 |
注意:
- 可以組合幀以捕獲例如循環或分支。
- 組合片段 關鍵字:alt、opt、break、par、seq、strict、neg、critical、ignore、consider、assert 和 loop。
- 約束通常用於顯示對消息的時間約束。它們可以應用於一條消息的時間或消息之間的間隔。
組合片段的例子
(1) Choice (Alt) – Alternative fragment 提供了幾個受保護的alternative fragments(以交互操作數分隔),即用於指定兩個或多個消息序列之間的互斥選擇,等同於經典的if..else…:
(2) 選項 (Opt) – 包含可能出現或不出現的序列,這意味著可選片段僅在某些保護條件為真時才執行:
(3) 循環 (Loop) – 循環允許重複片段,直到某些保護條件變為假:
休息
break 允許在某些守衛變為真時轉義封閉循環:
中斷最常用於模擬異常處理。此序列圖示例使用中斷組合片段,因為它將 balance < amount 條件視為異常而不是替代流。要閱讀此示例,我們從序列的左上角開始向下閱讀。當序列到達返回值“餘額”時,它會檢查餘額是否小於金額。如果餘額不少於金額,則發送的下一條消息是 addDebitTransaction 消息,並且序列照常繼續。
平行
並行片段允許多個交互並行運行:
相框
框架提供了一種封裝序列圖的方法。
參考 (Ref)
一個幀可以在另一個序列圖中被引用:
協議
合作
場景
信號和接收
拍賣師向擁擠的房間裡焦急的競標者廣播一件物品的建議價格。當投標人聽到建議時,他決定接受或不接受該價格。
在自動拍賣中,拍賣師將如何廣播提案?如果接收到某些類型的廣播信號,對象可能具有應自動調用的指定操作。這些方法稱為接收。信號是一種特殊的類。接收名稱通常與信號名稱相匹配。接待處顯示在一個單獨的隔間中:
在序列圖中,我們可以將信號表示為異步信號,將接收表示為接收調用:
批判的
其他片段類型
- 嚴格的
- 斷言
- 考慮
- 忽視
- 地區
- 否定
序列圖符號總結
符號說明 | 視覺表現 |
---|---|
演員
注意:
|
|
生命線
|
|
激活
|
|
來電留言
|
|
返回消息
|
|
自我留言
|
|
遞歸消息
|
|
創建消息
|
|
銷毀消息
|
|
持續時間消息
|
|
筆記註釋(註釋)提供了將各種註釋附加到元素的能力。註釋不具有語義作用,但可能包含對建模者有用的信息。 |