要言不繁的DoD指南——敏捷開發(fā)
編輯日期 2018-11-09 閱讀次數(shù):1183 次
DoD(The definition of done:DoD)完成的定義、完成的標(biāo)準(zhǔn)或完成的準(zhǔn)則是敏捷開發(fā)方法中的一個(gè)重要概念,一個(gè)重要實(shí)踐。本文對(duì)DoD如何理解、如何定義DoD及其作用給了簡(jiǎn)明扼要的論述,供各位實(shí)踐者參考。
01
DoD的定義
可以從不同的維度理解DoD的定義:
1)DoD就是完成準(zhǔn)則,完成就是不需要再做其他任何事情,可以直接交付了。DoD就是100%完成,而不是99%,95%,90%的完成。
2)DoD定義了達(dá)成目標(biāo)的最小活動(dòng)集,不增值的、無(wú)用的活動(dòng)不在此清單上。
3)DoD就是產(chǎn)品的質(zhì)量活動(dòng)的標(biāo)準(zhǔn),代表了團(tuán)隊(duì)為保證交付質(zhì)量,對(duì)質(zhì)量投入的共識(shí)與承諾。DoD與用戶故事的驗(yàn)收標(biāo)準(zhǔn)不同。每個(gè)用戶故事都有自己的驗(yàn)收標(biāo)準(zhǔn),故事的驗(yàn)收標(biāo)準(zhǔn)是客戶可以感知的、對(duì)產(chǎn)品的外部質(zhì)量的要求,DoD是對(duì)產(chǎn)品內(nèi)部質(zhì)量投入的要求。
圖1: DoD與用戶故事的驗(yàn)收標(biāo)準(zhǔn)的關(guān)系
此概念也可以應(yīng)用到非敏捷的開發(fā)模式中,比如針對(duì)每個(gè)崗位定義每個(gè)任務(wù)的DoD。
02
DoD的分類
不同類型的DoD關(guān)注的宏觀層次不同。
1)故事DoD:每個(gè)故事完成了哪些事情才算這個(gè)故事開發(fā)完成,達(dá)到可交付的標(biāo)準(zhǔn)了?
2)迭代DoD:每個(gè)迭代的所有故事做到什么程度才算完成,完成哪些事情了,本次迭代的輸出才是可交付的?
3)發(fā)布DoD:每次交付完成了哪些事情,才是可以交付的?
每日DoD或每周DoD,每個(gè)團(tuán)隊(duì)可以根據(jù)自己的實(shí)際情況來(lái)裁剪,可有可無(wú)。
03
DoD的作用
1) 明確對(duì)完成的預(yù)期,確保項(xiàng)目中的內(nèi)外部的干系人對(duì)完成的含義達(dá)成理解一致;
2) 承諾的可視化,隱藏的、內(nèi)部的質(zhì)量投入對(duì)外暴露出來(lái),增強(qiáng)團(tuán)隊(duì)的透明性;
3) 避免快而臟的開發(fā)模式,不留技術(shù)債務(wù),不遺留問(wèn)題給后續(xù)迭代;
4) 作為迭代策劃的前提與約束條件,幫助我們合理估算工作量,制定切實(shí)可行的計(jì)劃;
5) 聚焦目標(biāo),減少不必要的活動(dòng),定義完成任務(wù)的最小活動(dòng)集合;
6) 在做計(jì)劃時(shí)判斷是否有遺漏的活動(dòng);
7) 在驗(yàn)收時(shí)檢查是否有遺漏的活動(dòng),比如作為sprint review的檢查單的一部分;
04
如何定義DoD
1)團(tuán)隊(duì)成員協(xié)商一致,并確保所有人都可視!
2)不要讓領(lǐng)導(dǎo)定義DoD!
3)在需求梳理會(huì)議或迭代策劃會(huì)議上定義DoD!
4)不同的活動(dòng)有不同的完成定義,要區(qū)別對(duì)待。
5)隨著迭代的進(jìn)展,逐步完善DoD。
6)在迭代回顧會(huì)議上是討論對(duì)DoD的優(yōu)化修改。
7)DoD越弱,欠債越多,后期風(fēng)險(xiǎn)越大。如圖2所示。
8)質(zhì)量投入的活動(dòng)要包含在DoD定義中,如各種測(cè)試、評(píng)審、重構(gòu)活動(dòng)等。
圖2:不完善的DoD會(huì)導(dǎo)致交付時(shí)的返工
05
DoD的案例
用戶故事的DoD案例:
① 所有的代碼都通過(guò)了單元測(cè)試,語(yǔ)句覆蓋率達(dá)到了100%;
② 所有的代碼要么做了結(jié)對(duì)編程,要么做了代碼評(píng)審;
③ 通過(guò)了工具的靜態(tài)檢查;
④ 所有的代碼都入庫(kù)了;
⑤ 完成了集成,并通過(guò)了自動(dòng)化測(cè)試;
⑥ 非功能性需求已經(jīng)測(cè)試通過(guò)了;
⑦ PO對(duì)照故事的驗(yàn)收標(biāo)準(zhǔn),認(rèn)可完成的功能;
⑧ 對(duì)應(yīng)的聯(lián)機(jī)幫助已經(jīng)完成;
迭代DoD案例:
① 所有完成的用戶故事都滿足了其驗(yàn)收標(biāo)準(zhǔn);
② 所有完成的用戶故事都滿足了用戶故事的DoD;
③ PO對(duì)集成后的功能做了確認(rèn);
④ 自動(dòng)部署的腳本經(jīng)過(guò)了測(cè)試;
⑤ 所有已知的缺陷都修復(fù)了,自動(dòng)回歸測(cè)試沒(méi)有發(fā)現(xiàn)缺陷;
⑥ 通過(guò)了性能測(cè)試;
發(fā)布DoD案例:
① 滿足了迭代DoD;
② 產(chǎn)品通過(guò)了全量回歸測(cè)試;
③ 已經(jīng)通過(guò)了用戶體驗(yàn)測(cè)試;
④ 交付給用戶的文檔都經(jīng)過(guò)了評(píng)審或測(cè)試;
⑤ 在客戶預(yù)期的環(huán)境中做了確認(rèn);
⑥ 未能按期交付的故事得到了PO的認(rèn)可;
⑦ 產(chǎn)品已經(jīng)自動(dòng)部署到生產(chǎn)環(huán)境中;
⑧ 對(duì)運(yùn)維、市場(chǎng)人員的培訓(xùn)已經(jīng)完成;
每個(gè)團(tuán)隊(duì)可以根據(jù)自己項(xiàng)目組的實(shí)際情況定義自己的DoD,以上的案例僅供參考