快速學習時序圖:時序圖簡介、畫法及實例

11 評論 294367 瀏覽 445 收藏 9 分鐘

時序圖作為常用的UML交互圖,可以直觀的傳達系統(tǒng)內外之間的交互過程,經常用在詳細設計文檔中。下面本文綜合參考了多篇時序圖的教程,根據作者的思路將時序圖做了更深入的講解。

一、?什么是時序圖?

時序圖(Sequence Diagram),亦稱為序列圖、循序圖或順序圖,是一種UML交互圖。它通過描述對象之間發(fā)送消息的時間順序顯示多個對象之間的動態(tài)協(xié)作。

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

二、?時序圖的作用是什么?

1、展示對象之間交互的順序。將交互行為建模為消息傳遞,通過描述消息是如何在對象間發(fā)送和接收的來動態(tài)展示對象之間的交互;

2、相對于其他UML圖,時序圖更強調交互的時間順序;

3、可以直觀的描述并發(fā)進程。

三、?組成元素有哪些?

1.?角色(Actor)

系統(tǒng)角色,可以是人、機器、其他系統(tǒng)、子系統(tǒng);在時序圖中用表示。

2.?對象(Object)

(1)對象的三種命名方式

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

(2)命名方式的選擇

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

(3)對象的排列順序

對象的左右順序并不重要,但是為了作圖清晰整潔,通常應遵循以下兩個原則:把交互頻繁的對象盡可能的靠攏;2.把初始化整個交互活動的對象放置在最左端。

3.?生命線(Lifeline)

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

4.?控制焦點(Focus of Control)

又稱為激活期,表示時間段的符號,在這個時間段內對象將執(zhí)行相應的操作。它可以被理解成C語言語義中一對花括號{ }中的內容;用小矩形表示。

5.?消息(Message)

消息一般分為同步消息(Synchronous Message),異步消息(Asynchronous Message)和返回消息(Return Message)。

  • 消息的發(fā)送者把控制傳遞給消息的接收者,然后停止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義;
  • 消息發(fā)送者通過消息把信號傳遞給消息的接收者,然后繼續(xù)自己的活動,不等待接受者返回消息或者控制。異步消息的接收者和發(fā)送者是并發(fā)工作的。
  • 返回消息表示從過程調用返回。

6.?自關聯(lián)消息

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

7.?組合片段

組合片段用來解決交互執(zhí)行的條件和方式,它允許在序列圖中直接表示邏輯組件,用于通過指定條件或子進程的應用區(qū)域,為任何生命線的任何部分定義特殊條件和子進程。組合片段共有13種,名稱及含義如下:

常用組合片段舉例:

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

(1)抉擇(Alt)

抉擇在任何場合下只發(fā)生一個序列。 可以在每個片段中設置一個臨界來指示該片段可以運行的條件。else 的臨界指示其他任何臨界都不為 True 時應運行的片段。如果所有臨界都為 False 并且沒有 else,則不執(zhí)行任何片段。

(2)選項(Opt)

包含一個可能發(fā)生或不發(fā)生的序列;

(3)循環(huán)(Loop)

片段重復一定次數(shù),可以在臨界中指示片段重復的條件。

(4)并行(Par)

四、?時序圖的繪制工具

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

五、?時序圖的畫法及實例

時序圖的繪制步驟可簡單總結如下:

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

接下來,我們按照上面所講的時序圖的繪制步驟,以學生在教務系統(tǒng)中查詢其課程的成績?yōu)槔瑏碇v解時序圖的繪制方法。

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

所謂劃清邊界,就是要界定好自己所要畫的時序圖的范圍,“學生在教務系統(tǒng)中查詢其課程的成績”就是所要繪制的時序圖的交互內容,不用往上延伸到用戶登錄,也不要往下延伸到下載成績單。

識別交互的語境,即是讀懂所要畫的時序圖的前提和背景。比如本例中,既然學生可以查詢成績,那么該學生肯定已經注冊并認證過其身份,并可選擇其所考試的課程查詢相應成績。

2、梳理角色和對象

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

對象的梳理是一個相對主觀的過程,比如本例中,課程以及成績分別作為了對象存在,也可以合并為數(shù)據庫這一個對象。

請注意:角色以及對象,都為名詞,動詞不可作為角色和對象,如“成績查詢”不可作為對象。

3、添加消息

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

參考資料:

  1. 時序圖-百度百科
  2. UML序列圖總結?http://www.trufun.net/UML/UMLwendang/2016/0115/138.html
  3. UML系列-時序圖?http://www.lupaworld.com/article-233409-1.html
  4. UML建模之時序http://www.cnblogs.com/ywqu/archive/2009/12/22/1629426.html

 

本文由 @那只貓的魚?原創(chuàng)發(fā)布于人人都是產品經理。未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 用什么工具畫上面描述中的時序圖

    來自廣東 回復
  2. 請問如果有多個角色多個系統(tǒng)的時候,多角色如何畫呢?在用戶一列直接添加嗎

    來自浙江 回復
  3. 有時候畫的太復雜怕研發(fā)看不懂??

    來自北京 回復
  4. 數(shù)據層

    回復
  5. 作者,你好,最近我也在學UML,發(fā)現(xiàn)visio只有用例圖,序列圖,類圖,狀態(tài)圖,活動圖,(甘特圖)。但是沒有部署圖,組件圖,協(xié)作圖這3個圖,在想要不要學這3個圖,產品經理工作中用不用得上。冒昧問下您的看法??

    回復
    1. 你好,Rose中有部署圖、組件圖和協(xié)作圖,我在工作過程中,使用過部署圖和協(xié)作圖,沒有使用過組件圖。部署圖主要是為了描述復雜的物理拓撲結構,比如我要做一個在線學習的平臺,這個時候,就要事先考慮好視頻、直播需要流媒體服務器,而PPT、PDF等文本文件需要文件服務器,這個時候用部署圖來描述整個系統(tǒng)架構,就會很清晰。但是如果系統(tǒng)的拓撲結構并不復雜,就不需要畫部署圖了。協(xié)作圖的話,在我看來,就是粗線條的流程圖,在前期需求階段可以幫助理解業(yè)務流程。我不太清楚組件圖的使用,至少目前為止,工作中從未用到過。

      來自河南 回復
    2. 協(xié)作圖描述對象間的協(xié)作關系,協(xié)作圖跟時序圖相似,顯示對象間的動態(tài)合作關系。除顯示信息交換外,協(xié)作圖還顯示對象以及它們之間的關系。如果強調時間和順序,則使用時序圖;如果強調上下級關系,則選擇協(xié)作圖。

      來自河南 回復
    3. 謝謝

      來自廣東 回復
  6. VISIO

    回復
  7. MAC下有啥軟件推薦嗎?

    來自浙江 回復
    1. VISIO和Trufun Plato

      來自河南 回復