產(chǎn)品經(jīng)理進(jìn)階:如何用UML的順序圖表達(dá)思想?
當(dāng)大家把UML建模語言下的各圖形都有所了解后會(huì)發(fā)現(xiàn),通過這些圖可以全面的、立體的從各個(gè)角度表達(dá)產(chǎn)品,讓產(chǎn)品的表達(dá)變得更豐富、更形象。
“手中無劍、心中有劍”,大多數(shù)產(chǎn)品人并不了解計(jì)算機(jī)開發(fā)語言,這導(dǎo)致產(chǎn)品人與技術(shù)人間的交流總是不夠順暢,如果我們能擁有一套與技術(shù)人員溝通的共同語言,在將來的工作中就會(huì)變得更輕松、順暢。今天,要說的就是這門共同語言——UML(統(tǒng)一建模語言),它包括:活動(dòng)圖、順序圖、用例圖、部署圖、類圖、包圖、對(duì)象圖、合作圖、狀態(tài)圖等,每種圖都適用于不同的場(chǎng)景,各有各的適用范圍,綜合起來就是一套全方位、立體化模型,可從不同角度詮釋產(chǎn)品。
順序圖的使用我是在2005年開始的——日本地鐵管理系統(tǒng)。管理系統(tǒng)的特點(diǎn)多是關(guān)系復(fù)雜、嚴(yán)謹(jǐn)性高、流程性強(qiáng),如ERP、OA、CRM等,為了能更好的梳理業(yè)務(wù)關(guān)系和流程,我們就選用了順序圖這一模型圖表來梳理需求。通過順序圖的使用,需求漸漸清晰、明確,每一個(gè)對(duì)象、每一次交互、每一個(gè)流程都被我們從隱藏的角落里拉了出來。當(dāng)遇到不確定的問題再與客戶方溝通了解,并將梳理后的結(jié)果反饋給對(duì)方。因?yàn)槟P偷氖褂米岉?xiàng)目團(tuán)隊(duì)從需求到設(shè)計(jì)過渡的非常順暢,項(xiàng)目也成功完成并上線。
閑話少敘,談一談UML中最重要的模型——順序圖。
細(xì)說順序圖
順序圖也叫序列圖,英文是Sequence[?si:kw?ns],是UML里最重要的建模圖形之一。順序圖描述了用例的實(shí)現(xiàn),它表明了由哪些對(duì)象,通過消息相互協(xié)作來實(shí)現(xiàn)用例的功能,在順序圖中,標(biāo)識(shí)了消息發(fā)生交互的先后順序。
舉個(gè)例子
案例一:去餐廳吃飯
場(chǎng)景:到飯店就餐。就座后服務(wù)員送上菜單,點(diǎn)完餐后等待,廚師做好后服務(wù)人員送餐,飯后付帳離開。
這個(gè)過程用順序圖建模如下:
圖例說明與歸納:
- 顧客與服務(wù)員:這兩個(gè)角色為順序圖的對(duì)象,為二維圖表縱坐標(biāo),橫坐標(biāo)為對(duì)象間的消息交互。
- 進(jìn)店、選菜、就餐、離開:這些是自己向自己發(fā)起的消息,并沒有與服務(wù)員產(chǎn)生關(guān)系,所以箭頭指向自己。
- 要菜單、點(diǎn)餐、付款:顧客向服務(wù)員發(fā)起的消息,消息發(fā)送人為箭頭尾部,接收人為箭頭頭部,線上文字要用動(dòng)賓詞語。
- 送菜單、送餐、找零錢:由箭頭方向表示是由服務(wù)員向顧客發(fā)起的消息,實(shí)體線表示此消息為動(dòng)作。動(dòng)作要用實(shí)體線表示,并用動(dòng)賓詞語。
- 激活框:在顧客與服務(wù)員一側(cè)的長(zhǎng)條矩形,也叫會(huì)話,一個(gè)會(huì)話為一批有關(guān)聯(lián)關(guān)系的消息組,這里把就餐的整個(gè)過程理解為一個(gè)會(huì)話。
順序圖各元素說明:
換一種畫風(fēng),這張圖還可以這樣表達(dá):
如下圖:
從上圖可以看出,這張圖與上張圖有所不同,發(fā)起的消息為實(shí)線,返回的消息為虛線。
圖例說明與歸納:
- 菜單、餐、零錢:虛線表示上一個(gè)動(dòng)作的返回內(nèi)容,動(dòng)作由上一消息發(fā)起。動(dòng)作性消息用實(shí)線表達(dá),線上文用動(dòng)賓詞語;返回結(jié)果用虛線表達(dá),線上文字用名詞詞語。
- 從開發(fā)人員角度分析:如發(fā)起的動(dòng)作性消息有參數(shù)返回,則可根據(jù)此特點(diǎn)創(chuàng)建函數(shù),虛線上的內(nèi)容為此函數(shù)的返回值;如發(fā)起的動(dòng)作性消息不返回參數(shù)則可根據(jù)此特點(diǎn)創(chuàng)建方法,方法可以理解為沒有返回值的函數(shù);從這點(diǎn)可以看出,我們?nèi)绻墚嫼庙樞驁D,對(duì)開發(fā)人員來說是有一定指導(dǎo)意義的。
多對(duì)象間如何進(jìn)行信息傳遞?
再延伸思考,顧客向服務(wù)員下單,服務(wù)員向廚師下單,廚師收到訂單后按單做飯,做完后再把菜給服務(wù)員,服務(wù)員送餐。埋單時(shí)也是一樣,顧客付款后,服務(wù)員將錢給收銀員收款,收銀員將零錢給服務(wù)員,由服務(wù)員給顧客。這就產(chǎn)生了兩個(gè)新的角色,廚師、收銀員,這種關(guān)系應(yīng)該如何表達(dá)呢?這已經(jīng)不是兩個(gè)對(duì)象間的關(guān)系,是多對(duì)象間的關(guān)系問題。
見下圖:
圖示說明與歸納:
- 不論多少個(gè)對(duì)象間產(chǎn)生關(guān)系,消息只能是兩個(gè)對(duì)象間產(chǎn)生。
- 顧客付款給服務(wù)員,服務(wù)員將動(dòng)作順延給收銀員,多對(duì)象間交互信息多是消息及參數(shù)的傳遞。如:收銀員把零錢給服務(wù)員,服務(wù)員把零錢給顧客。
- 一般順序圖的動(dòng)作與返回參數(shù)多是成對(duì)出現(xiàn)的,但也會(huì)有只發(fā)動(dòng)作,對(duì)方不能回應(yīng)的情況。
總結(jié)
順序圖特點(diǎn):
- 順序圖必須是兩個(gè)或兩個(gè)以上對(duì)象間進(jìn)行交互。
- 強(qiáng)調(diào)消息的順序性,生命線的長(zhǎng)度為交互對(duì)象的全部生命周期。
- 順序圖的閱讀是從上到下、從左到右進(jìn)行。
- 順序圖的元素有對(duì)象、生命線、激活框、消息、返回值,還有循環(huán)和分支,但一般不常用,加上這兩個(gè)元素后會(huì)使順序圖的可讀性下降,圖形顯示比較亂,我一般不使用,循環(huán)和分支不是順序圖的強(qiáng)項(xiàng)。
順序圖與活動(dòng)圖的適用場(chǎng)景
- 順序圖對(duì)象間的關(guān)系非常清晰,誰向誰發(fā)起的、誰給誰反饋的。順序圖強(qiáng)調(diào)各對(duì)象間交互;活動(dòng)圖一般不強(qiáng)調(diào)對(duì)象,但也有泳道的概念,泳道的命名也是以對(duì)象命名的,在這點(diǎn)上兩圖有些相似。
- 順序圖強(qiáng)調(diào)的是消息及消息的返回值,而活動(dòng)圖強(qiáng)調(diào)的是流程。
- 順序圖雖然也可以表達(dá)循環(huán)和分支,但可讀性差;循環(huán)和分支性更適合用活動(dòng)圖表示。
- 順序圖更強(qiáng)調(diào)時(shí)間性,動(dòng)作是在會(huì)話下進(jìn)行;活動(dòng)圖不強(qiáng)調(diào)會(huì)話與時(shí)間。
通過上面三個(gè)示例已經(jīng)把順序圖的各元素及畫法表達(dá)清楚了,圖形繪制的顆粒度可以根據(jù)實(shí)際情況自行掌握,繪制系統(tǒng)間信息的交互就不適合畫信息交互細(xì)節(jié)了。以后我還會(huì)把用例圖、類圖、部署圖等圖的畫法整理成文章,分享給大家。當(dāng)大家把UML建模語言下的各圖形都有所了解后會(huì)發(fā)現(xiàn),通過這些圖可以全面的、立體的從各個(gè)角度表達(dá)產(chǎn)品,讓產(chǎn)品的表達(dá)變得更豐富、更形象。
相關(guān)閱讀:
活動(dòng)圖實(shí)例:細(xì)談UML建模語言中的活動(dòng)圖模型
面向?qū)ο蟮乃枷耄寒a(chǎn)品經(jīng)理需要知道的技術(shù)知識(shí)
#專欄作家#
產(chǎn)品人老吳,微信公眾號(hào):ChanPinLaoWu,人人都是產(chǎn)品經(jīng)理專欄作家,產(chǎn)品講學(xué)堂自媒體人,某公司產(chǎn)品總監(jiān)。十多年軟件行業(yè)從業(yè)經(jīng)驗(yàn),做過軟件開發(fā)、項(xiàng)目經(jīng)理、產(chǎn)品經(jīng)理、產(chǎn)品總監(jiān),希望能與大家分享更多產(chǎn)品經(jīng)驗(yàn)和知識(shí)。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
收藏不了。。。
請(qǐng)問,時(shí)序圖中,或的行為如何表示呢
非常有用,感謝!
請(qǐng)問一般用什么工具設(shè)計(jì)呢。
VISIO
學(xué)習(xí)了,謝謝作者分享
UML是必須學(xué)的嗎
非必須,屬于高級(jí)進(jìn)階吧
這個(gè)和業(yè)務(wù)流程圖有些像
從不同的角度出發(fā),側(cè)重的角度不同