講案例談體會(huì),教你3步畫好時(shí)序圖
編輯導(dǎo)語(yǔ):時(shí)序圖可以有效地描述交互順序,并幫助研發(fā)團(tuán)隊(duì)更清晰地理順系統(tǒng)邏輯,做好流程分析,若利用得當(dāng),則可以一定程度上降低溝通成本,更快速地推進(jìn)業(yè)務(wù)進(jìn)行。本篇文章里,作者就時(shí)序圖的構(gòu)成與畫法等方面做了總結(jié),一起來(lái)看一下。
上次介紹了活動(dòng)圖,這次分享 UML 中,另一種流程分析利器——時(shí)序圖。
以前每次要分析流程,我都會(huì)用活動(dòng)圖。直到有一次,我面對(duì)一個(gè)業(yè)務(wù)流程,畫活動(dòng)圖,畫來(lái)畫去,總覺(jué)得哪里不對(duì),但又表達(dá)不出來(lái),感覺(jué)如鯁在喉。
后來(lái),我想起時(shí)序圖,用時(shí)序圖把流程梳理了一遍,豁然開(kāi)朗。
原來(lái),用不同的視圖去描述同一個(gè)流程,能讓我們看到自己未曾發(fā)現(xiàn)的問(wèn)題。就像看足球比賽,在多個(gè)不同位置的攝像鏡頭下,能看到球員更全面的表現(xiàn)。
此后,我用時(shí)序圖甚至比活動(dòng)圖還多。
那么,它有啥特別之處,居然能替代活動(dòng)圖來(lái)分析流程?我們一起來(lái)看看。
一、解讀時(shí)序圖
時(shí)序圖,也叫序列圖、順序圖,是 UML 中常用的動(dòng)態(tài)視圖,用于描述多個(gè)對(duì)象參與實(shí)現(xiàn)業(yè)務(wù)目標(biāo)時(shí),彼此之間按時(shí)間順序進(jìn)行交互的過(guò)程。
時(shí)序圖,用來(lái)表達(dá)對(duì)象或角色之間交互的信息傳遞和時(shí)間順序,特別方便。
每次梳理流程,跟開(kāi)發(fā)溝通,我都會(huì)借助它來(lái)描述。
繪制時(shí)序圖,將一個(gè)個(gè)對(duì)象和其交互動(dòng)作列出來(lái),可以直觀反映出,每個(gè)對(duì)象對(duì)其他對(duì)象、或其自身做的交互動(dòng)作,讓我們看到業(yè)務(wù)內(nèi)部的運(yùn)作、系統(tǒng)之間的互動(dòng),從而搞清楚業(yè)務(wù)規(guī)則、系統(tǒng)邏輯。
在《火球:UML 大戰(zhàn)需求分析》一書中,作者總結(jié)特別好:“任何復(fù)雜的交互,都可以分解為自己與自己、自己與別人、別人與別人的多個(gè)簡(jiǎn)單交互”。
時(shí)序圖正體現(xiàn)了這種邏輯,所以,它表達(dá)交互邏輯時(shí),非常清晰簡(jiǎn)單。
客戶用 ATM 取款的時(shí)序圖
作為產(chǎn)品經(jīng)理,如果我們能掌握這一利器,用來(lái)分析業(yè)務(wù)、定義需求,與開(kāi)發(fā)溝通,定能大大提高效率。
時(shí)序圖常見(jiàn)的應(yīng)用場(chǎng)景,是在支付領(lǐng)域。例如,微信支付的開(kāi)發(fā)者文檔,就用時(shí)序圖來(lái)表達(dá)支付的實(shí)現(xiàn)邏輯。
這么好的工具,趕緊學(xué)一下吧。
二、時(shí)序圖的構(gòu)成
時(shí)序圖的常用元素很簡(jiǎn)單,分別有:對(duì)象(角色)、生命線、會(huì)話、消息(簡(jiǎn)單消息、返回消息)。
時(shí)序圖的常用元素
1. 對(duì)象
對(duì)象,指與業(yè)務(wù)、產(chǎn)品或系統(tǒng)相關(guān)的人、事、物,可以是人、部門、系統(tǒng)等。
通常用矩形表示,畫在時(shí)序圖的頂部,對(duì)象名寫在矩形內(nèi)。
其中,參與交互過(guò)程的人,如用例圖的參與者、參與完成業(yè)務(wù)目標(biāo)的相關(guān)人員,通常稱之為角色。
網(wǎng)上有的會(huì)把對(duì)象和角色分開(kāi)來(lái),我理解這些都是對(duì)象。只不過(guò),在圖形上,角色與用例圖的參與者一樣,用火柴人表示,比較好理解。
因?yàn)椋琔ML 是在面向?qū)ο笏枷氲闹笇?dǎo)下,來(lái)描述軟件產(chǎn)品的分析與設(shè)計(jì)。面向?qū)ο螅瑒t將現(xiàn)實(shí)世界的人事物,看成一個(gè)個(gè)獨(dú)立的個(gè)體,稱之為「 對(duì)象 」。
它們又可以根據(jù)不同的需要,以不同的角度,被歸納在一起,這就是開(kāi)發(fā)人員常說(shuō)的「 類 」。
比如,西瓜、蘋果、梨是不同的對(duì)象,它們可以歸為一類——水果;蘋果手機(jī)、華為手機(jī)、小米手機(jī),可以歸為手機(jī)。
對(duì)象的命名,一般格式為:對(duì)象名:類名,如「 李四:客戶 」。
按照語(yǔ)法,冒號(hào)和類名是必需的,對(duì)象名是可選的。具體地說(shuō),「 李四:客戶 」表示李四是客戶的實(shí)例,即具體到某個(gè)客戶的名字。
實(shí)踐中,并不需要具體到實(shí)例,對(duì)象名可以不寫。我的做法是,直接寫一類對(duì)象的名稱,如某某系統(tǒng)、某某部門。
2. 生命線
每個(gè)對(duì)象下有一條垂直的虛線,這就是對(duì)象的生命線,從上往下,代表時(shí)間的先后順序。
3. 會(huì)話
會(huì)話,也叫激活框,它代表在對(duì)象生命線上某個(gè)階段執(zhí)行的操作,以一個(gè)偏窄的矩形表示。
每一次會(huì)話,表示一次相對(duì)完整的交互過(guò)程。不過(guò),怎樣算一次會(huì)話,實(shí)踐中有點(diǎn)難區(qū)分,需要多練習(xí)體會(huì)。
我常按照操作的完整度來(lái)畫,有時(shí)甚至不畫,有些專業(yè)的 UML 工具還能自動(dòng)生成會(huì)話。
4. 消息
消息,表示對(duì)象之間發(fā)送的信息或做的事情。消息,有的分為三種:同步消息、異步消息、返回消息。
從產(chǎn)品層面,并不需要規(guī)定技術(shù)的實(shí)現(xiàn)方式,是同步還是異步,這交給開(kāi)發(fā)人員設(shè)計(jì),會(huì)更為合理。
因此,我基本只用兩種消息來(lái)表達(dá):簡(jiǎn)單消息、返回消息。
1)簡(jiǎn)單消息
簡(jiǎn)單消息,用箭頭實(shí)線,表示一個(gè)對(duì)象,向另一個(gè)對(duì)象發(fā)的信息,或做的事情。它不強(qiáng)調(diào)消息的類型,只表示交互,足以滿足大部分情況。
2)返回消息
返回消息,用箭頭虛線,表示一個(gè)對(duì)象,收到另一個(gè)對(duì)象的信息后,再向其返回的信息,或做的事情。
消息線上方的文字,則是注明傳遞的消息或執(zhí)行的動(dòng)作,一般用動(dòng)賓短語(yǔ)。
這些對(duì)象間的交互消息,畫在兩個(gè)對(duì)象的生命線之間。對(duì)象自身做的事情,則畫在自己的生命線上。
5. 組合框
現(xiàn)實(shí)業(yè)務(wù)、系統(tǒng)流程中,總會(huì)有特殊情況,不可能完全按時(shí)間順序、一條線走完。
這時(shí),就需要用到組合框(frame)來(lái)表示常見(jiàn)的特殊情況,如分支、循環(huán)、并行等。
遇到這些特殊情況時(shí),就可以把相應(yīng)的交互流程放入這個(gè)框中。
時(shí)序圖三種常用的特殊結(jié)構(gòu)
三、時(shí)序圖的畫法
下面,還是以之前的 「 手機(jī)話費(fèi)充值 APP 」 為例(案例詳見(jiàn)《用例圖這樣畫,3步讓你做需求分析有理有據(jù)》),來(lái)了解時(shí)序圖如何用。
常用的畫圖工具,有 Visio、ProcessOn ,現(xiàn)在很多在線文檔也支持 UML ,如騰訊文檔、飛書云文檔。
時(shí)序圖的畫法也很簡(jiǎn)單,一句話就能說(shuō)完,可是要靈活掌握,還得多加練習(xí)。
首先,選定要展開(kāi)分析的用例或目標(biāo);接著,分析都有哪些對(duì)象、角色參與了實(shí)現(xiàn)過(guò)程;然后,將它們?cè)趯?shí)現(xiàn)目標(biāo)過(guò)程中,彼此之間的交互動(dòng)作,按照時(shí)間軸的順序列出來(lái)。
再簡(jiǎn)單點(diǎn),就是定目標(biāo)、找對(duì)象、列消息三步走。
1. 定目標(biāo)
畫時(shí)序圖,與活動(dòng)圖一樣,要指定某個(gè)用例,或目標(biāo)展開(kāi)。這些動(dòng)態(tài)視圖,是用來(lái)描述在靜態(tài)視圖(如用例圖)定義的結(jié)構(gòu)下對(duì)象的行為。
本質(zhì)上,它們都是在描述誰(shuí)如何參與完成業(yè)務(wù)目標(biāo)。
明確了用例或目標(biāo),才能保證繪制的流程,邊界清晰,過(guò)程完整,不會(huì)越畫越亂。
比如,我們用時(shí)序圖來(lái)分析案例中「 充值話費(fèi) 」用例的實(shí)現(xiàn)過(guò)程。這時(shí),就別把「 支付金額 」用例的交互也畫進(jìn)去,把它們畫在一起,會(huì)增加閱讀難度,不利于溝通表達(dá)。
案例中「 充值 APP」 的系統(tǒng)用例圖
2. 找對(duì)象
之前的文章已經(jīng)分析出,案例中,充值得有手機(jī)運(yùn)營(yíng)商支持;支付得對(duì)接微信支付、支付寶;協(xié)助用戶處理未到賬,還需要有運(yùn)營(yíng)人員介入。
整個(gè)充值 APP ,還應(yīng)包括管理后臺(tái)系統(tǒng) ,才能完成相關(guān)的管理操作。
因此,先將它們列出來(lái),每一豎列,表示一個(gè)對(duì)象或角色,每個(gè)對(duì)象有一條生命線。
為方便閱讀,可將流程中最先發(fā)起消息的對(duì)象放在最左邊;再將交互多的對(duì)象擺在附近,別隔太多對(duì)象,這樣畫出來(lái)的圖會(huì)更清晰簡(jiǎn)潔。
3. 列消息
找到了對(duì)象,就可以列出對(duì)象間的交互消息。為了方便你回顧 「 充值話費(fèi) 」用例的實(shí)現(xiàn)過(guò)程,咱們先上之前已經(jīng)得出的活動(dòng)圖。
充值 APP 「 充值話費(fèi) 」用例活動(dòng)圖
工作中,我們把流程弄明白后,就可以邊理邊畫,將對(duì)象間的交互,從最先發(fā)起的消息,一個(gè)個(gè)從上往下依次列出。
有些消息有帶參數(shù)的,可以在描述文字后注明。如下圖的第 7 步,充值 APP 生成并提交訂單至管理后臺(tái),可以在括號(hào)里寫上訂單有哪些字段信息(如訂單號(hào)、手機(jī)號(hào)碼、購(gòu)買時(shí)間等)。
充值 APP 「 充值話費(fèi) 」用例對(duì)象交互時(shí)序圖
在 UML 中,時(shí)序圖的消息是沒(méi)有序號(hào)的。使用中,我發(fā)現(xiàn)為每個(gè)消息加上序號(hào),比較方便描述與閱讀,一直習(xí)慣這么用。
「 充值話費(fèi) 」用例的流程中,剛好有一個(gè)并行流程,即上圖的第 16 至 20 步。
管理后臺(tái)在返回支付結(jié)果時(shí),還需同步向手機(jī)運(yùn)營(yíng)商發(fā)起充值請(qǐng)求,這是常見(jiàn)的并行流程。
因此,將其畫在組合框中,表示這里面上下兩部分交互是同時(shí)進(jìn)行的,不分先后。
從這里不難看出,分支一多,時(shí)序圖會(huì)比較難畫,也不好理解。
確實(shí),時(shí)序圖不太適合表達(dá)多分支的復(fù)雜流程。因此,我們用時(shí)序圖更多是描述主干流程,復(fù)雜的分支可單獨(dú)抽取出來(lái)畫,也可以用文字說(shuō)明。
4. 經(jīng)驗(yàn)之談
看到上面的泳道活動(dòng)圖和時(shí)序圖,你可能會(huì)想,它們倆還挺像的,工作中究竟用哪個(gè)呢?
它們都用于描述不同對(duì)象之間的動(dòng)作。不過(guò),泳道活動(dòng)圖,更側(cè)重于表達(dá)誰(shuí)做了什么事;而時(shí)序圖,除了強(qiáng)調(diào)流程中交互的消息和順序,還表達(dá)誰(shuí)對(duì)誰(shuí)做了什么事。
我的體會(huì)是,遇到強(qiáng)調(diào)消息傳遞、時(shí)間順序的,用時(shí)序圖;遇到流程比較復(fù)雜、分支比較多的,用活動(dòng)圖。
還可以多嘗試兩種都畫,通過(guò)不同視角來(lái)觀察同一個(gè)流程,會(huì)讓我們的理解更加全面、深刻。
實(shí)踐中,時(shí)序圖,常用于表達(dá)系統(tǒng)的接口請(qǐng)求與反饋消息,更偏向技術(shù)實(shí)現(xiàn)。
作為產(chǎn)品經(jīng)理,我們可以從產(chǎn)品視角、操作層面,用它來(lái)表達(dá)業(yè)務(wù)流程、產(chǎn)品流程。
這樣,開(kāi)發(fā)人員也很好理解,便于他們進(jìn)行系統(tǒng)設(shè)計(jì)。
四、總結(jié)
信息量還是不少,我給你總結(jié)下。
時(shí)序圖,用來(lái)描述多個(gè)對(duì)象參與實(shí)現(xiàn)業(yè)務(wù)目標(biāo)時(shí),彼此之間按時(shí)間順序進(jìn)行交互的過(guò)程。常見(jiàn)的應(yīng)用場(chǎng)景,是在支付領(lǐng)域。
用好時(shí)序圖,能幫我們,搞清楚業(yè)務(wù)規(guī)則、系統(tǒng)邏輯,提高工作效率。
1. 畫時(shí)序圖的方法
- 定目標(biāo),指定用例或業(yè)務(wù)目標(biāo)展開(kāi)分析;
- 找對(duì)象,找出參與實(shí)現(xiàn)目標(biāo)的對(duì)象/角色;
- 列消息,按時(shí)間順序列出對(duì)象的交互消息。
2. 畫時(shí)序圖的經(jīng)驗(yàn)
- 給交互消息加序號(hào),方便閱讀溝通;
- 觸發(fā)交互的對(duì)象畫在最左,交互頻繁的走近些;
- 同一個(gè)流程,畫不同視圖,理解更全面、深刻。
時(shí)序圖,是我分析流程的最愛(ài),有段時(shí)間我經(jīng)常用它,突然靈感閃現(xiàn),發(fā)現(xiàn)了它的高階玩法,與數(shù)據(jù)分析結(jié)合(感興趣可看下方的系列文章)。
多加練習(xí)吧,相信它也會(huì)是你的好幫手!
UML 需求分析系列文章:
- 做產(chǎn)品,為什么要畫這些圖?
- 用例圖這樣畫,3步讓你做需求分析有理有據(jù)
- 手把手教你畫活動(dòng)圖,再無(wú)難搞的流程分析
- B端數(shù)據(jù)分析玩法,巧用時(shí)序圖定埋點(diǎn),訂單時(shí)長(zhǎng)看系統(tǒng)性能
作者:四月;公眾號(hào):四月喃嘩
本文由 @四月 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
非常有用,請(qǐng)問(wèn)用什么畫呢
我用飛書文檔畫的,visio也可以畫
Mac 下有什么好用的軟件嗎?
Mac下我用在線的,processon或飛書文檔里面的都挺好用的
非常有用,感謝作者