什麼是序列圖/時序圖?

前言

UML Sequence Diagrams是交互圖,詳細說明了如何執行操做。 它們捕獲協做環境中對象之間的交互。 序列圖是時間焦點,它們經過使用圖表的垂直軸來直觀地顯示交互的順序,以表示消息的發送時間和時間。算法

Sequence Diagram in UML Diagram Hierarchy

序列圖捕獲:框架

  • 在實現用例或操做的協做中發生的交互(實例圖或通用圖)
  • 系統用戶與系統之間,系統與其餘系統之間或子系統之間的高級交互(有時稱爲系統序列圖)

序列圖的目的

  • 模擬系統中生成的對象之間的高級交互
  • 對實現用例的協做中的對象實例之間的交互建模
  • 對實現操做的協做中的對象之間的交互建模
  • 模擬通用交互(顯示經過交互的全部可能路徑)或交互的特定實例(僅顯示交互中的一條路徑)

初識序列圖

序列圖顯示元素隨着時間的推移而相互做用,它們根據對象(水平)和時間(垂直)組織:ide

對象維度

  • 橫軸表示交互中涉及的元素
  • 傳統上,操做中涉及的對象根據它們什麼時候參與消息序列從左到右列出。 可是,橫軸上的元素能夠按任何順序出現

時間維度

縱軸表示頁面下的時間進程(或進展)。函數

注意:序列圖中的時間都是關於排序的,而不是持續時間。 交互圖中的垂直空間與交互持續時間無關。oop

序列圖例子:旅店系統

序列圖是一個交互圖,詳細說明了如何執行操做 - 發送什麼消息以及什麼時候發送消息。 序列圖根據時間進行組織。 當你走下頁面時,時間會進行。 操做中涉及的對象根據它們什麼時候參與消息序列從左到右列出。測試

如下是進行酒店預訂的序列圖。 啓動消息序列的對象是預留窗口。ui

Sequence Diagram Example

注意:類和對象圖是靜態模型視圖。 交互圖是動態的。 它們描述了對象如何協做。編碼

序列圖表示法

Actor線程

Actor

  • 與主體交互的實體所扮演的一種角色(例如,經過交換信號和數據)
  • 在主題外部(即,在某個意義上,Actor的實例不是其相應主題的實例的一部分)。
  • 表示人類用戶,外部硬件或其餘主題所扮演的角色。

參與者不必定表明特定的物理實體,而僅僅表明某個實體的特定角色 一個對象能夠扮演幾個不一樣Actor的角色,相反,一個Actor能夠由多個不一樣的對象來表示3d

Lifeline

Lifeline

生命線表明交互中的個體參與者

Activations

Activation

  • 生命線上的細長矩形表示元素執行操做的時間段
  • 矩形的頂部和底部分別與啓動和完成時間對齊

Call Message

Call Message

  • Message定義了交互的生命線之間的特定通訊。
  • call message是一種表示目標生命線操做調用的消息

注意:call message裏面出現的函數調用時目標對象的函數,而不是調用者的函數

Return Message

Return Message

  • 返回消息是一種消息,表示將信息傳遞迴相應的前消息的調用者。

Self Message

Self-Message

  • self message是一種表示同一輩子命線的消息調用的消息(能夠理解爲調用本身的方法)

Recursive Message(遞歸消息)

Recursive Message

  • 遞歸消息是一種表示同一輩子命線的消息調用的消息。 它的目標指向在調用消息的激活之上進行激活。

Create Message

Create Message

  • 建立消息是一種表示(目標)生命線實例化的消息(初始化一個目標對象)

Destroy Message

Destroy Message

銷燬消息是一種消息,表示破壞目標生命線生命週期的請求(銷燬一個目標對象)

Duration Message

Duration Message

持續時間消息顯示消息調用的兩個時間點之間的距離

Note

Note

註釋(註釋)使得可以將各類備註附加到元素。 註釋不帶語義力,但可能包含對建模者有用的信息。

消息和控制焦點

  • 事件是發生事情的交互中的任何一點。
  • Focus of control: also called execution occurrence, an execution occurrence
  • 它在生命線上顯示爲高而薄的矩形
  • 它表示元素執行操做的時間段。 矩形的頂部和底部分別與啓動和完成時間對齊

Message and Focus of Control

序列片斷(Sequence Fragments)

  • UML 2.0引入了序列(或交互)片斷。 序列片斷能夠更輕鬆地建立和維護準確的序列圖
  • 序列片斷表示爲一個框,稱爲組合片斷,它包含序列圖中的一部分相互做用
  • 片斷運算符(在左上角的短號)表示片斷的類型
  • 片斷類型:ref,assert,loop,break,alt,opt,neg

Fragment

Operator Fragment Type
alt 備用多個片斷:只執行條件爲真的片斷
opt 可選:僅當提供的條件爲真時才執行片斷。 至關於只有一條跡線的alt。
par 並行:每一個片斷並行運行
loop 循環:片斷能夠執行屢次,而且防禦指示迭代的基礎
region 關鍵區域:片斷只能有一個線程一次執行它
neg 否認:片斷顯示無效的交互
ref 參考:指在另外一個圖上定義的交互。 繪製框架以覆蓋交互中涉及的生命線。 您能夠定義參數和返回值。
sd 序列圖:用於包圍整個序列圖

能夠組合幀以捕獲例如循環或分支。 組合片斷關鍵字:alt,opt,break,par,seq,strict,neg,critical,ignore,consideration,assert和loop。 約束一般用於顯示消息的時序約束。 它們能夠應用於一條消息的時間或消息之間的間隔。

例子

Combined Fragment example

用例場景建模的序列圖

用戶需求被捕獲爲精簡爲方案的用例。 用例是外部參與者與系統之間交互的集合。 在UML中,用例是:

「系統(或實體)能夠執行的一系列動做(包括變體)的規範,與系統的參與者進行交互。」

場景是經過用例的一個路徑或流程,該用例描述在系統的一個特定執行期間發生的事件序列,其一般由序列圖表示。

Sequence Diagram for Use Case

序列圖 - 代碼前的模型

序列圖可能有點接近代碼級別,那麼爲何不編碼該算法而不是將其繪製爲序列圖?

  • 一個好的序列圖仍然比實際代碼的水平高一點
  • 序列圖是語言中立的
  • 非編碼人員能夠作序列圖
  • 做爲一個團隊,更容易作序列圖
  • 可用於測試和/或UX線框圖

原文連接

What is Sequence Diagram?

相關文章
相關標籤/搜索