用例圖這樣畫,3步讓你做需求分析有理有據

14 評論 32310 瀏覽 214 收藏 20 分鐘

編輯導語:用例圖是UML的其中一種,合理使用用例圖,可以更清晰地展示用戶需求與用戶所需服務,讓產品團隊更好地站在用戶角度去思考問題,并建立場景化思維。本篇文章里,作者總結、分享了用例圖的類型與用法,一起來看一下。

之前寫《做產品,為什么要畫這些圖?》,介紹產品常用視圖后,一直想深入介紹每一種圖的用法,卻生怕理解不到位,又不想當文字搬運工,遲遲不敢開寫。

這次趁著打磨課程,逼自己猛啃幾本書,結合這幾年做產品的經歷,總算提煉出自己的思路。

我首先要講的是用例圖,用例是 UML 中最重要的一個元素,后續分析流程、設計功能,都是圍繞它展開的。

本文先介紹為什么要畫用例圖,再為你解讀用例圖知識,最后用一個案例演示如何畫用例圖。

文章有點長,不過相信你看完,對如何做需求分析會有新的認識。

一、用例圖有啥了不起

做產品前幾年,我很少畫用例圖,直到做數據中臺,碰到的需求更復雜,我重翻《大象:Thinking in UML》找靈感。

讀到用例時,我恍然大悟,原來我放著用例這么好的法寶不用,簡直暴殄天物。

后來,我從業務調研開始,用用例的分析方法,把業務研究透、描述出來,系統該做成怎樣,腦海里漸漸清晰。

當然,并非每個需求都得畫用例圖,簡單的需求完全可以不用牛刀。

1. 用戶視角

用例的設計之初,是希望我們別老在系統內執著功能,而是跳到系統外,以用戶的眼光看系統,思考什么情況下給什么人提供什么支持。

如果我們學會了用例圖的分析思想,理解它的表達邏輯,至少能試著站在用戶的角度去看問題。

開啟這種視角,才不會總用晦澀難懂的術語,將用戶搞暈,才能用業務方的語言去溝通,真正以用戶為中心去獲取需求,轉化為產品服務。

練習的辦法,便是按用例的規則和方法,一點點做,?逐漸轉變思考的方式。

2. 場景化思維

用例的另一個特點是,關注用戶在什么情況下做什么事,這是典型的場景化思維。

這讓我想起,以前給老媽換手機,要教會她使用,可讓我頭疼了。

每次跟她說,這是查號碼、這是打電話、這是聽歌、這是看視頻等等,她都記不住。我一度以為人年紀大了,記憶力不好,很難接受新東西。

后來,我反思自己,改變策略,只給她講,她用手機會做的幾件事情。

打電話,我只告訴她第一步按哪,第二步按哪,每一步有什么標記符號,再把常撥號碼,設置成快捷鍵,每次只需一步操作。

結果,她居然記住了。

發現沒?功能描述容易脫離用戶使用場景,讓人困惑。

所以,我們要從場景出發,圍繞用戶在具體情況下,要做的事情,告訴他怎么做就好了。

3. 系統思維

每個講產品經理的思維方式,都會講系統思維。可,真能用系統思維去思考的人,可謂鳳毛麟角。

究竟什么是系統思維呢?

系統思維,即思考問題時,要全面考慮系統內事物之間的互相影響,關注整體的運行規律,而不是只考慮個別事物的情況。

做產品時,如果只討論功能,就是孤立地看待產品。

產品脫離了使用者,就沒有意義。只有當我們把產品和使用者都考慮進去,才算是系統的思考。

用例的本質,就是將產品和使用者當成一個系統來看。

下面一起看看用例為何物吧。

二、解讀用例圖

1. 何為用例

用例,是 UML 中用來捕獲功能性需求的一種方法,它從不同視角,描述不同角色用系統/產品做什么事,即什么人做什么事。

一個用例,就是參與者為完成某個特定目標的一系列活動或功能的集合。

換句話說,用例是參與者為滿足自己的期望,而完成的事情。

所以說,用例不是功能,而是由參與者驅動的,是有明確目標的,是從用戶視角看問題的。

比如,人喝水,大致要做拿杯子、倒水、喝這幾個動作,人喝水是用例,拿杯子卻不是,因為不會有人沒有目的只拿杯子。

2. 用例圖的構成

用例圖,由參與者、用例、邊界和關系構成。

1)參與者,用小人表示

按官方文檔的定義,參與者是在系統外部與系統交互的人或事物,可以是人、部門或系統。

產品面向的用戶,也是在系統之外的參與者。

有時,系統內部也有一些人或對象,參與完成業務,這種稱之為業務工人,并非參與者,需區分清楚。

2)用例,用橢圓表示

用例,表示參與者為完成某個目標的一系列活動。用例名稱,以動賓短語出現,表示參與者做的事情。

用例是業務分析、需求分析、系統分析與設計過程的基本單位,粒度可大可小。

粒度的確定,一直是個難題,沒有標準,只能根據實際情況分析。一個大型系統,可能會有上百個用例,一個小產品,也許只有幾個用例。

這有 2 個經驗供你參考:

  1. 完整性,一個用例是一個完整的使用場景,不是零散的動作步驟。比如,拿起手機刷微信是個完整的場景,拿起手機只是一個步驟。
  2. 獨立性,一個用例有一個明確、獨立的目標,如果一個用例包括多個目標,則可再逐層細化出子用例。

3)邊界,用矩形表示

邊界將系統內外分開,參與者在外面,用例在里面。邊界內的用例,就是系統要實現的事情。

一個系統的好壞,常取決于邊界是否清晰,即明確做什么、不做什么。邊界內的事,是系統的任務;如沒有特定條件推動,系統與外界沒有聯系。

設計產品時,一出現自相矛盾、疑惑的問題,往往可能是不知不覺偏離了最初的定位,跑到邊界外部。

因此,做產品要多回歸定位,檢查產品有沒有越界。一個好的產品,是界限分明的,做什么不做什么從不含糊。

4)關系,用常見的箭頭連線

UML 中關系挺多的,常用的有關聯、包含、擴展、實現四種。

  1. 關聯關系,一般由參與者指向用例,意味著參與者發起用例。當然,也有少數情況,是用例指向參與者,如推送消息,是系統自動觸發用戶。
  2. 包含關系,指一個用例包含了子用例,由父用例指向子用例。請注意,父用例并不等于所有子用例之和,它的范圍可以大于所有子用例。子用例是一定會執行的。
  3. 擴展關系,指一個用例在某種情況下需要完成特定活動,由擴展用例指向被擴展用例。與包含關系不同,擴展是特殊分支,在特定情況下才出現的支流,如電商的訂單退款。
  4. 實現關系,連接用例與用例實現,表示一個用例可以有哪幾種實現方式。

5)用例表,圖形之外的文字補充

除了畫圖,UML 中用例圖還會寫用例表,以描述說明用例,內容包括用例名稱、用例描述、參與者、前后置條件、基本流程等。

3. 用例圖的類型

在 UML 中,用例圖的常見類型,有業務用例圖系統用例圖

1)業務用例圖

業務用例圖,是從業務的視角,對業務進行描述。即描述沒有新系統或產品前,業務是如何進行的。

UML 使用業務用例圖,旨在把業務描述清楚,發現業務問題和目標,新系統才能更好地解決問題,實現業務目標。

簡單需求,很少畫業務用例圖;復雜需求,用這個思路分析,更好發現業務問題,保證產品需求不跑偏。

2)系統用例圖

一般說用例圖,默認指系統用例圖,它描述參與者使用新系統或產品做什么事,從而實現業務目標。

它是從業務用例分析推導出來的,是新系統的藍圖、開發范圍。

從業務用例如何分析、推導出系統用例呢?下面的案例馬上講到。

三、如何畫用例圖

畫圖是為了表達、傳遞信息,當我們畫用例圖時,本質是在分析業務場景、系統功能性需求,并描述出來。

因此,與其說學如何畫用例圖,不如說是在學如何分析,用例圖只是分析的結果。

下面,我將通過用一個簡單的案例,把這個分析過程,一步步展示出來。

以手機話費充值業務為例,假設我們接到一個需求,要開發一個話費充值 APP ,為用戶提供充值服務。

常規做法,接到需求,會想到去調研業務、研究競品,列出功能結構圖,再畫流程圖,很快就能畫原型,寫 PRD 。

對于簡單的產品,這么做沒問題。但碰到復雜的系統,就得有一套好的分析思路和方法工具。

用例圖,可以幫我們從業務場景分析入手,理清業務,逐步推導出系統功能。

具體怎么做呢?我總結了這 3 步。

1. 分析業務場景,找出人、事、物、目標

如今,我們早已離不開手機,為了能上網、打電話,要用手機就得有話費。

這個業務的“人”比較好找,就是普通手機用戶。目標,是為了保證手機可用,得充話費。

充話費,我們可以去微信充值、也可以去支付寶,或用運營商的 APP 。

由此,得出充值話費的幾種實現方式,而我們要做一個充值 APP,便是實現方式之一。

△?充值話費業務用例實現

2. 分析業務流程,細化目標,得出業務用例圖

明確業務用例的實現方式,我們挑典型的微信充值來研究,以便了解業務。拿出手機,打開微信手機充值,體驗一番,把整個流程理出來。

△ 微信手機充值過程

當我們從用戶的視角,繪制出微信充值的流程后,不難發現這個過程中,大致可分為兩個階段。

一個是充值,這個過程不能中斷,一斷充值就不成功,所以,可以得到一個小目標:充值話費。

一個是查結果,支付完成后,不一定馬上有結果,但基本都會成功,這時用戶可選擇離開;還有一種場景,發現話費快用完了,查什么時候充值的??梢?,查看結果目標也相對獨立。

△ 用戶視角下的微信手機充值活動圖

有上面的分析,我們可以把兩個有完整目標的活動集合,歸納為兩個業務用例:充值話費、查看結果。

再把視角縮到充值過程,充值得支付金額,而支付一般是通用的,供其他模塊使用,在系統內部看相對獨立,可抽出來,作為子用例。

當查看結果時,發現話費并未到賬,需要聯系客服處理,雖然這不多見,但偶有發生,所以是一個特殊情況下才會發生的支流,可作為擴展用例。

△ 微信手機充值業務用例圖

3. 由業務用例推導出系統用例

經過從場景到流程的分析,業務用例基本清楚。就到最關鍵的一步,推導出系統用例。

常用的推導方法有:映射、抽象、拆分、合并和補充等。

1)映射,指一種特殊的對應關系,可直接對應過去。比如,微信充值有“充值話費”用例,與我們要做的 APP ,目標一致,可直接映射。

這容易被誤以為是抄襲。實際上,如今大部分產品功能都類似,很少有完全創新的東西。如能從用例去分析,就知道為什么這個功能要“抄”,哪個不“抄”,“抄”了要不要改,改哪些。

2)抽象,是找共性,把有相同特征的歸納成一類。比方說,在微信充值中查看結果,但做個新?APP?,得考慮更多操作,這些屬于訂單的范疇,可歸納為“管理訂單”用例。

3)拆分、合并,把一些大的用例進行拆解,或小的用例進行合并,合并類似抽象歸納。

4)補充,根據實際情況,發現業務上沒有的,而新產品必不可少,則需要增加相應的用例來完成目標。例如,微信充值中,只能用微信支付,我們做 APP ,要支持多種支付方式,所以補充“支付寶支付”用例。

同理,還要補充“管理賬號”用例,用戶才能注冊登錄、查看自己的訂單。

經這一推導,新 APP 的參與者,也顯而易見:充值得有運營商支持;支付對接微信支付、支付寶;協助用戶處理未到賬,還需有運營人員介入??梢?,整個充值 APP ,還應包括后臺管理系統。

這些都是后續系統分析、梳理系統關系、設計系統架構的基礎。

為方便說明,我只簡化出核心部分,并把子用例合在一起展示。

充值 APP 系統用例圖

△?充值 APP?系統用例圖

至此,充值 APP 的系統用例圖就出來了。

有這份新系統的藍圖,就可以細化前端 APP 和管理后臺的用例,進而再分析系統流程、系統關系、設計產品功能。

這一路的分析推導下來,再畫原型圖、寫 PRD,你自然知道要寫什么,設計出來的功能,也更有依據、有邏輯,不容易被人以為是靠拍腦袋的。

四、總結

用例圖的基本用法,到此結束了,看累了吧?沒關系,我幫你小結下,記住這幾條就夠了。

1. 為什么要畫用例圖

用例是從用戶視角去思考的,學會站在用戶的角度去看產品,更能理解業務,表達清楚需求。

用例的本質,是場景化思維和系統思維的體現。畫圖的過程,實際上是在鍛煉我們的思維方式。?

2. 什么是用例圖

用例,是 UML 中用來捕獲功能性需求的一種方法,它從不同視角,描述不同角色用系統/產品做什么事,即什么人做什么事。

一個用例,就是參與者為完成某個特定目標的一系列活動或功能的集合。

用例圖,由參與者、用例、邊界、關聯構成,寫用例表,更完整。

用例圖,常見類型有業務用例圖和系統用例圖。

3. 如何畫用例圖

1)分析業務場景,找出人、事、物、目標。

2)分析業務流程,細化目標,得出業務用例圖。

3)由業務用例圖推導出系統用例圖。

常用推導方法有:映射、抽象、拆分、合并和補充等。

最后,不是所有需求都要畫用例圖,視情況而定。

用例作為一種需求分析方法,不管你在是否用到它,關鍵是理解它的分析思路和表達邏輯。

善用用例,可以提高我們在需求分析、產品設計中的理解、思考和表達能力,確保我們的輸出是高效、準確、有理有據的。

從學用例開始,以用戶之眼看產品。

從今天起,做個說人話的產品經理。

 

作者:四月;公眾號:四月喃嘩

本文由 @四月 原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 有點疑問,用例圖和產品功能結構是不是一一對應關系?

    來自四川 回復
    1. 不完全一一對應,用例圖是從使用者的視角出發,理出使用者要做的事。功能結構是從系統產品視角,抽象設計出哪些具體功能可以幫使用者完成那些要做的事。

      來自廣東 回復
    2. 如果系統用例和功能結構不能一一對應的話,從系統用例轉化到產品功能結構是否還要做一次轉化,細化?
      比如您上文案例中充值用戶使用的功能是否可以這樣轉化:
      系統用例→產品功能:

      充值話費→話費充值功能模塊
      →話費充值功能
      支付
      微信支付→微信支付功能
      支付寶支付→支付寶支付功能

      管理訂單→訂單管理功能模塊
      →查看訂單功能
      處理充值異?!渲诞惓L幚砉δ?/p>

      管理賬號→賬號管理功能模塊
      →查看賬號功能
      →編輯賬號功能

      來自廣東 回復
    3. 您好

      來自江蘇 回復
  2. 講解清楚,很實用!

    來自四川 回復
  3. 太棒了,學完直接可以實踐。

    來自北京 回復
  4. 四月老師,寫的很透徹,清晰,學習了

    來自浙江 回復
  5. 這玩意有流程圖清晰嗎

    回復
  6. 真不錯,易懂實用

    來自廣東 回復
  7. 收益匪淺,推薦一本書《軟件方法》,和作者說的方法一樣

    回復
    1. 感謝推薦,這就去找來學學

      來自廣東 回復
  8. 受益匪淺

    回復
  9. 作者寫的很好啊,學到了,有的時候做需求分析,總是感覺沒有合理的思路,不知道怎么改變種思維?

    回復
    1. 有意識地訓練自己,先按照UML的分析思路,邊做邊思考,做幾個項目下來,就會清晰一些。我也是這樣練習的,文中總結的思路,就是在長期實踐、看書之后,自己形成的思路。要改變或養成一種思維方式,需要一段時間的刻意練習,沒啥捷徑。

      來自廣東 回復