產(chǎn)品必修課——輕松搞定UML
很多產(chǎn)品小白剛開始工作都是從寫產(chǎn)品需求文檔(PRD)開始的,那么想寫好一篇高質(zhì)量的需求文檔,有一項(xiàng)技能是必不可少的——畫UML“圖紙”。那什么是UML呢,下面我們就來聊聊需求中UML的那些事~~
可能一些了解過UML的人會(huì)知道,它有很多復(fù)雜和容易混淆的語法,讓人云里霧里摸不著頭緒。但是不要急,當(dāng)UML應(yīng)用于軟件需求分析時(shí),其學(xué)習(xí)門檻將會(huì)大大降低,語法復(fù)雜度也會(huì)降低。而且你基本不需要掌握軟件開發(fā)的知識(shí)。只要你對軟件需求分析感興趣,認(rèn)真學(xué)習(xí)和應(yīng)用UML,就很有機(jī)會(huì)成為軟件需求分析高手:)。以下是我學(xué)習(xí)UML的一些總結(jié),和大家一起分享。
UML全稱Unified Modeling Language,直接翻譯就是統(tǒng)一建模語言,簡單地說就是一種有特殊用途的語言。
可這明明是一種圖形,為什么說是語言呢?其實(shí)有很多內(nèi)容用文字是無法表達(dá)清楚的,就像在建筑界的設(shè)計(jì)圖紙一樣,有一套標(biāo)準(zhǔn)來描述建筑物的設(shè)計(jì),同樣,在軟件界,我們也需要一套標(biāo)準(zhǔn)來幫助我們做好軟件開發(fā)的工作。UML就是這樣一種標(biāo)準(zhǔn),但它不是唯一標(biāo)準(zhǔn),只是UML是大家比較推崇的一種標(biāo)準(zhǔn)而已。
在軟件設(shè)計(jì)和開發(fā)過程中會(huì)有不同的人參與其中,比如投資人、老板、客戶、需求人員、開發(fā)人員等等,每個(gè)人都各有所長,涉及的工作內(nèi)容也不盡相同,這就增加了不同人之間的溝通成本,有可能客戶需要A,產(chǎn)品人員理解成了B,在傳達(dá)給開發(fā)人員后開發(fā)出了C。。。為了盡量避免這樣的事情發(fā)生,顯然UML這張“圖紙”還是很有必要存在的。
那么作為一個(gè)產(chǎn)品小白又要掌握哪些UML知識(shí)呢,那么多圖我們都要掌握嗎,答案當(dāng)然是否定的,請看下圖↓
何為靜態(tài)、動(dòng)態(tài)呢?靜態(tài)視圖所描述的結(jié)構(gòu),某段時(shí)間內(nèi)應(yīng)該是穩(wěn)定的,靜態(tài)的;而動(dòng)態(tài)視圖描述的是某種行為,是動(dòng)態(tài)的。
如圖中紅字標(biāo)出的圖是作為一名產(chǎn)品人員所必須掌握的,那么在工作中如何應(yīng)用呢?下面我們就一起來學(xué)(gao)習(xí)(ding)這五個(gè)圖吧。
舉個(gè)栗子:小明由于最近加班比較累,想請假休息幾天,那么他需要在請假系統(tǒng)上提交請假申請并說明原因,等待領(lǐng)導(dǎo)審批,如果領(lǐng)導(dǎo)同意,那就快樂的休假啦,如果領(lǐng)導(dǎo)拒絕,小明就要考慮是修改下繼續(xù)申請,還是就這樣默默地繼續(xù)工作。
那么通過UML圖是如何表達(dá)這樣一個(gè)場景呢?我們來一個(gè)一個(gè)說。
一、類圖:
1、在學(xué)習(xí)類圖之前,我們來說下什么是類
類是一類或一組具有類似屬性和共同行為的事務(wù)。說白了就是將周圍的事物分下類,比如手機(jī)、電腦、電視機(jī)。。。這都是一類事物的總稱,比如蘋果手機(jī)、三星手機(jī)、小米手機(jī)等都?xì)w屬于手機(jī)這個(gè)類。
那么上邊請假這個(gè)場景中都哪些可以歸為類呢?首先小明身邊還有很多像小明這樣的人,他們都是一個(gè)公司工作的同事,那么他們就可以歸為員工類;請假申請呢?今天小明提一個(gè),明天小紅提一個(gè),那就是好多請假的總稱,它們就可以稱為請假條類;同理還有個(gè)領(lǐng)導(dǎo)類。好了,類分好了,如何用類圖表示呢?
2、如何表示?
首先看下類圖的表示規(guī)則:
請假場景中的類圖表示如下圖,其中類與類之間的直線表示兩個(gè)類之間存在某種關(guān)系,這種關(guān)系將兩個(gè)類關(guān)聯(lián)到了一起。
員工和領(lǐng)導(dǎo)通過請假條有了聯(lián)系(當(dāng)然員工和領(lǐng)導(dǎo)還可以通過很多事情聯(lián)系到一起,我們就撇開其他事情,單看這個(gè)請假場景中這兩個(gè)類的關(guān)系),就這樣把分好的類列出來,再找到它們之間可能存在的關(guān)系,duang就畫好了,簡單吧。
在上圖中已經(jīng)理清了請假場景中到底有哪些類,他們之間存在什么樣的關(guān)系,好,那接下來看看這些類都能干什么。
二、用例圖:
1、什么是用例?
用例(use case):從用戶的觀點(diǎn)對系統(tǒng)行為的描述。也就是站在用戶的角度來描述這個(gè)系統(tǒng)到底能干嘛,而不用考慮實(shí)現(xiàn)細(xì)節(jié)。
2、如何表示?
請假場景用用例圖的表示:
圖中表示了在請假系統(tǒng)中,員工可以請假,領(lǐng)導(dǎo)可以審核。看,每個(gè)用戶可以做什么是不是一目了然。用例圖就是先畫個(gè)小人,再看他們都要在系統(tǒng)中做哪些事,然后畫個(gè)圈把能事情裝進(jìn)去,再畫個(gè)箭頭把小人和圈圈聯(lián)系起來就完成啦!
知道了哪些類可以干什么,我們再來說說他們都是怎么做的。接下來要介紹的三個(gè)圖從不同的角度對怎么做進(jìn)行描述??梢愿鶕?jù)需要自行選擇用哪個(gè),原則就是把想表達(dá)的事情表達(dá)清楚就行。
三、狀態(tài)圖:
1、什么是狀態(tài)圖?
介紹狀態(tài)圖前,我們先說下什么是對象,還記得類的定義嗎?類就是一類事物的總稱,那對象呢?對象就是這類事物中的個(gè)體,比如手機(jī)類,蘋果手機(jī)就是手機(jī)類的一個(gè)對象。
那回到請假這個(gè)場景中,顯然一個(gè)請假條就是請假條類中的一個(gè)對象。而一個(gè)請假條對象在不同時(shí)間所處的狀態(tài)是不相同的,比如是批準(zhǔn)還是拒絕。那么不同的狀態(tài)如何表示呢,狀態(tài)圖就是用來描述一個(gè)對象的可能狀態(tài)以及各個(gè)狀態(tài)之間的轉(zhuǎn)換關(guān)系的一種圖。
2、如何表示?
我們來看下一個(gè)請假條對象的狀態(tài)變化,和表示方法:
先解釋下圖中標(biāo)注:
- 開始符號(hào)和結(jié)束符號(hào)就不必多說啦,就是表示開始和結(jié)束。
- 動(dòng)作:觸發(fā)狀態(tài)改變的動(dòng)作。就是是什么事情讓狀態(tài)改變的。
- 狀態(tài):對象當(dāng)前所處的狀態(tài)。
我們用文字來描述一下這個(gè)狀態(tài)圖要表達(dá)的事情:
- 剛提出請假申請時(shí)是提出狀態(tài)。
- 領(lǐng)導(dǎo)同意則改為批準(zhǔn)狀態(tài)。
- 領(lǐng)導(dǎo)不同意則改為拒絕狀態(tài)。
- 拒絕后可以重新申請或直接撤回。
有沒有感覺用畫圖的形式比文字表述更清晰明呢,也許在這里感受并不明顯,但當(dāng)狀態(tài)復(fù)雜時(shí)就很難用文字描述清楚了。學(xué)會(huì)它會(huì)在必要時(shí)幫你梳理復(fù)雜的邏輯關(guān)系。
四、順序圖:
1、什么是順序圖?
剛剛說的狀態(tài)圖是對單個(gè)對象的描述,而順序圖是對一個(gè)對象如何與其他對象進(jìn)行交互的描述。也就是說你說這兩個(gè)對象有關(guān)系,那到底有什么關(guān)系,怎么聯(lián)系到一起的。順序圖就是用來描述這種關(guān)系的,但要注意順序圖的關(guān)鍵詞是順序和時(shí)間。
- 順序:對象間的交互按照特定的順序發(fā)生的。
- 時(shí)間:交互從開始到結(jié)束需要一定的時(shí)間。
2、如何表示?
看圖:
沿著生命線從上到下就是對象間交互發(fā)生的順序,生命線上的長條方框就表示交互的時(shí)間,這個(gè)時(shí)間只是估計(jì)的時(shí)間,不需要過分糾結(jié)長短。
從圖中可以看出請假所需的步驟:
- 員工提交請假申請。
- 保存請假申請。
- 提醒領(lǐng)導(dǎo)審批。
- 領(lǐng)導(dǎo)審批批準(zhǔn)/拒絕。
- 修改請假狀態(tài)。
- 提醒員工審批完成。
相比上邊這段文字,是不是覺得順序圖的表達(dá)更直接呢?
五、活動(dòng)圖:
1、什么是活動(dòng)圖?
活動(dòng)圖向我們展示了一個(gè)操作或過程的步驟。也就是說做一件事情總共分幾步,先干嘛,后干嘛。如果用過流程圖的人會(huì)發(fā)現(xiàn)活動(dòng)圖和流程圖很相似,他們要表達(dá)的事情是一樣的,只是表示形式不同而已。甚至可以直接理解為活動(dòng)圖就是一種流程圖。
2、如何表示?
下面就來看下用活動(dòng)圖如何表達(dá)請假這個(gè)場景:
解釋下圖中標(biāo)注:
- 泳道:為什么起這個(gè)名字呢,就是長得很像游泳池的泳道啦,泳道的名字以通常以角色名字命名,請假場景中有兩個(gè)角色,員工和領(lǐng)導(dǎo)。
- 活動(dòng):主要由“動(dòng)賓”結(jié)構(gòu)的詞構(gòu)成,描述當(dāng)前進(jìn)行的活動(dòng)。
也許有人問,這不是狀態(tài)圖嗎?的確,活動(dòng)圖不仔細(xì)看確實(shí)和狀態(tài)圖很相似,但它們表達(dá)的內(nèi)容是完全不同的,狀態(tài)圖是表示單個(gè)對象的狀態(tài)變化,而活動(dòng)圖是表述操作步驟。仔細(xì)看兩個(gè)圖是不難區(qū)分的。
通過對類圖、用例圖、狀態(tài)圖、順序圖和活動(dòng)圖的學(xué)習(xí),是不是覺得很多事情都能用圖來表達(dá)的更清楚呢,可以嘗試找個(gè)場景,按照上邊的思路畫畫,一定會(huì)有所收獲的,要相信不積跬步,無以至千里。
好了,以上就是我對這五個(gè)圖的理解,盡量用通俗易懂的方式講給大家聽,不知道你領(lǐng)會(huì)了多少呢?相信如果你看到了這里就算不能熟練使用,也已經(jīng)對UML有了大概的認(rèn)知了,是不是也沒有那么復(fù)雜呢。如果感興趣可以買些相關(guān)書籍深入學(xué)習(xí)一下。
本文由 @張丹 原創(chuàng)投稿,并經(jīng)人人都是產(chǎn)品經(jīng)理編輯。未經(jīng)許可,禁止轉(zhuǎn)載。
一個(gè)系統(tǒng)怎么用UML建模思想來理解?跟看到系統(tǒng)的整體結(jié)構(gòu)有啥區(qū)別?
為什么還要“判斷是否繼續(xù)申請”?直接改成“是否重新修改申請”,是就提交申請,否就結(jié)束
講的真好,通俗易懂,小白一下就明白了,百度百度看了半天也沒看明白
通俗易懂啊,不錯(cuò),學(xué)習(xí)啦
有什么相關(guān)書籍推薦嗎?
我寫這篇文章的時(shí)候參考了兩本書《UML基礎(chǔ)、案例與應(yīng)用》《火球 UML大戰(zhàn)需求分析》,可以下載pdf版看下
很好的幫助了我寫論文~ 贊
狀態(tài)圖時(shí)序圖泳道圖都是流程圖中比較基本的,類圖真心沒必要
掃碼不能分享哎
已經(jīng)讓技術(shù)GG在處理拉,抱歉哈親