時序圖簡述

什麼是時序圖

時序圖(Sequence Diagram),亦稱爲序列圖、循序圖或順序圖,是一種UML交互圖。它經過描述對象之間發送消息的時間順序顯示多個對象之間的動態協做。數據庫

它能夠表示用例的行爲順序,當執行一個用例行爲時,其中的每條消息對應一個類操做或狀態機中引發轉換的觸發事件。併發

時序圖是一個二維圖,橫軸表示對象,縱軸表示時間,消息在各對象之間橫向傳遞,依照時間順序縱向排列。異步

時序圖的做用

  • 展現對象之間的交互順序;將交互行爲建模爲消息傳遞,經過描述消息是如何在對象間發送和接收的來動態展現對象之間的交互;
  • 相對於其餘UML圖,時序圖更強調交互的時間順序;
  • 能夠直觀的描述併發進程

組成元素

1. 角色(Actor)


系統角色,能夠是人、機器、其餘系統、子系統;在時序圖中用 🕴 表示。ide

2. 對象(Object)


對象的三種命名方式

第一種方式包括對象名和類名,例如:直播課時:課時,在時序圖中,用「對象:類」表示; 第二種方式只顯示類名,即表示它是一個匿名對象,例如: :課程;在時序圖中,用「:類」表示; 第三種方式只顯示對象名不顯示類名,例如:講師;在時序圖中,用「對象」表示。工具

命名方式的選擇

三種命名方式都可,哪一種最容易讓閱讀該時序圖的人理解,就選擇哪一種。oop

對象的排列順序

對象的左右順序並不重要,可是爲了做圖清晰整潔,一般應遵循如下兩個原則:ui

  1. 把交互頻繁的對象儘量的靠攏;
  2. 把初始化整個交互活動的對象放置在最左端。

3. 生命線(Lifeline)


在時序圖中表示爲從對象圖標向下延伸的一條虛線,表示對象存在的時間。3d

4. 控制焦點(Focus of Control)


又稱爲激活期,表示時間段的符號,在這個時間段內對象將執行相應的操做。它能夠被理解成C語言語義中一對花括號{ }中的內容;用小矩形表示。cdn

5. 消息(Message)


消息通常分爲同步消息(Synchronous Message),異步消息(Asynchronous Message)和返回消息(Return Message)。對象

  • 消息的發送者把控制傳遞給消息的接收者,而後中止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義;
  • 消息發送者經過消息把信號傳遞給消息的接收者,而後繼續本身的活動,不等待接受者返回消息或者控制。異步消息的接收者和發送者是併發工做的。
  • 返回消息表示從過程調用返回。

6. 自關聯消息


表示方法的自身調用或者一個對象內的一個方法調用另一個方法。

7. 組合片斷


組合片斷用來解決交互執行的條件和方式,它容許在序列圖中直接表示邏輯組件,用於經過指定條件或子進程的應用區域,爲任何生命線的任何部分定義特殊條件和子進程。組合片斷共有13種,名稱及含義以下:

經常使用組合片斷舉例:

用來指明在兩個或更多的消息序列之間的互斥的選擇,至關於經典的if..else..

  1. 抉擇(Alt)

抉擇在任何場合下只發生一個序列。 能夠在每一個片斷中設置一個臨界來指示該片斷能夠運行的條件。else 的臨界指示其餘任何臨界都不爲 True 時應運行的片斷。若是全部臨界都爲 False 而且沒有 else,則不執行任何片斷。

  1. 選項(Opt)

包含一個可能發生或不發生的序列;

  1. 循環(Loop)

片斷重複必定次數,能夠在臨界中指示片斷重複的條件。

  1. 並行(par)

時序圖的繪製工具

時序圖的繪製工具備VISO、Rational Rose、StarUML、Web Sequence Diagrams、Timing Designer、Trufun Plato等,可任選其一。

時序圖的畫法及示例

時序圖的繪製步驟可簡單總結以下:

  1. 劃清邊界,識別交互的語境;
  2. 將所要繪製的交互場景中的角色以及對象梳理出來;
  3. 從觸發整個交互的某個消息開始,在生命線之間從上到下依次畫出全部消息,並註明每一個消息的特性(如參數等)。

接下來,咱們按照上面所講的時序圖的繪製步驟,以學生在教務系統中查詢其課程的成績爲例,來說解時序圖的繪製方法。

1. 劃清邊界,識別交互的語境


所謂劃清邊界,就是要界定好本身所要畫的時序圖的範圍,「學生在教務系統中查詢其課程的成績」就是所要繪製的時序圖的交互內容,不用往上延伸到用戶登陸,也不要往下延伸到下載成績單。

識別交互的語境,便是讀懂所要畫的時序圖的前提和背景。好比本例中,既然學生能夠查詢成績,那麼該學生確定已經註冊並認證過其身份,並可選擇其所考試的課程查詢相應成績。

2. 梳理角色和對象


在本例中,角色有學生,對象有教務系統、課程、成績。

對象的梳理是一個相對主觀的過程,好比本例中,課程以及成績分別做爲了對象存在,也能夠合併爲數據庫這一個對象。

請注意:角色以及對象,都爲名詞,動詞不可做爲角色和對象,如「成績查詢」不可做爲對象。

3. 添加消息


學生的登陸驗證做爲本時序圖的前置行爲,可直接引用到本時序圖中,也可忽略不畫;學生進入成績查詢頁面後,頁面會加載本學生的成績查詢課程列表,並顯示出課程對應的成績;

時序圖繪製技巧

時序圖的繪製技巧:

  1. 從初始消息開始畫,依次畫出隨後消息,並給每一個消息分配序號,方便理解。
  2. 角色和對象用名詞,消息用動詞。
  3. 角色放在時序圖的開始位置,對象重要程度或使用頻率從左到右排列。這就要根據時間的流程考慮了,是一個比較主觀的事情。
  4. 控制焦點兩端要以消息元素封頂,控制焦點不要超過消息元素
相關文章
相關標籤/搜索