時序圖(Sequence Diagram),亦稱爲序列圖、循序圖或順序圖,是一種UML交互圖。它經過描述對象之間發送消息的時間順序顯示多個對象之間的動態協做。數據庫
它能夠表示用例的行爲順序,當執行一個用例行爲時,其中的每條消息對應一個類操做或狀態機中引發轉換的觸發事件。併發
時序圖是一個二維圖,橫軸表示對象,縱軸表示時間,消息在各對象之間橫向傳遞,依照時間順序縱向排列。異步
系統角色,能夠是人、機器、其餘系統、子系統;在時序圖中用 🕴 表示。ide
第一種方式包括對象名和類名,例如:直播課時:課時,在時序圖中,用「對象:類」表示; 第二種方式只顯示類名,即表示它是一個匿名對象,例如: :課程;在時序圖中,用「:類」表示; 第三種方式只顯示對象名不顯示類名,例如:講師;在時序圖中,用「對象」表示。工具
三種命名方式都可,哪一種最容易讓閱讀該時序圖的人理解,就選擇哪一種。oop
對象的左右順序並不重要,可是爲了做圖清晰整潔,一般應遵循如下兩個原則:ui
在時序圖中表示爲從對象圖標向下延伸的一條虛線,表示對象存在的時間。3d
又稱爲激活期,表示時間段的符號,在這個時間段內對象將執行相應的操做。它能夠被理解成C語言語義中一對花括號{ }中的內容;用小矩形表示。cdn
消息通常分爲同步消息(Synchronous Message),異步消息(Asynchronous Message)和返回消息(Return Message)。對象
表示方法的自身調用或者一個對象內的一個方法調用另一個方法。
組合片斷用來解決交互執行的條件和方式,它容許在序列圖中直接表示邏輯組件,用於經過指定條件或子進程的應用區域,爲任何生命線的任何部分定義特殊條件和子進程。組合片斷共有13種,名稱及含義以下:
經常使用組合片斷舉例:
用來指明在兩個或更多的消息序列之間的互斥的選擇,至關於經典的if..else..
抉擇在任何場合下只發生一個序列。 能夠在每一個片斷中設置一個臨界來指示該片斷能夠運行的條件。else 的臨界指示其餘任何臨界都不爲 True 時應運行的片斷。若是全部臨界都爲 False 而且沒有 else,則不執行任何片斷。
包含一個可能發生或不發生的序列;
片斷重複必定次數,能夠在臨界中指示片斷重複的條件。
時序圖的繪製工具備VISO、Rational Rose、StarUML、Web Sequence Diagrams、Timing Designer、Trufun Plato等,可任選其一。
時序圖的繪製步驟可簡單總結以下:
接下來,咱們按照上面所講的時序圖的繪製步驟,以學生在教務系統中查詢其課程的成績爲例,來說解時序圖的繪製方法。
所謂劃清邊界,就是要界定好本身所要畫的時序圖的範圍,「學生在教務系統中查詢其課程的成績」就是所要繪製的時序圖的交互內容,不用往上延伸到用戶登陸,也不要往下延伸到下載成績單。
識別交互的語境,便是讀懂所要畫的時序圖的前提和背景。好比本例中,既然學生能夠查詢成績,那麼該學生確定已經註冊並認證過其身份,並可選擇其所考試的課程查詢相應成績。
在本例中,角色有學生,對象有教務系統、課程、成績。
對象的梳理是一個相對主觀的過程,好比本例中,課程以及成績分別做爲了對象存在,也能夠合併爲數據庫這一個對象。
請注意:角色以及對象,都爲名詞,動詞不可做爲角色和對象,如「成績查詢」不可做爲對象。
學生的登陸驗證做爲本時序圖的前置行爲,可直接引用到本時序圖中,也可忽略不畫;學生進入成績查詢頁面後,頁面會加載本學生的成績查詢課程列表,並顯示出課程對應的成績;
時序圖的繪製技巧: