使用者故事是一個用來確認使用者和使用者需求的簡短描述,它從使用者的角度來描述使用者渴望得到的功能。一個好的使用者故事通常包括三個要素:
1. 角色:誰要使用這個功能;
2. 活動:需要完成什麼樣的功能;
3. 商業價值:為什麼需要這個功能,這個功能帶來什麼樣的價值。
使用者故事通常按照如下格式來表達:
• 英文:As a <角色>, I want to <活動>, so that <商業價值>
• 中文:作為一個<角色>, 我想要<活動>, 以便於<商業價值>
為了更好地管理和實現使用者故事,Ron Jeffries 提出了使用者故事的 3C 原則:
1. 卡片(card):使用者故事描述的傳統形式是手工書寫在小記事卡片上,寫上故事的簡短描述、工作量估算等。如今也可將需求文件中的需求點摘出,記錄在相關管理工具的【需求描述】裡,用簡潔凝練的語言完整呈現使用者故事的三要素;
2. 交談(conversation):卡片上記錄的使用者故事是可以進行討論和細化的,包括與利益相關人(客戶/使用者)、產品負責人及開發團隊之間更細化地討論使用者故事的可行性。經過會話確認後,使用者故事才能正式進入開發階段;
3. 確認(confirmation):透過驗收測試確認使用者故事被正確完成,由測試人員完成。測試人員在測試版本所關聯的用例列表裡執行用例,完成測試後生成測試報告,它是對使用者故事實現程度的最直接體現。如果用例執行失敗,可直接由此建立一個 bug,由開發人員進行二次開發和修復,直到測試透過。
同時,一個好的使用者故事還應具備六個特性(也叫 INVEST 原則):
1. 獨立性(Independent):要儘可能讓一個使用者故事獨立於其他故事,減少故事之間的依賴,因為依賴會使制定計劃、確定優先順序、工作量估算等變得困難,可透過組合或分解使用者故事來降低依賴性;
2. 可協商性(negotiable):使用者故事的內容應是可協商的,故事卡上只需有簡短描述,不包含太多細節,具體細節在溝通階段產出。若卡片上帶有過多細節,會限制與使用者的溝通;
3. 有價值(valuable):每個故事必須對客戶具有價值(無論是使用者還是購買方),讓客戶寫下故事是使其具有價值的好方法,當客戶意識到這不是契約且可協商時,他們會更樂意寫下故事;
4. 可估算性(estimable):開發團隊需要能夠估計一個使用者故事,以便確定優先順序、工作量和安排計劃。若開發團隊難以估計,可能是由於缺乏領域知識(需更多溝通),或故事太大(需將其切分成小些的);
5. 短小(small):一個好的故事在工作量上應儘量短小,最好不超過10個理想人/天的工作量,至少要確保能在一個迭代中開發完畢。使用者故事越大,在安排計劃、工作量估算等方面的風險就越大;
6. 可測試性(testable):一個使用者故事要是可以測試的,以便確認它是可以完成的,如果不可測試,就無法知道何時可以完成。
學習心得:
在學習張傳波老師關於 Scrum 的課程之後,我對敏捷開發有了更深入的理解和認識。
Scrum 作為一種敏捷開發框架,強調團隊合作、快速迭代和持續改進。透過張傳波老師的講解,我深刻體會到了其核心價值觀和原則的重要性。
Scrum 中的角色定義清晰而獨特。產品負責人負責明確產品願景和需求優先順序,確保團隊始終朝著有價值的方向前進;Scrum 主管則致力於消除團隊障礙,促進團隊高效協作;開發團隊成員則具備自我管理和跨職能的能力,共同為達成衝刺目標而努力。這種明確的分工和協作模式,避免了職責不清導致的效率低下。
衝刺規劃和每日站會等實踐環節讓專案進展更加透明和可控。衝刺規劃幫助團隊明確在短期內要完成的任務和目標,而每日站會則能夠及時發現問題、調整策略,保持團隊的同步和專注。
總的來說,張傳波老師的課程讓我對 Scrum 有了全面而系統的認識。在今後的工作中,我將積極應用所學,不斷探索和最佳化,讓 Scrum 真正為專案帶來更高的效率和更好的成果。