產(chǎn)品必修課——輕松搞定UML

11 評論 39914 瀏覽 363 收藏 13 分鐘

很多產(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)然是否定的,請看下圖↓

1

何為靜態(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ī)則:

類1

請假場景中的類圖表示如下圖,其中類與類之間的直線表示兩個(gè)類之間存在某種關(guān)系,這種關(guān)系將兩個(gè)類關(guān)聯(lián)到了一起。

類2

員工和領(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)變化,和表示方法:

狀態(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á)的事情:

  1. 剛提出請假申請時(shí)是提出狀態(tài)。
  2. 領(lǐng)導(dǎo)同意則改為批準(zhǔn)狀態(tài)。
  3. 領(lǐng)導(dǎo)不同意則改為拒絕狀態(tài)。
  4. 拒絕后可以重新申請或直接撤回。

有沒有感覺用畫圖的形式比文字表述更清晰明呢,也許在這里感受并不明顯,但當(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é)長短。

從圖中可以看出請假所需的步驟:

  1. 員工提交請假申請。
  2. 保存請假申請。
  3. 提醒領(lǐng)導(dǎo)審批。
  4. 領(lǐng)導(dǎo)審批批準(zhǔn)/拒絕。
  5. 修改請假狀態(tài)。
  6. 提醒員工審批完成。

相比上邊這段文字,是不是覺得順序圖的表達(dá)更直接呢?

五、活動(dòng)圖:

1、什么是活動(dòng)圖?

活動(dòng)圖向我們展示了一個(gè)操作或過程的步驟。也就是說做一件事情總共分幾步,先干嘛,后干嘛。如果用過流程圖的人會(huì)發(fā)現(xiàn)活動(dòng)圖和流程圖很相似,他們要表達(dá)的事情是一樣的,只是表示形式不同而已。甚至可以直接理解為活動(dòng)圖就是一種流程圖。

2、如何表示?

下面就來看下用活動(dòng)圖如何表達(dá)請假這個(gè)場景:

活動(dòng)

解釋下圖中標(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)載。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評論
評論請登錄
  1. 一個(gè)系統(tǒng)怎么用UML建模思想來理解?跟看到系統(tǒng)的整體結(jié)構(gòu)有啥區(qū)別?

    來自廣東 回復(fù)
  2. 為什么還要“判斷是否繼續(xù)申請”?直接改成“是否重新修改申請”,是就提交申請,否就結(jié)束

    來自廣東 回復(fù)
  3. 講的真好,通俗易懂,小白一下就明白了,百度百度看了半天也沒看明白

    來自浙江 回復(fù)
  4. 通俗易懂啊,不錯(cuò),學(xué)習(xí)啦

    來自北京 回復(fù)
  5. 有什么相關(guān)書籍推薦嗎?

    來自北京 回復(fù)
    1. 我寫這篇文章的時(shí)候參考了兩本書《UML基礎(chǔ)、案例與應(yīng)用》《火球 UML大戰(zhàn)需求分析》,可以下載pdf版看下

      來自北京 回復(fù)
  6. 很好的幫助了我寫論文~ 贊

    來自浙江 回復(fù)
  7. 狀態(tài)圖時(shí)序圖泳道圖都是流程圖中比較基本的,類圖真心沒必要

    來自上海 回復(fù)
  8. 掃碼不能分享哎

    來自北京 回復(fù)
    1. 已經(jīng)讓技術(shù)GG在處理拉,抱歉哈親

      來自廣東 回復(fù)