tft每日頭條

 > 生活

 > 如何做一個完整的時序圖

如何做一個完整的時序圖

生活 更新时间:2024-09-03 18:15:59

編輯導語:時序圖可以有效地描述交互順序,并幫助研發團隊更清晰地理順系統邏輯,做好流程分析,若利用得當,則可以一定程度上降低溝通成本,更快速地推進業務進行。本篇文章裡,作者就時序圖的構成與畫法等方面做了總結,一起來看一下。

如何做一個完整的時序圖(教你3步畫好時序圖)1

上次介紹了活動圖,這次分享 UML 中,另一種流程分析利器——時序圖。

以前每次要分析流程,我都會用活動圖。直到有一次,我面對一個業務流程,畫活動圖,畫來畫去,總覺得哪裡不對,但又表達不出來,感覺如鲠在喉。

後來,我想起時序圖,用時序圖把流程梳理了一遍,豁然開朗。

原來,用不同的視圖去描述同一個流程,能讓我們看到自己未曾發現的問題。就像看足球比賽,在多個不同位置的攝像鏡頭下,能看到球員更全面的表現。

此後,我用時序圖甚至比活動圖還多。

那麼,它有啥特别之處,居然能替代活動圖來分析流程?我們一起來看看。

一、解讀時序圖

時序圖,也叫序列圖、順序圖,是 UML 中常用的動态視圖,用于描述多個對象參與實現業務目标時,彼此之間按時間順序進行交互的過程。

時序圖,用來表達對象或角色之間交互的信息傳遞和時間順序,特别方便。

每次梳理流程,跟開發溝通,我都會借助它來描述。

繪制時序圖,将一個個對象和其交互動作列出來,可以直觀反映出,每個對象對其他對象、或其自身做的交互動作,讓我們看到業務内部的運作、系統之間的互動,從而搞清楚業務規則、系統邏輯。

在《火球:UML 大戰需求分析》一書中,作者總結特别好:“任何複雜的交互,都可以分解為自己與自己自己與别人别人與别人的多個簡單交互”。

時序圖正體現了這種邏輯,所以,它表達交互邏輯時,非常清晰簡單。

如何做一個完整的時序圖(教你3步畫好時序圖)2

客戶用 ATM 取款的時序圖

作為産品經理,如果我們能掌握這一利器,用來分析業務、定義需求,與開發溝通,定能大大提高效率。

時序圖常見的應用場景,是在支付領域。例如,微信支付的開發者文檔,就用時序圖來表達支付的實現邏輯。

這麼好的工具,趕緊學一下吧。

二、時序圖的構成

時序圖的常用元素很簡單,分别有:對象(角色)、生命線、會話、消息(簡單消息、返回消息)。

如何做一個完整的時序圖(教你3步畫好時序圖)3

時序圖的常用元素

1. 對象

對象,指與業務、産品或系統相關的人、事、物,可以是人、部門、系統等。

通常用矩形表示,畫在時序圖的頂部,對象名寫在矩形内。

其中,參與交互過程的人,如用例圖的參與者、參與完成業務目标的相關人員,通常稱之為角色

網上有的會把對象和角色分開來,我理解這些都是對象。隻不過,在圖形上,角色與用例圖的參與者一樣,用火柴人表示,比較好理解。

因為,UML 是在面向對象思想的指導下,來描述軟件産品的分析與設計。面向對象,則将現實世界的人事物,看成一個個獨立的個體,稱之為「 對象 」

它們又可以根據不同的需要,以不同的角度,被歸納在一起,這就是開發人員常說的「 類 」

比如,西瓜、蘋果、梨是不同的對象,它們可以歸為一類——水果;蘋果手機、華為手機、小米手機,可以歸為手機。

對象的命名,一般格式為:對象名:類名,如「 李四:客戶 」。

按照語法,冒号和類名是必需的,對象名是可選的。具體地說,「 李四:客戶 」表示李四是客戶的實例,即具體到某個客戶的名字。

實踐中,并不需要具體到實例,對象名可以不寫。我的做法是,直接寫一類對象的名稱,如某某系統、某某部門。

2. 生命線

每個對象下有一條垂直的虛線,這就是對象的生命線,從上往下,代表時間的先後順序。

3. 會話

會話,也叫激活框,它代表在對象生命線上某個階段執行的操作,以一個偏窄的矩形表示。

每一次會話,表示一次相對完整的交互過程。不過,怎樣算一次會話,實踐中有點難區分,需要多練習體會。

我常按照操作的完整度來畫,有時甚至不畫,有些專業的 UML 工具還能自動生成會話。

4. 消息

消息,表示對象之間發送的信息或做的事情。消息,有的分為三種:同步消息、異步消息、返回消息。

從産品層面,并不需要規定技術的實現方式,是同步還是異步,這交給開發人員設計,會更為合理。

因此,我基本隻用兩種消息來表達:簡單消息、返回消息

1)簡單消息

簡單消息,用箭頭實線,表示一個對象,向另一個對象發的信息,或做的事情。它不強調消息的類型,隻表示交互,足以滿足大部分情況。

2)返回消息

返回消息,用箭頭虛線,表示一個對象,收到另一個對象的信息後,再向其返回的信息,或做的事情。

消息線上方的文字,則是注明傳遞的消息或執行的動作,一般用動賓短語

這些對象間的交互消息,畫在兩個對象的生命線之間。對象自身做的事情,則畫在自己的生命線上。

5. 組合框

現實業務、系統流程中,總會有特殊情況,不可能完全按時間順序、一條線走完。

這時,就需要用到組合框(frame)來表示常見的特殊情況,如分支、循環、并行等。

遇到這些特殊情況時,就可以把相應的交互流程放入這個框中。

如何做一個完整的時序圖(教你3步畫好時序圖)4

時序圖三種常用的特殊結構

三、時序圖的畫法

下面,還是以之前的 「 手機話費充值 APP 」 為例(案例詳見《用例圖這樣畫,3步讓你做需求分析有理有據》),來了解時序圖如何用。

常用的畫圖工具,有 Visio、ProcessOn ,現在很多在線文檔也支持 UML ,如騰訊文檔、飛書雲文檔。

時序圖的畫法也很簡單,一句話就能說完,可是要靈活掌握,還得多加練習。

首先,選定要展開分析的用例或目标;接着,分析都有哪些對象、角色參與了實現過程;然後,将它們在實現目标過程中,彼此之間的交互動作,按照時間軸的順序列出來。

再簡單點,就是定目标、找對象、列消息三步走。

1. 定目标

畫時序圖,與活動圖一樣,要指定某個用例,或目标展開。這些動态視圖,是用來描述在靜态視圖(如用例圖)定義的結構下對象的行為。

本質上,它們都是在描述誰如何參與完成業務目标。

明确了用例或目标,才能保證繪制的流程,邊界清晰,過程完整,不會越畫越亂。

比如,我們用時序圖來分析案例中「 充值話費 」用例的實現過程。這時,就别把「 支付金額 」用例的交互也畫進去,把它們畫在一起,會增加閱讀難度,不利于溝通表達。

如何做一個完整的時序圖(教你3步畫好時序圖)5

案例中「 充值 APP」 的系統用例圖

2. 找對象

之前的文章已經分析出,案例中,充值得有手機運營商支持;支付得對接微信支付、支付寶;協助用戶處理未到賬,還需要有運營人員介入。

整個充值 APP ,還應包括管理後台系統 ,才能完成相關的管理操作。

因此,先将它們列出來,每一豎列,表示一個對象或角色,每個對象有一條生命線。

為方便閱讀,可将流程中最先發起消息的對象放在最左邊;再将交互多的對象擺在附近,别隔太多對象,這樣畫出來的圖會更清晰簡潔。

3. 列消息

找到了對象,就可以列出對象間的交互消息。為了方便你回顧 「 充值話費 」用例的實現過程,咱們先上之前已經得出的活動圖。

如何做一個完整的時序圖(教你3步畫好時序圖)6

充值 APP 「 充值話費 」用例活動圖

工作中,我們把流程弄明白後,就可以邊理邊畫,将對象間的交互,從最先發起的消息,一個個從上往下依次列出。

有些消息有帶參數的,可以在描述文字後注明。如下圖的第 7 步,充值 APP 生成并提交訂單至管理後台,可以在括号裡寫上訂單有哪些字段信息(如訂單号、手機号碼、購買時間等)。

如何做一個完整的時序圖(教你3步畫好時序圖)7

充值 APP 「 充值話費 」用例對象交互時序圖

在 UML 中,時序圖的消息是沒有序号的。使用中,我發現為每個消息加上序号,比較方便描述與閱讀,一直習慣這麼用。

「 充值話費 」用例的流程中,剛好有一個并行流程,即上圖的第 16 至 20 步。

管理後台在返回支付結果時,還需同步向手機運營商發起充值請求,這是常見的并行流程。

因此,将其畫在組合框中,表示這裡面上下兩部分交互是同時進行的,不分先後。

從這裡不難看出,分支一多,時序圖會比較難畫,也不好理解。

确實,時序圖不太适合表達多分支的複雜流程。因此,我們用時序圖更多是描述主幹流程,複雜的分支可單獨抽取出來畫,也可以用文字說明。

4. 經驗之談

看到上面的泳道活動圖和時序圖,你可能會想,它們倆還挺像的,工作中究竟用哪個呢?

它們都用于描述不同對象之間的動作。不過,泳道活動圖,更側重于表達誰做了什麼事;而時序圖,除了強調流程中交互的消息和順序,還表達誰對誰做了什麼事。

我的體會是,遇到強調消息傳遞、時間順序的,用時序圖;遇到流程比較複雜、分支比較多的,用活動圖。

還可以多嘗試兩種都畫,通過不同視角來觀察同一個流程,會讓我們的理解更加全面、深刻。

實踐中,時序圖,常用于表達系統的接口請求與反饋消息,更偏向技術實現。

作為産品經理,我們可以從産品視角、操作層面,用它來表達業務流程、産品流程。

這樣,開發人員也很好理解,便于他們進行系統設計。

四、總結

信息量還是不少,我給你總結下。

時序圖,用來描述多個對象參與實現業務目标時,彼此之間按時間順序進行交互的過程。常見的應用場景,是在支付領域。

用好時序圖,能幫我們,搞清楚業務規則、系統邏輯,提高工作效率。

1. 畫時序圖的方法

  1. 定目标,指定用例或業務目标展開分析;
  2. 找對象,找出參與實現目标的對象/角色;
  3. 列消息,按時間順序列出對象的交互消息。

2. 畫時序圖的經驗

  • 給交互消息加序号,方便閱讀溝通;
  • 觸發交互的對象畫在最左,交互頻繁的走近些;
  • 同一個流程,畫不同視圖,理解更全面、深刻。

時序圖,是我分析流程的最愛,有段時間我經常用它,突然靈感閃現,發現了它的高階玩法,與數據分析結合(感興趣可看下方的系列文章)。

多加練習吧,相信它也會是你的好幫手!

UML 需求分析系列文章:

作者:四月;公衆号:四月喃嘩

本文由 @四月 原創發布于人人都是産品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved