什么是DoD原則?
在之前文章中我們提到了,每個(gè)Sprint都要驗(yàn)收才能算結(jié)束,而驗(yàn)收標(biāo)準(zhǔn)遵循DoD原則。那么究竟什么是DoD原則呢?我們將在本文為您詳細(xì)講解。
一、什么是DoD?
當(dāng)你有兩個(gè)或更多的人參與同一個(gè)事情的時(shí)候,我們的“團(tuán)隊(duì)”就產(chǎn)生了,這時(shí)我們最重要的事情,就是要設(shè)定和統(tǒng)一團(tuán)隊(duì)的期望值;在本文中,這就是“完成標(biāo)準(zhǔn)”。
一個(gè)迭代做完后,團(tuán)隊(duì)要進(jìn)行驗(yàn)收,來(lái)決定本個(gè)迭代是否完成。
但每個(gè)團(tuán)隊(duì)對(duì)于是否完成無(wú)法達(dá)成統(tǒng)一,有的認(rèn)為編碼完成,就表示任務(wù)完成了;有的認(rèn)為還需要簡(jiǎn)單自測(cè)一下,確保功能可以正常使用;還有的認(rèn)為需要把自動(dòng)化用例寫(xiě)完并測(cè)試通過(guò)才算完成。
為了避免這個(gè)問(wèn)題,在敏捷軟件開(kāi)發(fā)中,常用Definition of Done“完成的定義”來(lái)表示工作是否已完成,不同的活動(dòng)有不同的完成定義。
首先要知道:所有的DoD都不是一成不變的,在隨著時(shí)間的推移、經(jīng)驗(yàn)的積累、成員的變更、項(xiàng)目的變更,我們的DoD也會(huì)有很大的不同,所以我們也需要定期地檢查和改進(jìn)。
二、DoD的分類
有了上面的思想準(zhǔn)備,我們?cè)賮?lái)看下面的DoD定義,就會(huì)覺(jué)得并沒(méi)有那么難了。
1. 迭代DoD
最典型的是迭代DoD,這也是最初DoD應(yīng)用的地方。
常見(jiàn)的一些規(guī)則有:
- 所有代碼通過(guò)靜態(tài)檢測(cè),嚴(yán)重問(wèn)題都已修改,靜態(tài)分析的規(guī)則參見(jiàn)……
- 所有新增代碼得到人工評(píng)審;
- 所有完成的用戶故事都有對(duì)應(yīng)的測(cè)試用例;
- 測(cè)試用例都已執(zhí)行;
- 所有完成的用戶故事得到Product Owner的驗(yàn)證。
2. 發(fā)布DoD
對(duì)于發(fā)布,一般就有更加嚴(yán)格的要求,發(fā)布DoD的典型條款有:
- 完成發(fā)布規(guī)劃所要求的重點(diǎn)需求;
- 至少通過(guò)一次全量回歸測(cè)試;
- 修復(fù)所有等級(jí)為1、2的缺陷;3、4級(jí)缺陷不超過(guò)20個(gè)。
3. 版本DoD
版本DoD就是針對(duì)每個(gè)版本上線前后的一些規(guī)則,比如:
- 產(chǎn)品文檔已全部更新;
- 代碼已部署到產(chǎn)品服務(wù)器上;
- 運(yùn)維在驗(yàn)收測(cè)試環(huán)境上冒煙通過(guò);
- 原始需求提交人對(duì)功能已經(jīng)驗(yàn)收通過(guò);
- 對(duì)運(yùn)維、市場(chǎng)、客服的新功能培訓(xùn)已完成。
4. 每日DoD
其他典型的DoD有每日DoD,典型條款有:搭建每日構(gòu)建環(huán)境,晚上自動(dòng)靜態(tài)代碼檢查、編譯、部署和測(cè)試,每日修復(fù)前一日構(gòu)建和測(cè)試發(fā)現(xiàn)的缺陷和問(wèn)題。
- 下班前必須檢入當(dāng)天編寫(xiě)的代碼,check in的backlog要填寫(xiě)清晰;
- 當(dāng)天的代碼必須在當(dāng)天或者第2天邀請(qǐng)同伴進(jìn)行代碼評(píng)審;
- 檢入的功能代碼必須要有對(duì)應(yīng)的單元測(cè)試(嚴(yán)格采用TDD);
- 每天晚上觸發(fā)靜態(tài)代碼檢查、自動(dòng)化回歸測(cè)試;
- 當(dāng)天持續(xù)集成、構(gòu)建環(huán)境中的問(wèn)題,請(qǐng)當(dāng)天解決。
5. 用戶故事DoD
還有針對(duì)用戶故事(或者用例)的DoD,比如:
- 用戶故事最終的描述符合INVEST
- 用戶故事得到測(cè)試用例的對(duì)應(yīng)覆蓋
- 用戶故事得到對(duì)應(yīng)的自動(dòng)化測(cè)試用例
- 用戶故事得到PO試用并初步認(rèn)可
當(dāng)測(cè)試集比較大的時(shí)候,無(wú)法在1天之內(nèi)完成測(cè)試,可以開(kāi)展每周全量回歸自動(dòng)化測(cè)試,這樣就有每周DoD,典型條款有:
- 上上周發(fā)現(xiàn)的缺陷是否解決;
- 上周新增功能的自動(dòng)化測(cè)試是否加入到每周測(cè)試集。
Tips:DoD 必須是團(tuán)隊(duì)在項(xiàng)目啟動(dòng)時(shí)共同討論出來(lái)的,團(tuán)隊(duì)愿意共同遵守的原則,一旦確定,團(tuán)隊(duì)就應(yīng)共同遵守。
三、DoD的實(shí)用價(jià)值
1. DoD是對(duì)軟件有價(jià)值的活動(dòng)的清單
DoD是一個(gè)簡(jiǎn)單的清單,包含了一系列的活動(dòng)。
例如:編碼、加注釋、單元測(cè)試、集成測(cè)試、發(fā)行聲明、設(shè)計(jì)文檔等等,所有這些活動(dòng)都能夠給產(chǎn)品帶來(lái)實(shí)際的價(jià)值。使用DoD,可以讓團(tuán)隊(duì)集中在那些必須完成的事情上,同時(shí)讓那些無(wú)用的,僅僅使軟件開(kāi)發(fā)變得復(fù)雜的活動(dòng)被消除掉。
3. DoD是團(tuán)隊(duì)成員的主要狀態(tài)參考依據(jù)
對(duì)于迭代最簡(jiǎn)單形式的匯報(bào)就只有一句話:“這個(gè)feature完成了”。
畢竟,一個(gè)feature或者一個(gè)product Backlog Item的狀態(tài)只有兩種:完成或未完成 。
DoD是對(duì)“feature完成了”這句話的最佳補(bǔ)充。使用DoD作為參考標(biāo)準(zhǔn),團(tuán)隊(duì)成員可以迅速有效地讓其他團(tuán)隊(duì)成員或PO了解狀態(tài)。
3. DoD不是不變的
DoD隨著時(shí)間會(huì)改變。
組織的幫助和團(tuán)隊(duì)能力的增加可以移除掉更多障礙,使得更多的活動(dòng)可以包含到sprint或者feature的DoD中來(lái)。
4. DoD是一個(gè)可以被審視的列表
feature/用戶故事在sprint plan meeting和sprint中都可以被拆分成task。
DoD可以用來(lái)衡量是不是所有的主要工作都被計(jì)劃在內(nèi)的(剩余的時(shí)間),而且,在一個(gè)feature或者sprint結(jié)束的時(shí)候,DoD可以用來(lái)考查是不是所有的必須的增值活動(dòng)都已經(jīng)完成了。
必須引起注意的是:DoD本身也是存在缺陷的。并不是所有的增值活動(dòng)都可以應(yīng)用到每一個(gè)feature上面,而DoD本身是一個(gè)大而全的檢查事項(xiàng)的審核制度。團(tuán)隊(duì)需要基于一個(gè)feature來(lái)審視每項(xiàng)增值活動(dòng)是否適用于這個(gè)feature。
比如說(shuō):追求用戶體驗(yàn)對(duì)于web服務(wù)這樣的feature來(lái)說(shuō)可以加分,但是對(duì)于其他的一些feature來(lái)說(shuō)就是不必要的了。
最后需要注意的是:對(duì)于驗(yàn)收標(biāo)準(zhǔn),并不一定是由Product owner決定,要根據(jù)顯示情況而定,每個(gè)團(tuán)隊(duì)都要根據(jù)自己的情況選擇合適的DoD原則。
#專欄作家#
袁林,人人都是產(chǎn)品經(jīng)理專欄作家。分享SaaS運(yùn)營(yíng)和企業(yè)管理/協(xié)作/辦公的相關(guān)知識(shí)
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議
文章寫(xiě)得很好,很多小伙伴不是缺乏動(dòng)力,而是對(duì)驗(yàn)收標(biāo)準(zhǔn)(目標(biāo))理解不一致
不錯(cuò)