產(chǎn)品經(jīng)理的思考利器——UML
編輯導(dǎo)語:可能很多產(chǎn)品經(jīng)理會有疑問,UML是什么?為什么要學(xué)習(xí)這個?學(xué)習(xí)了之后會有什么作用?它其實(shí)是一個工具,是IT專業(yè)人員期待多年的統(tǒng)一標(biāo)準(zhǔn)建模符號,支持面向?qū)ο蟮募夹g(shù)。學(xué)習(xí)UML,有助于快速切換領(lǐng)域和習(xí)得經(jīng)驗(yàn),一起來看看吧。
看到這個標(biāo)題,產(chǎn)品的朋友們大概率會一頭霧水,為什么一個產(chǎn)品要學(xué)這么“奇怪”的東西?產(chǎn)品把產(chǎn)品本職工作做好就行了吧?且聽我快速道來~
在我之前的產(chǎn)品經(jīng)歷里,經(jīng)常會遇到一個場景,在我拆解(或調(diào)研)某個業(yè)務(wù)系統(tǒng)時,無法梳理出一個系統(tǒng)層面清晰的脈絡(luò),思考出整個業(yè)務(wù)和系統(tǒng)架構(gòu)的融合方式,即使后期我梳理清楚了,也是一個“大力出奇跡”的方式,一步一步硬推出來的。
但這種蠻力的方式不是長久之計(jì),如果我以后換了領(lǐng)域或者行業(yè)怎么辦?我的業(yè)務(wù)線調(diào)整裁掉了該怎么辦?都要硬啃嗎?顯然不行的在工作中,我們接觸新領(lǐng)域/產(chǎn)品的時候,都會“開頭難”,這個難在于沒有在這個新領(lǐng)域下有歷史經(jīng)驗(yàn),以致于用最笨的方法去調(diào)研,驗(yàn)證,學(xué)習(xí),然后積累出一點(diǎn)點(diǎn)優(yōu)勢,慢慢滾雪球,形成加速。
但如果又換一個新領(lǐng)域,我們很大概率還依賴這種行為方式,這就會造成認(rèn)知的低效率。我其實(shí)一直想找到一個比較底層的方法工具,便于快速切換領(lǐng)域和習(xí)得經(jīng)驗(yàn)。
我先后學(xué)習(xí)與應(yīng)用了一些思考框架:
- 用戶體驗(yàn)要素五層框架(戰(zhàn)略層/范圍層/結(jié)構(gòu)層/框/框架層/表現(xiàn)層)
- 需求蛋模型(一個集合里畫一條線,兩側(cè)分別是自身的功能與用戶的需求)
- 用戶故事地圖(按故事線去梳理一些用戶完整的story,然后快速開發(fā))
- 商業(yè)模式畫布(一個梳理商業(yè)模式的框架圖,可用來自己做商業(yè)規(guī)劃,也可以用來調(diào)研分析競品,在執(zhí)行上順序會略有不同)
但這些框架應(yīng)用的條件,都是建立在我的需求可以被現(xiàn)實(shí)環(huán)境承載、以及我有這方面領(lǐng)域的邏輯下才可生效。
我想要的是切換領(lǐng)域,最后直到我遇到了UML,只有它才能滿足我所以我來推薦產(chǎn)品的朋友,或者其他有這方面困惑的朋友,了解UML這個工具這篇介紹UML的文章,算是一個引子,后面營銷系統(tǒng)相關(guān)的文章會引用到這里,避免到時候閱讀上有信息割裂感
一、UML到底是個什么?
學(xué)名叫做“統(tǒng)一建模語言(Unified Modeling Language)”,下面用大白話解釋下UML這個語言定位是個工具,是1997年OMG組織(不是哦買噶!是Object ManagementGroup對象管理組織)發(fā)布的統(tǒng)一建模語言,是一種編制軟藍(lán)圖的標(biāo)準(zhǔn)化語言它的目標(biāo)之一就是為開發(fā)團(tuán)隊(duì)提供標(biāo)準(zhǔn)通用的設(shè)計(jì)語言來開發(fā)和構(gòu)建計(jì)算機(jī)應(yīng)用,提出了一套IT專業(yè)人員期待多年的統(tǒng)一標(biāo)準(zhǔn)建模符號,支持面向?qū)ο蟮募夹g(shù)。
通過使用UML,這些人員能夠閱讀和交流系統(tǒng)架構(gòu)和設(shè)計(jì)規(guī)劃。(可以理解為想實(shí)現(xiàn)在不同世界的研發(fā)溝通時,達(dá)到車同軌書同文的效果)除此之外,工作中還會遇到各種xxML,都是某類領(lǐng)域?yàn)榱朔奖銟I(yè)內(nèi)交流,或者戰(zhàn)略上為了制定行業(yè)標(biāo)準(zhǔn)而發(fā)明的建模語言,如VRML(虛擬現(xiàn)實(shí)建模語言),sysML(從UML2.0衍生并進(jìn)化)等
二、為什么要學(xué)UML?我能得到什么?
在我看來,UML更是一種思想,誕生之初給研發(fā)人員使用,但也適合產(chǎn)品架構(gòu)師,系統(tǒng)分析師這類的角色使用,掌握以后有這個幾個好處。
1. 思維方式的擴(kuò)展
UML是一種面向?qū)ο蟮乃伎挤绞?,用抽象的方式去反映現(xiàn)實(shí)世界的某個片段。
如果去和前文提到“用戶體驗(yàn)要素(戰(zhàn)略層/范圍層/結(jié)構(gòu)層/框/框架層/表現(xiàn)層)”聯(lián)系的話,UML的作用處在范圍層&結(jié)構(gòu)層。UML同時也是分而治之的思想的重要體現(xiàn),在現(xiàn)實(shí)中也有其他類似的體現(xiàn),比如工程測量中“先整體后局部,由高級到低級,由控制到碎部”掌握了它,就可以在思考復(fù)雜問題的時候有層次有章法,面對再大再龐雜的系統(tǒng),也可以逐個解開。
2. 識別“領(lǐng)域知識”,跨領(lǐng)域溝通與學(xué)習(xí)能力的提升
“領(lǐng)域知識”是一個元概念,有時候和用戶/客戶交流,你會被帶入到全新的領(lǐng)域(不理解領(lǐng)域的話,可類比行業(yè)去理解,實(shí)際不太一樣)中,和領(lǐng)域內(nèi)的專家與客戶交談,他們的獨(dú)有的業(yè)務(wù)經(jīng)驗(yàn),對你來講,就是一個“領(lǐng)域知識”,這種場景在B端業(yè)務(wù)中會更為常見。
如果我們無法定義一件事,就無法注意到它。
好了,我現(xiàn)在把定義引入進(jìn)來了,大家可嘗試在工作或生活中注意到它:在與客戶交談時,注意客戶描述業(yè)務(wù)實(shí)體的名詞術(shù)語,這些名詞術(shù)語會被當(dāng)成「類」,還要注意聽到的動詞,這些動詞可能會構(gòu)成「類」中的「操作」,然后還有其他名詞可能變?yōu)椤割悺怪械摹笇傩浴埂?/p>
當(dāng)梳理出來之后,再去詢問客戶每個「類」的作用,客戶會告訴你「類」的職責(zé),這樣就能快速了解該領(lǐng)域的基礎(chǔ)邏輯。就是我開篇提到的痛點(diǎn),在學(xué)習(xí)了UML之后,對“領(lǐng)域知識”有了新的認(rèn)知,有信心在進(jìn)入陌生領(lǐng)域時系統(tǒng)的建立起認(rèn)知。
3. 完全是私貨→對思考的習(xí)慣有很大影響
學(xué)了UML后,我甚至可以對人際關(guān)系有了更冷靜的感知,比如溝通的時候,溝通的是你,你的關(guān)系,別人,還是你身上的某部分屬性,都可以想的很透徹,更能接近事實(shí)和本質(zhì),可提高思考的深度這種深度的提高,對我這種傻實(shí)在的人來說,很有幫助?;蛘邔ι鐣?jīng)驗(yàn)不太足的學(xué)生來說,也會有幫助。
三、UML都包含哪些內(nèi)容,如何快速上手?
引了這么多,直接看UML有啥東西吧!主要可分為如下圖兩大類:
- 結(jié)構(gòu)元素,圖例左半部分,自上而下為類圖,接口,用例圖,關(guān)系,分組,注釋。
- 行為元素,圖例右半部分,自上而下為狀態(tài)圖,時序圖,協(xié)作圖,活動圖可以理解為這就是咱們現(xiàn)實(shí)世界的粗暴分解,結(jié)構(gòu)和過程組成了世界上的一切,形成了時空。
再奉上一張網(wǎng)上超級經(jīng)典的圖,UML拆解的樣例,這里基本用上了UML中高頻使用的圖例類型,請保存好,后面會持續(xù)用到。
那么,產(chǎn)品同學(xué)要掌握的圖有哪些?
四、結(jié)構(gòu)元素
1. 結(jié)構(gòu)元素-類圖
類,是一類或者一組具有類似屬性和共同行為的事物,映射到現(xiàn)實(shí)中,可參考我上面的那個黃顏色的圖類圖(Class Diagram)是面向?qū)ο笙到y(tǒng)建模中最常用和最重要的圖,是定義其它圖的基礎(chǔ),主要是用來顯示系統(tǒng)中的類、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系的一種靜態(tài)模型類圖描述一個類的屬性和操作,以及對系統(tǒng)的約束。
它們是唯一的,可以直接映射到面向?qū)ο蟮恼Z言的 UML圖。請看詳解「類」的實(shí)例,叫做「對象」。
類和類之間,也會存在相互關(guān)系,這個關(guān)系也有專門的標(biāo)識方式,這里要先引入“面向?qū)ο蟆钡囊恍┫嚓P(guān)概念了,如下圖面向?qū)ο蟮乃伎挤绞?,是以開發(fā)出能夠反映出現(xiàn)實(shí)世界某個特定片段為目標(biāo)的,或者叫建模。
對象是類的實(shí)例,比如你和我都是“人”這個「類」的實(shí)例,對象具有自身的結(jié)構(gòu),屬性和操作。比如抽象,是過濾掉對象的一部分屬性,保留解決問題所夠用的屬性和操作,因?yàn)楝F(xiàn)實(shí)生活中,解決問題不一定需要全部的信息再就是繼承,我們的電冰箱,電烤箱可以看成單獨(dú)的「類」,都是電器這個「類」下的子類,繼承了電器的“開”與“關(guān)”,但冰箱有冷凍功能,烤箱有加熱功能。
對應(yīng)的,電器這個「類」也是電冰箱電烤箱的「超類」其他的可以看圖,要解釋下本圖不是UML全部的內(nèi)容,但足夠本文章講和使用了。
好了,終于可以講正題了!「類」之間存在的關(guān)系,有如圖幾種,我們詳細(xì)用圖片展示。
關(guān)聯(lián)接觸過數(shù)據(jù)庫的同學(xué)對這個定義比較熟悉,基本等同于ER的思考邏輯使用直線表示。
就像「類」和「對象」的層級關(guān)系,「類」和「類」之間的“關(guān)聯(lián)”關(guān)系,也是一個「類」,且這個「關(guān)聯(lián)類」對應(yīng)的「對象」叫做「鏈」。
聽起來有點(diǎn)套娃,但這個就是核心的思考方式了,可以向上抽象思考,也可以向下實(shí)例思考。
關(guān)聯(lián)講完了,咱們來講抽象,繼承,泛化這三個放到一塊講,是他們的聯(lián)系可放到一塊去思考,在設(shè)計(jì)游戲時,「計(jì)時器類」是從「投球計(jì)時類」和「游戲計(jì)時類」抽象出來的,對應(yīng)的子類用空心實(shí)線箭頭指向被繼承的類,這個箭頭就是泛化關(guān)系,代表“is a kind of……”
好好琢磨下哈,然后咱們繼續(xù)介紹下接口和實(shí)現(xiàn)接口跟封裝可以一起介紹,可以理解為你在使用冰箱的時候,不需要知道冰箱怎么制冷的。只需要插電和開關(guān)冰箱門就好了。
冰箱把制冷的細(xì)節(jié)都封裝在了里面,給你留下了開關(guān)和插電的接口冰箱這個「類」對應(yīng)的他的開關(guān)接口,這之間的關(guān)系就是實(shí)現(xiàn),使用空心虛線箭頭標(biāo)識。
依賴用虛線單箭頭表示,一個類使用了另一個類,比如在設(shè)計(jì)報表類系統(tǒng)時,會存在類似的關(guān)系?!罢故緢蟊怼钡墓δ?,使用了“報表”這個類,有一個前置的邏輯,形成了依賴關(guān)系。
最后就是類圖里的最后一塊聚集和組成這其中有點(diǎn)形似與混合物 與 化合物的區(qū)別。聚集,用空心菱形剪頭,從部分指向整體,一種混合物的關(guān)系組成,用實(shí)心菱形剪頭,代表強(qiáng)聚集關(guān)系,類似化合物的關(guān)系,桌子由桌面和桌腿組成。當(dāng)然這只是為了沒接觸的同學(xué)好理解,如果有ETC精請克制自己不要自動抬杠……
2. 結(jié)構(gòu)元素-用例圖
篇幅最長的類圖介紹完了,接下來介紹一個也很常用的用例圖,相對簡單很多,跟畫畫一樣,一個小人兒和一大堆氣泡發(fā)生了連線的關(guān)系用例圖可以在設(shè)計(jì)系統(tǒng)或者需求的時候,理清楚實(shí)際的場景,排坑。比如設(shè)計(jì)某功能時,總會有一些操作場景被遺漏,導(dǎo)致進(jìn)入測試階段中了,才發(fā)現(xiàn)有問題,要修補(bǔ)。
使用用例圖,能很大程度上在設(shè)計(jì)階段避免這種情況。
小人兒就是參與者氣泡就是用例二者之間使用依賴線連接, 上面可以標(biāo)記<< include>> 或?<< extend>><< include>>可理解為用例間包含的關(guān)系,一個用例包含了下一層級的用例。
<< extend>>可以理解為此用例還有其他場景可以使用,擴(kuò)展出了一個入口用例圖只用來標(biāo)識參與者和用例的關(guān)系,并不代表先后順序。
用例圖在交付時通常給客戶和開發(fā)組參考,每個用例圖的場景描述至少占一頁文檔,包含:·發(fā)起用例的參與者·用例的假設(shè)條件·用例的前置條件·場景中的步驟·場景完成后的后置條件·從用例中獲益的參與者。
五、行為元素
終于大半篇幅講完了結(jié)構(gòu)元素,本節(jié)開始講行為元素了,如果小伙伴們看麻了,可以收藏后面繼續(xù)看~
行為元素對于產(chǎn)品同學(xué)來講,基本是不陌生的,如果經(jīng)常繪制業(yè)務(wù)流程圖的話,會發(fā)現(xiàn)有很多一致的地方,很正常,都是團(tuán)隊(duì)的溝通工具嘛。
1. 行為元素-狀態(tài)圖(狀態(tài)機(jī)圖)
這種圖在制作大型業(yè)務(wù)系統(tǒng)的時候,肯定會用到,比如我在設(shè)計(jì)CRM系統(tǒng)的時候,里面的商機(jī)就會有多種狀態(tài)流轉(zhuǎn),就用到了這個圖。給研發(fā)兄弟看,也會溝通的很順暢,因?yàn)檠邪l(fā)在實(shí)際工作中會頻繁用到這里,他們基于這些狀態(tài)去設(shè)計(jì)代碼層面的調(diào)用邏輯。便于他們設(shè)計(jì)的時候提前規(guī)劃,提高研發(fā)的效率。
研發(fā)最怕的,是做一半了中途改了基礎(chǔ)底層狀態(tài)的設(shè)計(jì),分分鐘掀桌子狀態(tài)圖的定義,可以說是對象改變了自己的狀態(tài),以響應(yīng)事件和時間的流逝,比如燈的開與關(guān)。
狀態(tài)圖和類圖的差別,是狀態(tài)圖針對的是單個對象來建模,類圖可以針對一組類來建模繪制方法,圓角矩形代表一個狀態(tài),狀態(tài)間帶箭頭的實(shí)現(xiàn)代表狀態(tài)的遷移,箭頭指向目標(biāo)狀態(tài)。實(shí)心圓點(diǎn)代表狀態(tài)轉(zhuǎn)移的起點(diǎn),牛眼圓圈代表重點(diǎn)記不住那么多沒關(guān)系,有專門的工具,跟visio一樣,直接找來拖就行了,文章末尾會介紹繪制工具。
下圖是基于工單類的審批流程繪制的狀態(tài)圖。
2. 行為元素-時序圖
時序圖,也叫順序圖,強(qiáng)調(diào)了時間維度,時序圖的關(guān)鍵思想是強(qiáng)調(diào)了對象之間的交互按照特定時間發(fā)生,這些特定時間的交互序列,從開始到結(jié)束需要一定的時間。時序圖通常用對象標(biāo)識,從每個對象下方延展出一條生命線,一個時序圖可以用單個或者多個如下單元組成。
每個線程對象之間可以用消息通信,有兩類一類消息叫調(diào)用,這是一個來自消息發(fā)送者對象的請求,它被傳遞給消息的接收對象,請求接收者對象執(zhí)行某種操作。通常,需要發(fā)送者等待接收者執(zhí)行,等待反饋,這種消息又叫做同步消息。
如下圖,帶有實(shí)心箭頭的實(shí)線表示發(fā)送的消息,帶有線狀箭頭的虛線表示返回消息。
另一類消息叫做異步消息,這種機(jī)制下發(fā)送者把控制權(quán)交給了接收者,并不等待操作完成,這種消息用帶有線狀箭頭的實(shí)線表示。
時序圖跟跨職能流程圖有些許相似,不過時序圖可以更清晰的展示每個線程的動作順序,以及線程之間的通信關(guān)系,如果是用跨職能流程圖的方式來繪制,就不便于展示每個線程之間的多條通信了依然拿請假的流程舉例,如圖。
時序圖還有幀化的概念,不過對于非研發(fā)工作來講,沒必要學(xué)習(xí),基本用不到。不再贅述。
3. 行為元素-活動圖
終于到了最后的類型了!活動圖,用圓角矩形表示,與狀態(tài)圖不同的是,活動圖的圖例更接近橢圓。一個活動的處理一旦完成,就自動引起下一個活動發(fā)生。
狀態(tài)圖側(cè)重于描述對象的狀態(tài)變化,活動圖側(cè)重于描述活動,與業(yè)務(wù)單線流程圖大多數(shù)邏輯類似,不過區(qū)別是活動圖更適合展示判斷過程,和并發(fā)路徑。如果用基礎(chǔ)的單線流程圖標(biāo)識,會不太直觀比如判斷是類似的表示方法。
并行路徑的表示方法
如果日常工作中使用流程圖較多,也不必非要用這個,UML本質(zhì)目的是快速溝通,能溝通清楚就行。
六、實(shí)戰(zhàn)應(yīng)用
下面講下我平時是怎么應(yīng)用的,有兩類案例,一類是研究一個系統(tǒng),多數(shù)的時候是憑借興趣研究的,感覺很有意思。另一個是工作里實(shí)際使用時展示的。
1. 拆解與理解saleforce
saleforce是CRM業(yè)界非常知名的一個產(chǎn)品,因?yàn)檫@個系統(tǒng)太過于龐大,UML的類圖是快速理解的一個利器。此時應(yīng)用UML不是還原到如何實(shí)現(xiàn),而是為了理解它是怎么設(shè)計(jì)的。通過demo很難有機(jī)會能接觸到更深層的實(shí)現(xiàn)細(xì)節(jié)。
2. 應(yīng)用到工作
在設(shè)計(jì)內(nèi)部BI系統(tǒng)時,用到了類圖,和用例圖。
在設(shè)計(jì)CRM系統(tǒng)時,商機(jī)(例子)狀態(tài)的流轉(zhuǎn)圖。CRM的設(shè)計(jì),我會單起一系列文章講。
除了這些還有很多應(yīng)用,不過都差不多,應(yīng)該可以給大家足夠的幫助了。關(guān)于UML的介紹內(nèi)容,就到此結(jié)束,下面我做下對應(yīng)的答疑。
七、高頻的疑問解答
在調(diào)研UML是否值得學(xué)習(xí)的時候,我也會經(jīng)??吹竭@樣那樣的問題,比如:
我看完了,真的有必要學(xué)嗎?研發(fā)不看怎么辦?
我的個人建議是,如果自身喜歡這方面的思考,可以憑興趣去學(xué);如果是B端從業(yè)且想繼續(xù)發(fā)展的業(yè)務(wù)產(chǎn)品,建議去學(xué),學(xué)了以后會有如虎添翼的功效,不過學(xué)習(xí)需要時間,建議收藏,或者轉(zhuǎn)發(fā)給小號后續(xù)??矗移綍r看到東西也這么干哈哈。
最好能買書學(xué),更系統(tǒng)UML本質(zhì)還是溝通工具,可以跟研發(fā)去協(xié)商,看團(tuán)隊(duì)更傾向用什么方式溝通,UML只是一種,如果有別的更合適的表示方法,能把邏輯梳理清楚,歧義消除干凈,最好不過了。
UML和數(shù)據(jù)建模是否有關(guān)系?
跟研發(fā)同事交流過,他們說UML其實(shí)就跟JAVA編程過程中的思考很接近,不斷抽象和建模,平時也會用到。數(shù)據(jù)庫建模與UML有一定的聯(lián)系,數(shù)據(jù)庫建模的過程是邏輯層到物理層的逐層過程,都是構(gòu)造模型,但側(cè)重點(diǎn)不一樣,數(shù)據(jù)庫建模側(cè)重數(shù)據(jù)層面邏輯效率,模型可用性等等。
UML之后如何使用?
除了上面的那些基本功能點(diǎn)以外,使用UML的本質(zhì)目的就是為了多方理解,盡管UML有一些法則,也不要被禁錮,能達(dá)到溝通順暢無歧義的目的,就足夠了。
畫圖使用什么工具呢?
starUML。win/mac平臺都有,win的平臺有個版本很復(fù)古,但是功能很完善。mac有starUML4.0的版本,顏值很高,但是感覺畫起來沒win的好用。
大家可以百度搜下。·Visio??梢援嫷膱D很多,包含了UML的基礎(chǔ)圖例,不過看個人習(xí)慣,我Visio和starUML都用,Visio常用來畫流程·其他有用的也可以推薦下,工具嘛,趁手就行。
有哪些書籍推薦?
UML基礎(chǔ)、案例與應(yīng)用(入門),大象UML(進(jìn)階),大話設(shè)計(jì)模式(感興趣可以看),系統(tǒng)架構(gòu)(值得反復(fù)長期啃,我確實(shí)還沒看完,太大了,不過是本神書)另外其他的書,可以白嫖微信讀書無限卡,香滴很!
八、結(jié)語
未來,我會出一些關(guān)于業(yè)務(wù)系統(tǒng)的相關(guān)文章,盡量大白話,可能有些大佬看著文字會評價我的思考膚淺,但能有人聽懂和交流,才是我的初衷。
我期望我的些許產(chǎn)出,可以讓新手產(chǎn)品同學(xué)們不再像我當(dāng)年那樣隨機(jī)漫步,能快速度過無人帶領(lǐng)自己摸索的成長期,我愿意做一塊鋪路石~肝了這么久,不知道你們學(xué)廢了沒有,如果有收獲,還請點(diǎn)個贊鼓勵一下我~哈哈哈感謝感謝。
作者:羅文正雄;公眾號:羅文正雄
本文由 @羅文正雄 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Pixabay,基于 CC0 協(xié)議
錯字多,斷句不對的地方也多,影響閱讀。是直接復(fù)制的某本書上的文字吧
看個大象uml
推薦的書目,可以考慮給下對應(yīng)豆瓣鏈接以確定版本、出版社~
受教了,樓主思考問題的方式對我有所啟發(fā),感謝
萬物皆對象
講道理非技術(shù)出身的可能連面向?qū)ο蠖颊幻靼?/p>
嗯 會存在這個問題,當(dāng)年入行的時候是自學(xué)的這部分?,F(xiàn)在行業(yè)應(yīng)該變了,要求不太一樣了哈哈
話說,對象是啥
通俗的舉例:“女朋友”是一類人,“你的女朋友”具體到誰,就是對象
哦!原來是這樣啊,老是聽到這個詞,但是一直沒搞懂什么意思哈哈
做任何工作都要先找到一個比較底層的方法工具,才能快速切換領(lǐng)域和習(xí)得經(jīng)驗(yàn),不用再隨機(jī)漫步。