本文是今年1月份參加Agile1001公開課后,並參考《用戶故事與敏捷方法》這本書整理,閱讀全文
一、什么是用戶故事
用戶故事是描述對用戶有價值的功能,好的用戶故事應該包括角色、功能和商業價值三個要素。
用戶故事通常的格式為:作為一個<角色>, 我想要<功能>, 以便於<商業價值>。一個好的用戶故事包括三個要素:

二、如何編寫用戶故事

三、怎么拆分故事
當故事非常大時,我們將很難對它進行估計。如果故事預計在N次迭代后才進行,那么大的故事很正常。但如果估計預計在接下來的迭代中進行,那么我們就可能會對大的故事進行拆分。很大的故事基本上都能進行拆分,只要確定每個小故事都可以交付業務價值就行。注意在這里不要把故事拆分到任務,故事是可以交付的東西,是產品負責人所關心的,而任務是不可交付的東西,產品負責人對它並不關心,任務是在sprint計划會議上拆分的。
分割用戶故事:
1. 按照用戶故事所支持數據的邊界來分割大型用戶故事(例如導入GBQ文件、Excel等)。
2. 從主用戶故事中除去對例外或錯誤條件的處理(相當於用戶的基本路徑和擴展路徑),從而把一個大型用戶故事變小許多。
3. 按照操作邊界分割,把大型用戶故事分割成獨立的建立、讀取、更新和刪除操作(例如預算二次導入,或者新增時需要向導、規則而比較復雜時也可以單獨成一個故事來描述)。
4. 考慮去除橫切考慮(例如安全處理、日志記錄、錯誤處理等),為用戶故事建立兩個版本:一個具備對橫切考慮的支持,另一個不具備這種支持。
5. 考慮功能性需求和非功能性需求隔離到不同的用戶故事,從而分割大型用戶故事(性能)。
在拆分故事時,我們有時也需要考慮組合故事的場景,如把bug列入產品backlog時,可以把多個類似的bug組合成一個故事。
四、怎么評定優先級
最簡單的方法就是問問客戶最希望在下一個迭代中最想看到的是哪一些功能。從考慮的因素來看,我們可以從以下4個因素來考慮:
1. 獲取這些功能帶來的經濟價值,價值越高的優先級越高。
2. 開發成本帶來的影響。例如可能2個月后由於使用新技術只需要2周,而現在做需要2個月,這時可以考慮把優先級放低一些。
3. 獲取新知識的重要性。在開發中會不斷的產生一些項目和產品的新知識,及早了解和開發這些新知識可以減少不確定性,所以這類功能優先級會高些。
4. 故事之間會存在依賴關系,這時候被依賴的優先級會更高,需要先完成。
5. 開發這些功能所減少的風險。在開發過程中,會出現進度風險、成本風險、技術風險等,對於風險越高價值越大的我們需要首先處理,對風險高價值低的要盡量避免,可以通過以下圖查看確定功能優先級時綜合考慮風險和價值的關系。
五、怎么進行初始評估
對每個故事進行初始估計后就可以知道項目的規模。一般采用故事點來進行這類初始評估,可以通過撲克牌來進行,撲克牌點數一般有0、1/2、1、2、3、5、8、13、20、40、100、?、咖啡。首先由產品負責人對product backlog進行講解,然后由Scrum master負責協調進行初始評估工作。敏捷估算中不是要估計絕對的時間,而是盡量確保故事之間的相對估計是准確的。由於估計是相對的,所以需要首先找打 一個基准,我們可以先找一個不是最小的,也不是最大的來作為一個基准,可以先找出一個大家認為適合分配為2點的故事。在找2點的故事時,很可能會出現大家 意見不一致的情況,這時就需要大家都分別說明自己的見解后再重新找。有了2點基准后,就可以對每個故事進行評估了,而后面的故事都可以基於以前的故事來進 行相對估計了。在估計過程中,有可能會出現大家對故事理解不一致,這時就需要返回去修改故事,確保大家理解一致。
五、優秀的用戶故事准則
優秀用戶故事的一些准則:
1.試着讓故事的大小能夠在使用后讓用戶感到可以去喝杯咖啡休息一下;
2.不要讓故事過早涉及用戶界面;
3.實際編寫故事時,要包括用戶角色;
4.用主動語態編寫故事;
5.為單個用戶編寫故事;
6.讓客戶編寫故事,而不是開發人員;
7.用戶故事要簡短,它們只是提醒開發人員和客戶進行對話;
8.不要給故事卡添加編號。
本章小結
1、用戶故事是描述對用戶有價值的功能,用戶故事應該包括角色、功能和商業價值三個要素。
2、優秀的故事應該具備六個特征:獨立的、可討論的、 對用戶有價值的、可估算的、小的、可測試的
3、當故事非常大時,我們將很難對它進行估計,有必要進行故事拆分
4、故事優先級評定,最簡單的方法就是問問客戶最希望在下一個迭代中最想看到哪些功能。
5、故事評估一般采用故事點來進行這類初始評估,可以通過撲克牌來進行。