第九堂課延伸 : Agile Scrum 中 DoR 和 DoD 的差別與介紹

DoR & DoD:敏捷開發的雙保險!

在 Scrum 敏捷開發中,Definition of Ready (DoR)Definition of Done (DoD) 是確保開發順利進行的兩大關鍵標準——一個負責「準備好開始動工」,另一個確保「東西真正的完成」

Definition of Ready (DoR) 是什麼?

DoR 代表一項任務、用戶故事(User Story)或需求,在進入 Sprint 或開發階段前,必須達成的一組清晰標準。它確保團隊在開始工作時擁有足夠資訊、資源和共識,減少開發過程中的返工與阻礙。

通常在 Sprint Planning 規劃會議Backlog Refinement 會議 中,團隊會和 PO 一起確認任務是否符合 DoR,確保它的細緻度足夠,可以讓開發團隊順利執行。

DoR 的核心作用

提升準備度:確保開發前資訊完整,避免模糊需求。
減少浪費:避免因需求不清或資源不足導致的返工與延遲。
促進團隊共識:讓開發、測試與產品團隊對目標達成一致。

常見的 DoR 標準

每個團隊的 DoR 可能不同,但常見標準包含:

📌 第一點 : 需求清楚

  • User Story 符合 INVEST 原則(獨立、可協商、有價值、可估算、小而可測試)。詳細介紹可看下面的 補充說明 INVEST 原則
  • 有清晰的 驗收標準(Acceptance Criteria),明確成功條件。

📌 第二點 : 設計與技術準備完成

  • 初步的技術設計、解決方案已討論。
  • API、數據模型、依賴關係已明確定義。

📌 第三點 : 優先級明確

  • PO(Product Owner)確認需求價值,且已經排定優先順序。

📌 第四點 : 依賴問題解決

  • 其他模組或資源的依賴關係已排除,不會阻礙開發。

📌 第五點 : 範圍 & 影響明確

  • 團隊清楚需求的範圍,以及對系統和用戶的影響。

📌 第六點 :相關資料準備就緒

  • 參考文件、設計草圖、用戶場景等輔助資料齊全。

補充說明 INVEST 原則

INVEST 原則 是敏捷開發中用來衡量 User Story(用戶故事) 質量的標準,確保需求具備良好的結構,能夠順利開發與測試。

🔍 INVEST 代表六個關鍵原則:

  • I – Independent(獨立性)
  • N – Negotiable(可協商性)
  • V – Valuable(有價值)
  • E – Estimable(可估算性)
  • S – Small(小而適中)
  • T – Testable(可測試性)

I – Independent(獨立性)

每個 User Story 應該能獨立開發、測試與交付,不應過度依賴其他需求。

  • 好處:能提高開發靈活度,避免卡在前置需求而無法推進。
  • 示例
    不佳:「作為使用者,我希望能夠在登入後查看訂單詳情。」(依賴登入功能,無法獨立開發)
    :「作為使用者,我希望能夠查看我的訂單詳情。」(訂單詳情可先獨立開發,不受登入狀態影響)

N – Negotiable(可協商性)

User Story 不應該被視為「固定的規格書」,而是可以根據需求、技術可行性與優先級進行調整

  • 好處:開發團隊可以參與需求探討,透過討論找到更好的實現方式。
  • 示例
    不佳:「報表功能必須以 Excel 下載,並使用固定格式。」(需求過於剛性,可能有更好的解決方案)
    :「使用者應能下載報表,格式可以根據需求調整。」(允許與開發團隊討論最佳方案)

V – Valuable(有價值)

User Story 應該能為使用者或業務帶來明確價值,避免純技術性的開發項目。

  • 好處:確保開發的功能對用戶或業務真正有意義,優先處理能帶來價值的項目。
  • 示例
    不佳:「開發新的後端 API。」(技術性敘述,無法清楚展現價值)
    :「作為用戶,我希望能夠搜尋歷史訂單,以便快速找到過去的消費紀錄。」(清楚表達使用者的價值)

E – Estimable(可估算性)

User Story 應該具備足夠資訊,使開發團隊能夠進行時間與工作量的估算

  • 好處:讓團隊能合理安排 Sprint 計畫,避免估算困難導致時間超支。
  • 示例
    不佳:「優化搜尋功能,讓它更快。」(需求過於模糊,無法估算工作量)
    :「將搜尋功能的回應時間從 3 秒減少到 1 秒,透過索引優化或快取機制實現。」(具體且可估算)

S – Small(小而適中)

User Story 應該足夠小,以便在一個 Sprint 內完成,避免過於龐大導致難以開發與測試。

  • 好處:讓開發可以更快完成、測試與交付,保持敏捷迭代的節奏。
  • 示例
    不佳:「開發完整的會員系統,包括註冊、登入、密碼找回、個人資料管理。」(過大,應拆分)
    :「開發會員註冊功能,包括 Email 驗證機制。」(範圍小,能獨立完成)

T – Testable(可測試性)

User Story 應該有明確的驗收標準(Acceptance Criteria),以確保能夠被測試並驗證功能是否符合需求

  • 好處:減少溝通誤差,確保開發完成後能夠驗證是否符合預期。
  • 示例
    不佳:「使用者應該能收到通知。」(模糊,如何測試?何時通知?)
    :「當使用者的訂單狀態變更時,系統應發送 Email 通知,且通知內容包含訂單號與狀態。」(明確可測試)

INVEST 整理表

原則說明好處
I – 獨立性User Story 應該能獨立開發與交付避免受前置任務影響,提高開發彈性
N – 可協商性需求不是死板的規格書,可與團隊討論最佳方案增加開發靈活度,找到更高效的解決方式
V – 有價值需求應能對使用者或業務帶來價值確保開發的功能真正對使用者有幫助
E – 可估算性需求資訊充足,使開發團隊能夠估算工作量避免開發進度失控,讓計畫更可預測
S – 小而適中User Story 應該足夠小,能在一個 Sprint 內完成讓開發更快完成,減少任務過大帶來的風險
T – 可測試性需求應具備明確的驗收標準,以便測試與驗證確保開發完成後可驗證,降低溝通誤差

💡 掌握 INVEST 原則,讓 User Story 更加清晰、可執行,確保開發流程順暢!🚀

Definition of Done (DoD) 是什麼?

如果說 DoR 確保 「準備好開始」,那 DoD 則是確保「完成得妥當」

DoD 代表一項任務在開發完成後,必須滿足的一組標準,以確保交付的產品符合品質要求、可交付且可驗證。

DoD 的執行者主要是開發團隊,確保最終交付的成果能達到「真正的完成」,避免「做好了但還不能用」的狀況。

DoD 的核心作用

確保品質標準:降低技術債,確保產品穩定性。
避免未完成的交付:確保「完成」的功能可驗證且可用。
促進透明與對齊:讓整個團隊對「何謂完成」有一致認知。

常見的 DoD 標準

視團隊與 PO 的溝通共識可能會有以下這幾種不同層次的 DoD 標準,也會隨著團隊越來越成熟,DoD 的完成標準越來越高。

📌 功能已開發完成 : 程式碼編寫完成並通過 Code Review。
📌 單元測試通過 : 符合預期行為。
📌 整合測試完成 : 確保與其他模組正常運作。
📌 驗收標準滿足 : PO 或測試團隊確認功能符合需求。
📌 已部署到測試環境 : 並通過基本測試。
📌 文件更新 : 包含 API 文件、操作手冊、變更記錄等。

DoR vs DoD:誰負責?

DoR(準備好開始)DoD(完成交付)
時間點進入 Sprint 或開發前開發完成、交付產品時
目標確保需求明確、開發準備就緒確保功能已開發、測試並可交付
負責人PO & 團隊 共同確認開發團隊 確保品質

實際應用建議

🚀 DoR:在 Sprint Planning & Backlog Refinement 會議中,檢查是否達到標準,避免需求模糊影響開發效率。
🚀 DoD:透過看板(如 Jira)標記完成標準,確保所有交付物滿足品質要求,避免未完成的「半成品」流入產品中。
🚀 定期回顧與優化:隨著團隊成熟度提升,DoR & DoD 也應該持續調整,讓流程更加流暢。

結論 Recap

DoR:確保 「準備好開工」,避免需求模糊導致混亂。
DoD:確保 「交付真正完成」,避免未完成的功能影響品質。
一起用 DoR & DoD 打造高效敏捷團隊,讓開發流程更順暢! 🚀