一文解決產(chǎn)品經(jīng)理對(duì)UML的全部疑問(wèn)
編輯導(dǎo)語(yǔ):UML的目標(biāo)是以面向?qū)ο髨D的方式來(lái)描述任何類型的系統(tǒng),具有很寬的應(yīng)用領(lǐng)域;產(chǎn)品經(jīng)理在日常工作中也需要掌握一點(diǎn)UML的知識(shí),可以對(duì)一個(gè)事物有多角度的認(rèn)知;本文作者分享了關(guān)于UML的詳細(xì)分析以及問(wèn)題解答,我們一起來(lái)看一下。
第一次接觸UML(Unified Modeling Language統(tǒng)一建模語(yǔ)言)是在2年前,當(dāng)時(shí)正在學(xué)項(xiàng)目管理,當(dāng)書中講到系統(tǒng)設(shè)計(jì)階段時(shí),作者引入了UML的相關(guān)內(nèi)容;但是2年過(guò)去了,筆者對(duì)UML的印象也就只停留在概念和樣式上,并沒(méi)有進(jìn)行實(shí)操理解。
統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)是一種為面向?qū)ο笙到y(tǒng)的產(chǎn)品進(jìn)行說(shuō)明、可視化和編制文檔的一種標(biāo)準(zhǔn)語(yǔ)言,是非專利的第三代建模和規(guī)約語(yǔ)言。
UML是面向?qū)ο笤O(shè)計(jì)的建模工具,獨(dú)立于任何具體程序設(shè)計(jì)語(yǔ)言。
在這2年期間,在筆者PRD中出現(xiàn)頻率最多的就是流程圖(+泳道)以及狀態(tài)機(jī)圖,對(duì)這些圖的使用和理解都是憑直覺和經(jīng)驗(yàn),并沒(méi)有過(guò)多去深挖他們的區(qū)別和原理,也沒(méi)有想過(guò)是否還有其他能夠更好表述自己思想的圖。
巧合的是,在最近正在上的產(chǎn)品訓(xùn)練營(yíng)課中,再次聽到主講老師講到了他使用UML來(lái)向工程師描述需求的案例,同時(shí)課堂中的一些引導(dǎo)和實(shí)操也讓我對(duì)「系統(tǒng)了解和學(xué)習(xí)UML」產(chǎn)生了好奇心。
于是,在經(jīng)過(guò)學(xué)習(xí)后筆者整理輸出了下面4個(gè)產(chǎn)品經(jīng)理對(duì)UML最關(guān)注的4個(gè)問(wèn)題:
- 產(chǎn)品經(jīng)理是否有必要學(xué)習(xí)UML?
- 如何學(xué)習(xí)UML?
- 如何選擇哪種圖來(lái)表達(dá)?
- 如何把控畫圖的粒度?
話不多說(shuō),下面將就上述4個(gè)問(wèn)題進(jìn)行一一解答。
一、產(chǎn)品經(jīng)理是否有必要學(xué)習(xí)UML?
答案是肯定的,但是沒(méi)有必要全學(xué)。
UML,表面上是一種以圖來(lái)展示的語(yǔ)言,但其本質(zhì)是一種看待事物的思想和角度。通過(guò)UML,我們能夠擁有一個(gè)抓手,快速去挖掘到事物背后的屬性、特征和行為。
舉個(gè)例子,當(dāng)你要向公司請(qǐng)假時(shí),需要先向leader溝通審批;leader同意后,再將請(qǐng)假條拿給HR存檔;財(cái)務(wù)則要在核對(duì)上班和請(qǐng)假天數(shù)后計(jì)算出你的當(dāng)月最終工資。
這件事涉及到了時(shí)間、請(qǐng)假、4個(gè)崗位部門的人、請(qǐng)假條、薪資等多個(gè)角度的內(nèi)容,其中有人、有物、有事,怎樣才能有一個(gè)抓手讓我們快速去捋清楚這件事的全貌和特征呢?
我們最慣用的就是流程圖,而流程圖就正和UML中的活動(dòng)圖不謀而合,通過(guò)時(shí)間的先后順序去捋清楚事件(活動(dòng))的時(shí)間線及邏輯,這是我們最常慣用的一種角度;
但是,在這種角度下,如果我想快速了解請(qǐng)假這整件事的當(dāng)前狀態(tài)和狀態(tài)之間的變換方式時(shí),就需要依賴UML中的狀態(tài)機(jī)圖,這樣我們就能快速了解做哪些事可以發(fā)起請(qǐng)假、哪些事會(huì)被leader拒絕等。
由UML中的活動(dòng)圖和狀態(tài)機(jī)圖舉例來(lái)看,UML能夠賦予我們看待事物的不同角度,幫助我們快速找到問(wèn)題和事物的本質(zhì)??吹竭@里,是不是就和我們進(jìn)行需求分析的目標(biāo)有共同之處了?
因此,個(gè)人是比較推薦產(chǎn)品經(jīng)理去學(xué)習(xí)一下UML的,我們不僅可以用UML對(duì)事物的本質(zhì)進(jìn)行更多視角的解讀,也可以借用它在我們和工程師之間搭建一座溝通的橋梁,更好地向工程師表達(dá)和闡述我們的產(chǎn)品和思想。
二、如何學(xué)習(xí)UML?
UML總共有十多種圖,包含類圖、活動(dòng)圖、狀態(tài)機(jī)圖、順序圖、用例圖、部署圖、構(gòu)建圖、包圖、時(shí)序圖、交互概覽圖、組合結(jié)構(gòu)圖。
我們是不是要全部掌握呢?
當(dāng)然不是!作為一般的業(yè)務(wù)型產(chǎn)品經(jīng)理,只需要掌握類圖、活動(dòng)圖、狀態(tài)機(jī)圖、順序圖和用例圖即可;這5種圖能夠幫助我們更好地進(jìn)行問(wèn)題解構(gòu)和需求分析,也是沒(méi)有技術(shù)背景的產(chǎn)品經(jīng)理很好掌握的5種圖。
一般我們會(huì)把UML圖分為結(jié)構(gòu)型圖和行為型圖2種。結(jié)構(gòu)型圖描述的是事物及事物之間的結(jié)構(gòu),這個(gè)結(jié)構(gòu)在某段時(shí)間內(nèi)應(yīng)該是穩(wěn)定的、靜態(tài)的;而行為圖則描述的是事物的行為,是動(dòng)態(tài)的。
在這5種圖中,類圖是其中唯一的一種靜態(tài)結(jié)構(gòu)型圖,其余4種都是行為型圖。
下面我們逐一來(lái)和大家講解一下這5種圖:
1. 類圖?class diagram
在這5種圖中,類圖可謂作是其他圖的基礎(chǔ)。因?yàn)槊總€(gè)系統(tǒng)都涉及到了大量的人、事、物,這些抽象出來(lái)的人事物或者概念就是我們所說(shuō)的類,而任何UML圖都需要建立在有概念和類的基礎(chǔ)上才能展開結(jié)構(gòu)和行為的描述。
其實(shí)在了解類圖時(shí),我不自覺聯(lián)想到了之前學(xué)習(xí)數(shù)據(jù)庫(kù)時(shí)的E-R圖(Entity-Relationship實(shí)體-關(guān)系圖),這里類和實(shí)體的概念其實(shí)是有一些相似之處的,類圖也是一種幫助我們快速提煉出業(yè)務(wù)概念并識(shí)別出其屬性和關(guān)系的工具。
類的屬性我們這里不過(guò)多展開,下面重點(diǎn)來(lái)了解下類之間的關(guān)系;常見的類與類之間的關(guān)系有:包含、繼承、依賴,其中包含又分為聚合aggregation和組合composition。
包含
類的包含關(guān)系分為聚合aggregation和組合composition2種,從中文上看起來(lái)有些不直觀,我們直接用圖說(shuō)話。
下圖為聚合關(guān)系,其中A只能屬于B一個(gè)類,那么我們稱A和B是聚合(強(qiáng)包含)關(guān)系,例如A員工只能屬于某一個(gè)部門。
(聚合關(guān)系)
而這張圖中A既可以屬于B,也可以屬于C,二者不是強(qiáng)包含關(guān)系,則他們?yōu)榻M合(弱包含)關(guān)系。例如A員工既在B部門工作,又兼任C部門的部分工作。
(組合關(guān)系)
繼承:
繼承關(guān)系指A繼承了B的屬性,但同時(shí)也有自己特有的特點(diǎn);例如,老師和學(xué)生都是「人」,但是老師和學(xué)生各自有各自的特性,那么他們就和「人」之間是一種繼承關(guān)系。
繼承關(guān)系有助于我們抽絲剝繭地觀測(cè)到事物之間的本質(zhì),是一種進(jìn)行業(yè)務(wù)提煉的重要手段。
依賴:
依賴關(guān)系指A需要B協(xié)助才能完成某事,但并不是必須和賴以生存的關(guān)系;就像我們開會(huì)依賴于使用投影儀一樣,但沒(méi)有投影儀我們也照樣完成會(huì)議,只是可能沒(méi)那么方便。
下面,我們用一個(gè)例子來(lái)完整表示一下類圖;以大家閱讀這篇文章為例,這次閱讀事件所涉及到的類有:讀者、作者、文章、微信公眾平臺(tái)。
- 作者將文章發(fā)表在微信公眾平臺(tái)
- 讀者前往微信公眾平臺(tái)閱讀文章
- 作者可以發(fā)布0到多篇文章,但一篇文章僅屬于1個(gè)作者
- 讀者也可以閱讀0到多篇文章,1篇文章也可以被0到多個(gè)讀者閱讀
2. 活動(dòng)圖?activity diagram
活動(dòng)圖應(yīng)該是這5種圖中最不需要多廢口舌的,因?yàn)樗臀覀兂R姷牧鞒虉D很像,就是按照時(shí)間順序?qū)⒒顒?dòng)的邏輯整理出來(lái)。
下圖就是一個(gè)簡(jiǎn)單的審批活動(dòng)圖,通過(guò)該圖我們能清晰地了解一個(gè)完整的審批流程和邏輯。
看到這里,自然有人會(huì)問(wèn),這些實(shí)心圓圈、圓角矩形等的具體UML繪圖語(yǔ)法必須要全部掌握嗎?按下圖這樣「原始」的畫法去畫有沒(méi)有問(wèn)題?
其實(shí),在日常的工作中,基本沒(méi)有工程師會(huì)太過(guò)于糾結(jié)你的繪圖語(yǔ)法正確與否;因此,形式和語(yǔ)法不用太過(guò)學(xué)院派,只要能夠向讀者清晰表達(dá)和傳遞意思即可。
3. 狀態(tài)機(jī)圖?state machine diagram
活動(dòng)圖是將流程分解為一個(gè)個(gè)的活動(dòng),通過(guò)活動(dòng)的先后順序來(lái)展示流程;而狀態(tài)機(jī)圖則是圍繞一個(gè)事物的狀態(tài)為中心來(lái)講述流程。
還是以審批為例,這次我們圍繞審批單為中心來(lái)描述流程。假設(shè)審批單有待審批、已撤銷、審批通過(guò)和審批拒絕這4種狀態(tài),那么我們繪制的狀態(tài)機(jī)圖如下:
通過(guò)這個(gè)審批單的狀態(tài)機(jī)圖,我們能夠清晰地看出審批單的狀態(tài)以及影響其狀態(tài)的原因和活動(dòng);在一定程度上,它幫助我們減輕了設(shè)計(jì)審批單的工作量,也幫助工程師對(duì)審批流程有更好的理解。
4. 順序圖?sequence diagram
順序圖,有時(shí)候也會(huì)被混稱為時(shí)序圖,中文名字大家可以不用糾結(jié),重點(diǎn)記住sequence這個(gè)單詞就好。
在前述的活動(dòng)圖中,雖然流程較為清晰,但我們很難清晰地定義角色的具體職責(zé)邊界和通信交互,而順序圖則幫助我們補(bǔ)充到了這一點(diǎn)。
下面,我們嘗試一下從順序圖的角度來(lái)描述審批流程:
從上圖中能夠很明顯的看出銷售負(fù)責(zé)什么、系統(tǒng)負(fù)責(zé)什么、而管理員又負(fù)責(zé)什么,同時(shí)也能清晰看出這3個(gè)角色各自的輸入輸出;由此可見,順序圖能夠幫助我們逐層撥開一個(gè)復(fù)雜業(yè)務(wù)的內(nèi)部運(yùn)作。
5. 用例圖?use case diagram
對(duì)于產(chǎn)品經(jīng)理而言,用例圖應(yīng)該也是相對(duì)比較容易掌握的一種圖。
用例圖是以操作者的角度出發(fā),去看這個(gè)產(chǎn)品能夠帶給他哪些價(jià)值、支持他去操作和查看哪些東西。
繼續(xù)沿用審批舉例:
如上圖所示,我們能夠清晰地看出銷售能夠發(fā)起審批、撤銷審批和編輯審批,管理員能夠查看和執(zhí)行審批;換言之,用例圖能夠幫助業(yè)務(wù)方、產(chǎn)品和工程師以最直觀的角度認(rèn)識(shí)到產(chǎn)品能給客戶帶來(lái)什么價(jià)值,產(chǎn)品在幫助客戶做什么事。
用例圖關(guān)注的是系統(tǒng)的外在表現(xiàn)、系統(tǒng)與人的交互、系統(tǒng)與其他系統(tǒng)的交互。用例圖沒(méi)有太多的技術(shù)用語(yǔ)和實(shí)現(xiàn)細(xì)節(jié),在需求初期對(duì)團(tuán)隊(duì)和客戶都是一種非常好的溝通工具。
三、如何選擇哪種圖來(lái)表達(dá)?
UML有這么多種圖,如何去快速選擇最適合自己當(dāng)前需要的圖呢?
筆者的建議是按照「類圖-用例圖-狀態(tài)機(jī)圖/順序圖/活動(dòng)圖」這樣的順序去使用。
在需求前期,我們可以先使用類圖來(lái)識(shí)別類、類的屬性和關(guān)系。就像讀一段英語(yǔ)句子時(shí),老師告訴我們要快速抓住句子的主謂賓結(jié)構(gòu),從而更快地理解句子意思;類圖也是一樣,在我們兩眼一抹黑的時(shí)候,能夠先讓我們了解到這件事中牽扯到的所有人事物,之后我們才能根據(jù)這些「素材」去展開后續(xù)的分析。
接下來(lái),我們可以通過(guò)用例圖去和客戶、工程師溝通產(chǎn)品的價(jià)值和能做的事,以一個(gè)粗粒度的角度框定產(chǎn)品范圍,看當(dāng)前的范圍是否能夠滿足客戶需求,幫助我們確立能夠開發(fā)出有價(jià)值有意義的產(chǎn)品。
同時(shí)借助用例圖,產(chǎn)品也能夠向研發(fā)積極傳遞當(dāng)前所做產(chǎn)品的價(jià)值,避免工程師因功能價(jià)值理解不足而產(chǎn)生開發(fā)受阻的問(wèn)題。
最后,我們就要在狀態(tài)機(jī)圖、順序圖、活動(dòng)圖中去做抉擇來(lái)描述具體流程了。
這3種圖各自有各自的優(yōu)缺點(diǎn),下面給出一些選擇上的參考建議:
1. 順序圖的特點(diǎn)
- 強(qiáng)調(diào)角色之間的交互,信息傳遞很明確;
- 強(qiáng)調(diào)按時(shí)間順序分別發(fā)生了什么事情;
- 不太適合表達(dá)復(fù)雜的特殊流程(循環(huán)分支、條件分支、可選分支);
2. 活動(dòng)圖的特點(diǎn)
- 強(qiáng)調(diào)每個(gè)角色做了什么事情,這些事情的先后關(guān)系;
- 適合表達(dá)各種特殊流程,如分支、并發(fā)等;
3. 狀態(tài)機(jī)圖的特點(diǎn)
- 事情圍繞某東西開展;
- 該東西有不同的狀態(tài),狀態(tài)會(huì)因?yàn)榘l(fā)生了一些事情而變化(來(lái)自《火球uml》)。
從上述三個(gè)點(diǎn)中,我們能夠看出這3種流程分析圖之間的區(qū)別,在使用時(shí)加以選擇即可;同時(shí)也不要限制自己只能選擇一種,完成可以同時(shí)使用多種圖來(lái)從多個(gè)角度分析問(wèn)題。
四、如何把控畫圖的粒度?
畫圖相對(duì)是一個(gè)主觀性比較高的行為,看似掌握了,但實(shí)操中往往會(huì)容易遇到粒度把控的問(wèn)題:要不粒度過(guò)細(xì)了、什么細(xì)節(jié)都想往圖上添;要不就是粒度不一致,這一分支的粒度很粗、而另一粒度的分支則很細(xì),讓讀者看得云里霧里。
對(duì)于新手而言,粒度把控是一個(gè)需要持續(xù)練習(xí)后才能逐漸掌握的難點(diǎn)。
那么,我們應(yīng)該如何掌控畫圖的粒度呢?
- 明確該圖背后想表達(dá)的內(nèi)容和重點(diǎn),以目標(biāo)為導(dǎo)向,看看自己的圖能否表達(dá)出對(duì)方想要理解到的內(nèi)容;
- 先用宏觀的繪制一版粗粒度的圖出來(lái),隨后再進(jìn)行粒度的逐層細(xì)化;
- 畫完后可以多與讀者(工程師)交流,希望對(duì)方從閱讀角度提出改善建議,幫助自己持續(xù)貼近粒度的最佳把控點(diǎn)。
看到這里,是不是覺得UML也沒(méi)有那么地高深和難懂,不過(guò)是一種看待事物的角度和思想罷了。
本文沒(méi)有太細(xì)講繪圖語(yǔ)法,如果大家有興趣繼續(xù)深挖和學(xué)習(xí),推薦幾本還不錯(cuò)的書《火球UML》《大象UML》《UML和模式應(yīng)用》;其中,《火球UML》更適合缺少技術(shù)背景的產(chǎn)品經(jīng)理來(lái)看,基本可以無(wú)障礙學(xué)完。
u1s1,最好的UML學(xué)習(xí)方式就是邊學(xué)邊畫,如果你躍躍欲試,那就快找一個(gè)案例上手試試吧。
作者:冰冰醬;公眾號(hào):setmefree
本文由 @冰冰醬 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
專欄作家
冰冰醬;公眾號(hào):產(chǎn)品冰冰醬,人人都是產(chǎn)品經(jīng)理專欄作家。5年產(chǎn)品經(jīng)驗(yàn),創(chuàng)過(guò)業(yè)、帶過(guò)人、踩過(guò)坑;獨(dú)立負(fù)責(zé)從0-1搭建業(yè)務(wù)中臺(tái),持續(xù)深耕B端及SaaS領(lǐng)域。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,不得轉(zhuǎn)載。
題圖來(lái)自 Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
聚合應(yīng)該是弱包含,而組合是強(qiáng)包含。
寫的真好!!清楚直接不啰嗦
謝謝呀~~
你的筆力很不錯(cuò)啊。UML圖例我都看了不下于100篇資料了。這是最貼近產(chǎn)品經(jīng)理的。
咩哈哈 謝謝夸獎(jiǎng)~首先可能因?yàn)槲揖褪?技術(shù)出身,比較容易從非技術(shù)的角度去理解這些;其次,我自己就比較喜歡寫作東西,大學(xué)就開始寫公眾號(hào)了哈哈。有興趣也可以關(guān)注下我的公眾號(hào)【產(chǎn)品冰冰醬】呀~~
可以轉(zhuǎn)載嗎?會(huì)標(biāo)注來(lái)源的。
可以呀 加我微信 liam5991 ,我給你開放白名單
我寫文章一向太直白了hhh,有些像直接把邏輯和結(jié)論拍你臉上
很不錯(cuò)!學(xué)到了。想問(wèn)一下作者,一般什么圖是給客戶看的?什么圖是給開發(fā)看的?
個(gè)人覺得,給客戶的圖要重點(diǎn)突出價(jià)值和主流程,所以重點(diǎn)在用例圖和活動(dòng)圖(需簡(jiǎn)化);給開發(fā)的圖就是剩下5種我覺得都o(jì)k的
嗯嗯!謝謝呀!
非常贊
嘿嘿謝謝??
就是流程圖或泳道圖的不同角度表達(dá)和展示,各家公司的文檔要求不同,只要能讓程序員看懂,準(zhǔn)確表達(dá)需求就可以了。
是的 不用拘泥于形式,準(zhǔn)確傳遞思想即可