UML圖 | 時序圖(順序、序列圖)繪製

語言: CN / TW / HK

highlight: a11y-dark theme: v-green


本文已參與「掘力星計劃」,贏取創作大禮包,挑戰創作激勵金。

關於封面: 我想我們要相信永遠都有光,

上一次寫過一篇 UML | 類圖 相關的文章,平時規範開發會用的上,或者是寫什麼文件,就還是需要畫圖,就像畢業設計就是如此。希望能夠幫助到大家。

注:本文中所用畫圖軟體為 Microsoft Visio .

opdown.jpg

一、概述

時序圖更多隻是一種叫法,平常我們所說的順序圖、序列圖也是在稱呼它。

時序圖是基於互動的物件行為建模,是 UML 用於描述物件之間資訊的互動過程的方法,是描述物件間協作關係的模型。

時序圖用於捕獲系統執行中物件之間有時間順序的互動,是由生命線和訊息組成。

時序圖將互動關係表示為一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立物件的類元角色。類元角色用生命線表示。當物件存在時,角色用一條虛線表示,當物件的過程處於啟用狀態時,生命線是一個雙道線。訊息用從一個物件的生命線到另一個物件生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。

二、組成元素

2.1、角色

這個角色可以是使用者、外部系統、機器等等。

在 visio 軟體中用下圖表示:

image-20211017093631479

2.2、物件和生命線

關於物件的命名:

  1. 物件名和類名,例如:dispatcherServlet:DispatcherServlet
  2. 只顯示類名,即表示它是一個匿名物件,例如::DispatcherServlet
  3. 只顯示物件名不顯示類名,例如:dispatcherServlet

生命線:在時序圖中表示為從物件圖示向下延伸的一條虛線,表示物件存在的時間。

image-20211017094415710

2.3、活動條

在生命線的虛線上可以用活動條來表示某種行為的開始和結束,一般用小矩形來表示。

image-20211017095022043

在 visio 軟體上稱之為啟用。

image-20211017095113833

:但是在這裡我需要強調的是在生命線上並非一定要用活動條來表示執行的發生,活動條的加入是的執行發生更形象化,但是在繁多複雜的時序圖中,活動條也會使圖示變得更加複雜難以繪製,這種情況下,傾向於不使用活動條。

2.4、訊息

什麼是訊息?

在面向物件的分析和設計中,物件的行為也被稱為訊息,因為物件之間的行為的互動擢用也可以看成是物件之間傳送訊息實現的。通常,當一個物件呼叫另一個物件中的行為時,即完成了一次訊息傳遞。

時序圖中關注生命線之間的通訊,這些通訊就是物件傳送的訊息。UML用生命線間帶有實心箭頭的實現表示訊息,每條訊息從傳送物件指向接收物件。

例如:

image-20211017100334902

另外訊息中還細分為了簡單訊息、同步訊息和非同步訊息。

簡單訊息:就表示控制如何從一個物件傳送給另一個物件,並不包含控制的細節。

同步訊息:意味著阻塞和等待。如:A向B 傳送一個訊息後,物件A 必須一直等到B執行完成後返回才能繼續往下執行。這就是同步訊息。

非同步訊息:就意味著是非阻塞。如:A向B傳送訊息後,直接可以執行下面程式碼,無需等待B的執行。

同步訊息用實心箭頭表示,非同步訊息用開放式箭頭表示。

image-20211017101342519

自我呼叫訊息:

image-20211017102210926

訊息的返回值:

image-20211017102340839

2.5、互動框

UML在2.0時在時序圖中加入了互動框。互動框用來解決互動執行的條件和方式,它允許在序列圖中直接表示邏輯元件,用於通過指定條件或子程序的應用區域,為任何生命線的任何部分定義特殊條件和子程序。組合片段共有13種,名稱及含義如下:

8BnackesskIT5WYJI6Kf

KkHPoU1dR0AY4sLbzlc5

但是我們只抽取幾個常用的出來說一下,但本質上的用法是一樣的。

2.5.1、alt (選擇片段)

簡單說就是 將 if/else 在圖示中表示出來了。

image-20211017104252428

2.5.2、opt

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

image-20211017104622443

只要當我成績score小於60時,老媽打我這件事情肯定會發生。

大於就不會發生。

2.5.3、Loop (迴圈)

片段重複一定次數,可以在臨界中指示片段重複的條件。

image-20211017104914796

2.5.4、並行(Par)

image-20211017105243776

理論就說到這裡哈,我們來接著說個例子。

三、【例項】

下圖簡述了SpringMVC的執行流程,這次我們的任務就是將它轉換為時序圖來表示。

image-20211017092550564

畫成時序圖如下:

image-20211017111429786

四、自言自語

個人認為畫圖真的很有作用,尤其是關乎我們自己設計什麼東西時,畫出相關圖之後,思路會清晰很多。

如果是剛入門的xdm,我想畫圖比程式碼更能體現思路,寫之前可以畫畫圖,讓自己思路更清晰一些。

如果是程式猿啦,我想畫圖就是個基本操作啦。

今天的文章就到這裡了。

你好,我是博主寧在春主頁

如若在文章中遇到疑惑,請留言或私信,或者加主頁聯絡方式,都會盡快回復。

如若發現文章中存在問題,望你能夠指正,不勝感謝。

如果覺得對你有所幫助的話,來個一鍵三連👍啦,🙇‍xdm

參考:

UML序列圖總結:http://www.trufun.net/UML/UMLwendang/2016/0115/138.html

統一建模語言UML(第二版)清華大學出版社