產品經理如何繪制狀態流轉圖?
狀態流轉圖,可以讓需求的表達更直觀、更高效!那么,產品經理如何繪制狀態流轉圖?
在我剛入行的時候,我設計了一個優惠券的產品方案。對“優惠券使用邏輯”的需求描述如下:
- 用戶支付訂單時,選擇了1張優惠券,該優惠券在未取消支付前,其他的訂單不允許使用該優惠券;
- 若用戶支付成功,該訂單使用的優惠券進入已使用列表;
- 若用戶支付失敗或取消支付,該訂單使用的優惠券被釋放,其他訂單可以繼續使用該優惠券;
- 若用戶長時間不支付,導致優惠券過期,該優惠券不能再使用,用戶要么重新選擇可用優惠券,要么不使用優惠券;
- 若訂單支付成功后,發生退款,該訂單使用的優惠券作廢,不能再繼續使用,進入已失效列表;
- 若優惠券過期了,該優惠券進入已失效列表。
需求描述,自認為非常清晰、完整。可在跟開發需求評審時,他們卻表示沒聽懂,反饋需求信息量太大,短時間內難以消化。
他們提了好多的問題:
- 優惠券有幾個狀態?
- 初始狀態叫什么?
- 有幾個列表?分別放什么狀態的優惠券?
- 狀態是怎么切換的?
- ······
但由于我的準備不足,現場非常尷尬。最后,會議不得不提前結束。
明明自己的邏輯很清楚了,為什么開發還是聽不懂?是自己的表達的不夠清楚嗎?還是開發有意刁難我?
我一直都找不到解決方法,最后在同行朋友的建議下,我畫了一個狀態流狀圖:
我帶著這張狀態流轉圖,跟開發再講了一遍需求,半個小時就通過了需求評審。
狀態流轉圖解決了什么問題?
回頭看那段優惠券需求的文字描述,相信大部分人都一時半會理不清頭緒。不知道狀態從哪里開始,也不知道有多少個狀態,更不用說這些狀態是如何切換的。
人類的大腦,天然對圖形化的信息更敏感,圖形的表達力是遠遠大于文字的。這也是為什么人類的祖先,最先發明出來的文字是圖畫演化而來的象形文字的重要原因。
而狀態流轉圖中,每個節點表示一個狀態值,帶箭頭的線條表示狀態的流轉方向,線條上的文字表示狀態流轉的條件。狀態流轉圖,就是復雜邏輯的“象形文字”。
這一次的經歷讓我明白:一個50字的狀態流轉圖,就能把原本近300字的文字描述直觀、清晰地表達出來,并且開發還更容易理解。
這種效率的提升,是顯而易見的。
有了這個狀態流轉圖,無論是我們自己理解業務,還是跟開發講解需求,都能帶來事半功倍的效果。
狀態流轉圖,讓需求的表達更直觀、更高效!
如何繪制狀態流轉圖?
狀態流轉圖的繪制方法其實是很簡單的。我們就以優惠券狀態為例,說明如何完成狀態流轉圖的繪制。
第1步:根據業務流程,定義狀態值
因為狀態流轉圖是為了直觀的說明業務,所以我們在繪制狀態流轉圖時,必須要從業務出發,根據業務需要定義狀態值。
基于對業務的理解,我們給優惠券定義4個狀態:
- 待使用:優惠券的默認狀態,領取到的優惠券,默認都處于待使用狀態;
- 凍結中:由于支付時可能出現問題,為了防止已使用的優惠券回滾到待使用(不符合邏輯),我們定義一個中間狀態。根據支付的結果,決定優惠券的狀態如何流轉;
- 已使用:已經被成功使用的優惠券,被使用的優惠券有可能因為退款導致失效;
- 已失效:用于標記過期、或退款導致的失效優惠券。
定義狀態值時,還需要注意以下兩點:
- 精簡不必要的狀態。狀態越多,邏輯越復雜。不必要的狀態,還會增加用戶的認知成本,對業務也沒什么幫助;
- 定義的狀態值,必須是互斥的。不允許出現包含關系,也不允許出現交叉關系。否則無法準確地描述業務邏輯。
定義有限數量、必要的、互斥的狀態值,是繪制狀態流轉圖至關重要的一步。
第2步:明確狀態值的切換關系和條件
定義好狀態值后,我們需要明確所有狀態之間的切換關系及條件。
所謂的切換關系和條件是指:滿足什么條件,從當前狀態切換到另一個狀態。
分析優惠券使用的狀態切換關系和條件如下:
- 用戶支付訂單時,選擇了某張優惠券,該優惠券切換到“凍結中”狀態;
- 若用戶支付成功,該訂單使用的優惠券切換到“已使用”狀態;
- 若用戶支付失敗或取消支付,該訂單使用的優惠券切換到“待使用”狀態;
- 若用戶長時間不支付,導致優惠券過期,該訂單使用的優惠券切換到“已失效”狀態,用戶只能重新選擇可用優惠券;
- 若訂單支付成功后,發生退款,該訂單使用的優惠券切換到“已失效”狀態;
- 若優惠券一直未被使用,以至于過期,該優惠券切換到“已失效”狀態。
某些業務場景下,一個狀態切換到另一個狀態時,存在多個條件。有些是多種條件同時滿足時才能切換,有些是多個條件滿足一個即可切換。在梳理切換條件時,要區分清楚。
第3步:繪制成圖
將以上的過程,繪制成圖:
通過簡單的3個步驟,一個狀態流轉圖就繪制完成了。
這個狀態流轉圖,可以把優惠券使用的復雜邏輯直觀、高效地表達出來。
與業務流程圖有什么異同點?
狀態流轉圖與業務流轉圖一樣,都是為了更好地表達需求,提高溝通效率,但兩者是有很大的區別的:
- 關注點不一樣:狀態流轉圖更關注狀態的變化,業務流程圖更關注業務運作的過程;
- 目的不一樣:狀態流轉圖是為了便于理解同一個事物的不同形態及切換關系和條件,業務流程圖是為了便于理解業務發展過程;
- 圖的節點不一樣:狀態流轉圖的節點是狀態值,業務流程圖的節點是動作;
狀態流轉圖更宏觀,業務流程圖更強調細節。
在某個角度上看,狀態流轉圖是一種特殊的業務流程圖,是針對同一個事物的不同狀態,并對狀態切換之間的行為而構造。
總結
狀態流轉圖的繪制,也是一個熟能生巧的過程。在打基礎的階段,建議大家盡可能多繪制狀態流轉圖。
一個好的狀態流轉圖,能更直觀地描述需求,是產品方案設計中一種非常高效的表達工具。
本文由 @誓博 原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
自驅力
學習了
明白了!
看到評審人員的提出的問題,我就能跳出自己的知識陷阱,從旁觀者角度出發,提煉與功能最相關的狀態信息,并進行解釋。每當覺得沒什么好寫的時候,就把這篇文章找出來看一看。
您好,我們可以轉到公司的內網上嗎
可以的
其實就是狀態機~
感謝
在【待使用】前面加上【開始】,在【已失效】后面加上【結束】,整個圖表更易看懂。
其實就是UML狀態機圖,UML是需求分析的一大利器。
本來想給點個贊,卻發現沒有這個功能 ??
用圖不用表,用表格不用文字