一、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.下訂單