描述時序的好幫手——UML序列圖

一、UML序列圖的定義

UML是一種描述上下文不同對象之間,通信、操作、執行細節的序列圖。它以時間爲基礎,並在縱軸上標註發送、接收信息的結點與內容,從而直觀地顯示對象交互的順序。

UML序列圖可用於表達:
① 實際生活中,不同對象在進行具體用例或操作時的交互;
② 邏輯分析上,用戶與系統、系統與系統之間的通信行爲。

在這裏插入圖片描述

二、UML序列圖的相關概念

2.1 對象

參與交互的元素,如用戶、系統、物體等。習慣上,將不同對象,按參與交互的先後順序,從左至右列舉在UML序列圖的水平方向上。

2.2 時間

信息交互、操作發生的時間順序。在垂直方向,按先後,從上往下表示。
注意: UML的時間只關注於交互的次序,而非持續時間。故垂直空間的長短,與通信的持續時間無關。

2.3 序列個體

1.參與者(Actor):
在UML主體之外,不屬於對象,不直接參與系統內的信息交互,一般以開啓或引起中斷等行爲,觸發某個事件,進而影響序列的流程,如:人類用戶、外部硬件;

在這裏插入圖片描述
2. 生命線(Lifeline):
由對象、參與者延伸出的一條時間線,代表個體在交互過程中的狀態。不參與通訊時,呈掛起態(長虛線表示);

在這裏插入圖片描述
3. 激活(Activations):
生命線上的細長矩形,表示該時間段,生命線所屬的個體正在通訊或執行某項操作;

在這裏插入圖片描述
4. 發送信息(Call Message):
發送端主動向另一對象傳遞信息的過程;

在這裏插入圖片描述
5. 返回信息(Return Message):
數據交互中,接收端對來自發送端的信息進行反饋的過程;

在這裏插入圖片描述
6. 自我信息(Self Message):
發送端向同對象、同激活段的其它元素傳遞信息的過程;

在這裏插入圖片描述
7. 遞歸信息(Recursive Message):
發送端向同對象、同激活段、同一元素傳遞信息的過程;
注意: 區別於自我信息,遞歸信息是自身發送,自身接收。例如:自言自語時,耳朵(接收端)能聽到嘴巴(發送端)的聲音。雖然二者同屬一個人(同對象),同時運作(同激活),但因爲是不同的器官(不同元素),所以這個過程屬於自我信息;

在這裏插入圖片描述
8. 創造信息(Create Message):
交互中途,由成員對象向系統引進一個新的對象的過程;
注意: 新引進的對象,必須是交互開始時,不存在於系統中。

在這裏插入圖片描述
9. 銷燬信息(Destroy Message):
交互中途或結束時,把某個成員對象,從系統中剔除的過程;

在這裏插入圖片描述
10. 持續信息(Duration Message):
表示信息的發送、接收時刻,存在一個持續、較大時間差的狀態;

在這裏插入圖片描述
11. 註釋(Note):
向序列圖補充備註或說明,增強可讀性。

在這裏插入圖片描述

2.4 序列片段

爲了提高UML的準確性與可維護性,UML 2.0 引進序列片段的概念,用以表示複數個體組成的選擇、分支、循環等邏輯結構。

序列片段,由片段運算符(Fragment Operator)片段主體(Fragment Box) 構成:

在這裏插入圖片描述
片段運算符(Fragment Operator),表示序列片段的運算類型,有:alt、opt、par、loop、region、neg、ref、 sd等;

運算符 運算類型
alt 相當於 switch 或 if-else if-else,執行條件爲“真”的對應片段主體
opt 相當於單個 if,只有條件爲“真”時,才執行對應片段主體
loop 相當於 while、loop、for,循環運行片段主體
par 片段主體內的每個分支並行運行
region 片段主體每次只能由一個線程調用、執行
neg 片段主體所執行的交互無效
ref 類似於子函數,定義另一序列圖上的交互,使用者可以自定義參數和返回值
sd Sequence Diagram,主體一般包圍整個序列圖,表示系統本身

片段主體(Fragment Box),表示片段內各語句的相互作用,按運算符的不同,內容可以是分支操作、循環體等。

序列片段示例(資金派發系統),如下:

在這裏插入圖片描述

2.5 序列圖示例

序列圖整體示例(酒店系統),如下:

在這裏插入圖片描述

三、UML序列圖的其它示例

1.創建和刪除對象

在這裏插入圖片描述
2.醫院病牀分配

在這裏插入圖片描述
3.預訂座位

在這裏插入圖片描述
4.銀行報價

在這裏插入圖片描述
5.下訂單

在這裏插入圖片描述

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