User Story Mapping
User Story Mapping
2022/02/26 (新增連結)
簡介
Jeff Patton (2013, 2014)提出User Story Mapping的概念,User Story Mapping包括兩個概念,第一個概念是User Story Map,第二個概念是應用User Story Map在敏捷的流程 (Mapping)。
What is Story Mapping? User Story Mapping 101 for Product Managers
Step 1: Frame the journey
Step 2: Build your user story map’s backbone
Step 3: Identify and group your cards
Step 4: Prioritise your activities and cards
How user story mapping helps teams stop relying on old designs
Creating user story maps (跟Patton所定義的有點不同,只有Epic及Story)
The 4 components of User story maps are:
Personas — Who is the user for this feature
Epic — These are large user stories which can be broken down into smaller user stories that has a common goal or objective
Story — Small lightweight user requirements. This often resides within an Epic
Sprint — It is a time boxed period when the team works on Epics or a set of user stories to complete a goal
Patton(2014)的User Story Mapping包括
User Story Map
將User Story以Map的方式整理
User
可以是一個、可以是多個(共用同一個Activity)、可以是系統
User Activity
User Task
User Story
產生User Story Map的過程 (Mapping)
從概念到交付的過程
Opportunity
Discovery
Delivery
Validate
Release
應用User Story Map在敏捷的流程 (Mapping)
構思問題 (Frame)
描繪及對照整體圖像 (Map the Big Picture)
探索 (Explore)
分割出釋出策略 (Slice Out Viable Releases)
Product Roadmap Prioritization (with User Story Mapping)
分割出學習策略
建造、量測(驗證/validate)、學習
分割出開發策略 (Slice Out a Development Strategy)
每個release再分三個交付階段
![](https://www.google.com/images/icons/product/drive-32.png)
2021/10/26 (更新內容)
構思問題
描繪及對照整體圖像
產生user story
整理user story
切割功能
User Story Map
有時候的需求內容是相對的較大的,有些人(如: Mike Cohn)會把較大的故事稱為史詩(Epic),通常這些Epic很大沒辦法排進一個Sprint,所以,這樣的需求被排進Sprint時,就必須被拆解為更小的故事(Story)(詳參: Story Splitting Cheat Sheet)。
Beck (1999) 也提到了類似的觀念,認為每個Story可以包括很多個Task,不過,有點不同的是,這裡的Task包括技術性的任務,如:更新資料庫。Beck & Andres (2004)則更進一步將需求區分為Theme、Story、Task,每個Theme可以包括很多個Story,每個Story可以包括很多個Task。Theme的概念大概就跟Epic很像,是由很多story組成,每個Story的規模則是不超過一個iteration,大概是一兩週以內的工作量,每個Task的規模則是幾天左右的工作量。
5 letters for better User Story splitting: The S.P.I.D.R acronym for User Story splitting recharged (++)
Spike
some user stories need a bit of technical research before being considered ready for development. Its output might help for better splitting the user story or it can reassure the way it was already split.
Paths
a single story can have many paths -flowcharts and activity diagrams are drawn to represent these paths. Each branch of the diagram might represent a new user story.
Interfaces
a single UI can have many functionalities in it or even the styling can iterate it.
Data
what if the feature supports different types of data, or if some data should not be supported -in this sense a user story can be split by data type.
Rules
business rules that might be identified for a feature
++
refers to technical stack that can affect a software feature, it can go from technical standards to technical rules to technical limitations to different technologies
Jeff Patton(2013, 2014)將這樣的概念稱為User Story Map(詳參: User Story Mapping、Story Mapping Quick Reference、User Story Quick Reference),把不同程度的User Story做一個對應關係 (詳參: 使用者故事對照),Jeff Patton把Epic又分為User Activity(較大) 及 User Task (較小),最小的就稱為User Story。在規劃release時,雖然,會直覺的認為同一個User Task下的User Story應該排在同一個release,但是,不是如此,應該要以每個release的目標來安排。
Forget the WBS — in Agile, You Need a VBS (Value Breakdown Structure)
Initiative — (sometimes called a Roadmap) a collection of Epics that drive toward a common goal
Epic — (sometimes called a Feature) a large body of work that can be broken down into a number of smaller items (called Stories or Tasks).
Story or Task — Stories (often called User Stories) capture functional requirements that are valuable from a user perspective, while Tasks capture anything that can be of value to the team working on them. (** 只分兩層,跟Patten的說法不太一樣)
例如:
訂貨 (user activity)
尋找產品 (user task)
依類別尋找產品 (user story)
依關鍵字尋找產品 (user story)
推薦商品 (user story)
看產品資訊 (user task)
看產品詳細資訊 (user story)
比較產品 (user story)
加入購物車 (user task)
加入購物車 (user story)
註冊 (user task)
一般註冊 (user story)
以facebook帳號註冊 (user story)
以google帳號註冊 (user story)
登入 (user task)
一般登入 (user story)
以facebook帳號登入(user story)
以google帳號登入 (user story)
下訂單 (user task)
下訂單 (user story)
帶入使用者資料並下訂單 (user story)
User Story Mapping
Patton(2014)的User Story Mapping包括
應用User Story Map在敏捷的流程 (Mapping)
構思問題 (Frame)
描繪及對照整體圖像 (Map the Big Picture)
探索 (Explore)
分割出釋出策略 (Slice Out Viable Releases)
尋找較小的可行釋出版本
尋找的方法
差異化因子
讓產品有別於競爭對手的功能
破壞者
對抗他人差異化因子的功能
成本減少者
減少組織成本因子的功能
入場籌碼
在市場上競爭的必要功能
分割出學習策略
從學習觀點看釋出策略,驗證我們的想法並從中學習
甚麼是學習策略
從討論你的機會開始
驗證問題
製作原型以學習
注意人們說他們想要什麼
建造以學習
反覆進行直到可行
三步驟
建造
進行最小可行產品實驗
量測
產生主觀與客觀的資料
學習
產生更好的想法
分割出開發策略 (Slice Out a Development Strategy)
每個釋出(release)再分割為三個以上的交付階段
開局 (Opening Game) builds a “functional walking skeleton”
中局 (Mid Game) complete all major functionality
終局 (End Game) refines the product
參考資料
我們的目標是什麼(Why),為了達成目標需要哪些人(Who)去怎樣(How)影響,為此我們需要做什麼(What)。
User Stories Quick Reference (Patton, 2013)
Stories: Concept to Delivery
Opportunity
Output:Opportunity Backlog
Opportunity Assessment
Who & Benefit / Cost
Prioritize opportunities
Discovery
Output:Product Backlog
Product discovery
What problems are we solving, and for who?
What solutions will customers and users value?
What are usable solutions?
What’s feasible to build given the time and tools we have?
Delivery
Output:Selected backlog items & acceptance criteria
Product Team Planning
Story Workshop
Story details and acceptance criteria
Backlog refinement or Backlog grooming meeting
Validate
Enough to test with users
Release
Enough to release
Story Mapping Quick Reference (Patton, 2013)
Frame
Before mapping, create a short product or feature brief to frame and constrain what you map. Think of this as the big story.
What
Who
Why
Map the Big Picture
Focus on getting the whole story
Start with the user type most critical to your product’s success
Identify user activities
Add in additional users
Explore
Fill the body of your story map
Use this phase to think “blue sky” about all the great possibilities
Involve others
Slice Out Viable Releases
Slice your map into holistic product releases that span the users and use of the product.
For each release name the target outcomes and Impact.
For each release, identify product success metrics.
Slice Out a Development Strategy
Slice the first release of your map into three or more delivery phases
Opening Game builds a “functional walking skeleton”
Mid Game complete all major functionality
End Game refines the product
Plan the work necessary to refine stories
Workshop stories with developers and testers to work through details and agree on acceptance criteria.
Plan development and testing.
Build and verify parts of working software.
Story Map Process (Patton, 2014)
構思問題 (Frame)
描繪及對照整體圖像 (Map the Big Picture)
探索 (Explore)
分割出釋出策略 (Slice Out Viable Releases)
分割出學習策略
建造
進行最小可行產品實驗
量測
產生主觀與客觀的資料
學習
產生更好的想法
分割出開發策略 (Slice Out a Development Strategy)
更好的待處理事項 (Patton, 2014)
從機會開始
針對機會進行對話
深入探索、丟棄它或考慮它
機會不該是委婉之詞
故事對照與機會
可使用Journey Map
挑剔一點
發掘 (Discovery)
利用發掘建立共識
構思想法
檢視公司為何建造這個軟體,它是針對誰,以及如何量度成功與否
瞭解客戶和使用者
建立Persona
建立故事地圖或Journey Map
具體設想你的解決方案
故事地圖
UI原型
最小化計畫
用來分割的故事地圖
利用發掘驗證學習
運用同理心、聚焦、發想、原型、測試
Design Thinking
更好的建造 (Patton, 2014)
精煉、定義和建造
使用者故事就像打隕石
從你所建造的一切學習
YOW! 2014 Jeff Patton - User Story Mapping: Discover The Whole Story (49:57)
Agile Requirements Snail: Feature to User Story to Scenario
Feature (Epic)
User Story
Scenario (Acceptance Criteria)
完整性的檢查
利用CRUD檢查是否有遺漏的user story
如果I want的內容一致,兩個user story可以合併,如果I want的內容不一致,應該分為兩個user story
排優先順序: 1-3 1:high, 2:medium, 3:low
預估難度
以費氏數列: 1, 2, 3, 5, 8, 13
以1~10分難度
在Adzic (2011)提到有公司把user story切到很小的規模,所以,只用1,2,3,5,後來甚至只用1,2或3就夠了。
Agile Development: Story Mapping
內容似乎是從以下文章中整理出來的
Story Mapping, Visual Way of Building Product Backlog
Story Map Structure: Goals > Activities(Features) > Tasks(Epics) > Stories
Alternative ways of structuring story map
User > Goals > User Journeys > Actions > Stories.
NFR (non-functional requirements) > Requirement > Story.
A Guide to User Story Mapping: Templates and Examples (How to Map User Stories)
What I Learned from User Story Mapping (and how most people do Agile wrong)
工具
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)