敏捷开发中的 DoD 和 DoR 是什么?

article/2025/9/26 6:44:52

在敏捷开发中,让所有成员保持目标统一、步调和节奏一致非常重要,但是在团队协作中,认知偏差却在所难免。需求在不同环节中流转,是否存在某种途径能保证所有成员的理解一致,将偏差最小化?

今天跟大家介绍敏捷开发中共识建立的两大神器:DoR 和 DoD。

画板 1.png

一、 DoR 是什么?

DoR = Definition of Ready,即对「准备就绪」的定义,是敏捷开发中把控研发质量的第一道门。DoR 关注研发起点的质量,定义了用户故事可以被研发团队接受并进入开发阶段的最小要求,是需求准入的标准。

DoR 的价值在于,它规范了开发对象的质量底线,能够有效防止开发侧的资源、时间或精力的浪费:如果一个待开发的用户故事不符合 DoR 要求,那么研发团队有权将其退回,不在最近的迭代中开发它。

01 Garbage In, Garbage Out

引用 Brian Will 的观点:“用户故事「准备就绪」非常重要——将不完整或未优化的用户故事放入冲刺中会出现问题,因为它会遵循「Garbage In, Garbage Out」原则:如果开发人员处理的是不够详细或定义不充分的用户故事,他们就不会产生高质量的代码。”

Brian 认为一个「准备好的 Ready」待办事项应该是清晰、可行和可测试的。

  • 清晰(Clear) 意味着团队所有成员能够对同一个用户故事达成共同的理解。通过协作编写用户故事,并为高优先级添加验收标准,需求的清晰度可被提高。
  • 可行(Feasible) 要求用户故事能够依照 DoD 在一个冲刺中被完成,否则,该故事需要被进一步分解。
  • 可测试(Testable) 指用户故事可以使用某种方法确定其是否按照预期工作。验收标准确保每个故事都是可测试的。

02 DoR 的参考例子

  • 用户故事符合 INVEST 原则
  • 用户故事是清晰的
  • 用户故事是可测试的
  • 用户故事是可行的
  • 用户故事已定义
  • 用户故事验收标准已定义
  • 用户故事依赖已明确
  • 用户故事已由开发团队做过粒度划分
  • Scrum 团队已接受 UI 原型设计
  • 指定场景的性能指标已明确
  • 指定场景的可扩展性指标已明确
  • 指定场景的安全指标已明确
  • 验收用户故事的人已明确
  • 团队都清楚用户故事所表达的意思

二、 DoD 是什么?

DoR 关注待开发的用户故事,而 DoD 则更多地聚焦待发布的价值增量。

DoD = Definition of Done,译为完成定义,是用于把控研发质量的第二道门。它是需求准出的标准,通常呈现为一份清单形式的简短文档,定义了用户故事被视为「完成」所需要达到的最低验收条件,常由产品负责人 PO 和开发团队共同协商决定。

DoD 通过建立通用的标准,确保团队每位成员对价值增量的完成具有相同的理解,避免了团队内外潜在的认知偏差;同时,清单内容还能提升团队的信息透明度,辅助工作点数的评估和计划制定,推进故事的完成。

01 DoD 的内容范围

在敏捷开发中,「完成」意味着「无需进行更多工作,可直接交付」,因此 DoD 内容至少应涵盖设计、编码、集成、测试和记录等全套产品开发流程。
Brian Will 指出 DoD 通常会说明以下内容:

  • 用户故事所处的操作环境和集成级别(哪个特定版本的 Linux、Android、iOS 或浏览器)?
  • 需要输出什么级别的文档(自动生成的 Javadoc,还是完整的终端用户手册)?
  • 有什么质量期望(用于演示的基本功能,还是功能完整且健壮的应用程序)?
  • 有什么安全期望 (无需安全审查,还是需要从代码审查、代码扫描到网络安全配置等各方面都要进行安全审查)?
  • 有什么可扩展性期望 (用于演示的 10 个并发,还是扩展至10 万个并发用户)?

02 DoD 的不同维度

Scrum 联盟按照需求的不同层次,将 DoD 分成三种级别:用户故事DoD、冲刺DoD 和发布DoD。

用户故事DoD,也称功能/需求DoD。它声明了故事可交付的底线,即用户故事应完成哪些事情才可以被判定为开发完成,达到可交付的标准。用户故事DoD 的制定可以从以下两方面考虑:

  • 用户故事的描述及拆解符合 INVEST;
  • 用户故事有验收标准,即 Acceptance Criteria。

冲刺DoD,或迭代DoD,定义了每个 Sprint 需要完成哪些事情,其输出才是可交付的。通常包含以下内容:

  • 所有代码通过静态检测,严重问题都已修改;
  • 所有新增代码都经过 Code Review;
  • 所有完成的用户故事都通过测试;
  • 所有完成的用户故事得到 PO 的验证。

发布DoD 定义了增量交付的最低要求,可以参考以下内容辅助制定。

  • 完成发布规划所要求的必须具备的需求;
  • 至少完成一次全量回归测试;
  • 符合质量标准 (Quality Gate),譬如所有等级为 1、2 的缺陷均已修复,3、4 级缺陷不超过 10 个;
  • 有发布通知,即 Release Notes;
  • 有用户手册;
  • 产品相关文档已全部更新;
  • 代码已部署到发布服务器上,并冒烟通过;
  • 原始需求提交人完成 UAT;
  • 对运维、市场、客服的新功能培训已完成。

此外,在子任务层面,敏捷团队也可以通过开发任务DoD 更好地规范任务完成,比如:

  • 代码已经提交到 Git;
  • 代码通过单元测试;
  • 代码经过 Code Review;
  • 代码通过集成测试。

03 DoD 的参考例子

  • 代码已完成(所有代办事项已经完成编码)
  • 代码已注释、已提交,版本库当前版本能正常运行
  • 结对检视已完成(或者采用结对编程),代码符合开发标准
  • 构建没有错误
  • 单元测试全部通过
  • 部署到测试环境并通过系统测试
  • 通过 UAT(用户验收测试)并签字确认符合需求
  • 任何编译/部署/配置变化都已实现/记录/沟通
  • 相关文档/图表已完成或已更新
  • 任务剩余的小时数已设置为 0,任务已关闭

三、 Liga 总结

  1. DoR 把控研发起点,是需求准入的标准。用户故事必须符合团队要求才能进入待开发列表。
  2. DoD 把控研发终点,是需求准出的标准。它定义了价值增量交付的最低验收条件,适用于所有用户故事。
  3. Garbage in, garbage out. 敏捷团队必须严格把控需求准入的标准,才能更顺利地推进后续工作,保证研发质量。

参考资料

  1. https://resources.scrumalliance.org/Article/definition-dod
  2. https://www.linkedin.com/pulse/definition-ready-dor-vs-done-dod-brian-will

「LigaAI」的趣味分享与敏捷实践, 请关注 LigaAI@CSDN,持续接收更多干货分享~
进一步了解我们的产品,请访问 LigaAI -新一代智能研发协作平台


http://chatgpt.dhexx.cn/article/QH7uPJCv.shtml

相关文章

传播动力学--SIR模型及其应用

王道谊 2020年3月 1. 传播动力学 “道生一,一生二,二生三,三生万物。” ---《道德经》 所谓“不积跬步无以至千里”,任何变化都是由点滴变化决定并发展起来的。知道所有的微观点滴变化,就能够掌握宏观变化。点滴…

SIR传播模型的科普和预测

>关注公众号:大数据技术派,回复资料,领取1024G资料。 注:本文仅是个人对于几个疾病模型做的一些概念性描述(科普),并进行了简单的编程实现。切勿当做现实的行动指导。因为文章内容原因&#…

6.复杂网络实验六:SIR病毒传播模型(matlab)

一、SIR模型简介 在典型的传染病模型中,种群(Population)内的N个个体的状态可分为如下几类: (1)、易染状态S(Susceptible),即健康状态,可被感染的个体。 (2)、感染状态I(Infected),处于感染状态的个体还能够感染将康…

传染病SIR传播模型(搬运,含带MATLAB代码)

学习笔记之SIR传染病模型TOC 本文主要是对此篇文章代码部分的详解 function ysir(~,x)a0.8; %感染率0.8b0.2; %治愈率0.2y[-a*x(1)*x(2),a*x(1)*x(2)-b*x(2),b*x(2)]; end %t 为持续时间,%x为三维矩阵,其中x(1)为易感染者,x(2)为传染者&…

传染病模型(4)——SIRS模型和SIER模型及matlab具体程序

前言 常见的传染病模型按照具体的传染病的特点可分为 SI、SIS、SIR、SIRS、SEIR 模型。其中“S”“E”“I”“R”的现实含义如下: S (Susceptible),易感者,指缺乏免疫能力健康人,与感染者接触后容易受到感染; E (Ex…

信息传播模型——SIR的Python实现

本文通过Python语言实现SIR模型,并进行可视化,所用例子为足球俱乐部数据集。 author:xiao黄 缓慢而坚定的生长 我之前还写过SI和IC模型的Python实现及可视化,请点击传送门查看,希望对你们有帮助。 SIR模型是传染病模型…

疫情模拟中的SIR模型与扩展的SIRD模型

一.SIR模型 SIR模型起源于流行病学的研究,是模拟传染病动力学的经典模型。至今仍在流行病学中占据中心位置,核心在于微分方程。 SIR模型描述了流行病下三大人群:易感者 susceptible、感染者 infectious、痊愈者 recovered之间的关系。 SIR模…

基于SIR模型的疫情预测 matlab

基于SIR模型的疫情预测 庚子年 庚辰月 丁丑日,疫情从爆发到今天,已经有100多万人感染,而我国有一群这样的逆行者他们以自己的生命筑起了我国的防疫长城,鲁迅先生曾说“我们从古以来,就有埋头苦干的人,有拼…

python实现SI、SIS、SIR、SIRS、SEIR、SEIRS模型

传染病传播模型 SISISSIRSIRSSEIR(相比较贴合新冠状病毒)SEIRS 在家闲着无事,搜了一些关于传染病模型的知识,在此做个总结。 SI 最简单的SI模型首先把人群分为2种,一种是易感者(Susceptibles),易感者是健康…

流行病模型(SIR Model)

流行病模型(SIR Model) by : ZhuoFei, Zhou 首先定义一个函数bernoulli(p) #以概率p判断是否会被感染或恢复 function bernoulli(p::Number)if rand(1)[1] < preturn trueelsereturn falseend endbernoulli (generic function with 1 method)恢复所需的时间函数recovery_…

SIR模型与R模拟

SIR病毒模型R模拟 文章目录 SIR病毒模型R模拟[toc]1.SIR病毒模型2.R模拟 1.SIR病毒模型 SIR病毒模型的的三个字母分别为病毒传播过程中的三种状态&#xff0c;其中 S&#xff0c;表示易感染者&#xff0c;即没有被感染病毒的人群I&#xff0c;表示已感染者&#xff0c;即被感…

【python】SIR模型实现

SIR模型python实现 SIR模型是传染病模型中最经典的模型&#xff0c;其中S表示易感者&#xff0c;I表示感染者&#xff0c;R表示恢复者。SIR模型中&#xff0c;染病人群为传染的源头,他通过一定的几率把传染病传给易感人群,他自己也有一定的几率/可以被治愈并免疫,或者死亡;易感…

传染病模型(3)——SIR模型及matlab运行结果

前言 常见的传染病模型按照具体的传染病的特点可分为 SI、SIS、SIR、SIRS、SEIR 模型。其中“S”“E”“I”“R”的现实含义如下&#xff1a; S (Susceptible)&#xff0c;易感者&#xff0c;指缺乏免疫能力健康人&#xff0c;与感染者接触后容易受到感染&#xff1b; E (Exp…

关于SIR模型性质的进一步摘录

1 SIR模型的性质 又是成为SIR搬运工的一天。以下内容来自陈卫老师在《大数据网络传播模型和算法》。纯纯自我记录&#xff0c;不够美观不够细致&#xff0c;不喜欢看出门左拐。 1.1 SIR模型中的basic reproduction rate&#xff08;基础再生数&#xff09; R 0 R_0 R0​ 它是…

SIR模型II

SIR II (Epidemic modeling) by Zhuofei(fregoticloud.com) jupyter notebook link 在这个模型中&#xff0c;考虑一个在一定空间内的流行病模型。人只能与附近的人交互作用&#xff0c;所以给人在一定的空间里随机运动。 首先&#xff0c;在一个2维平面&#xff0c;随机游走&…

SIR信息传播模型

SIR信息传播模型 SIR模型及python复现SIR模型SIR数学模型传播动力学方程python实现 模拟社交网络中SIR模型的信息传播过程 SIR模型及python复现 SIR模型 SIR模型是传染病模型中的经典模型&#xff0c;可以用在传染病过程中的模拟预测&#xff0c;也可以用作抽象表达社交网络中…

SIR模型 matlab模拟

需要一个单独的m文件&#xff1a; %即写上三个微分方程 function ySIRModel(t,x,lambda,mu) y[-lambda*x(1)*x(2),lambda*x(1)*x(2)-mu*x(2),mu*x(2)]; 再进行作图 >> ts0:1:100; >> lambda0.00001; >> mu1/14; >> x0[45400,2100,2500]; >> […

SIR及SEIR建模的简单示例

目录 概述1.一些定义1.1 一些名词1.2 一些符号1.3 一些定义 2.方法论2.1 SIR2.2 SEIR2.3 代际传播2.3.1 传播矩阵 3 模型实现3.1 参数设定3.2 SIR&#xff08;1&#xff09;模型&#xff08;2&#xff09;参数&#xff08;3&#xff09;计算&#xff08;4&#xff09;绘图 3.3 …

SIR模型python实现

python新手&#xff0c;代码不规范之处敬请见谅&#xff0c;第一次发帖排版也不太懂&#xff0c;各位将就看。 参考&#xff1a; SIR模型和Python实现_阿丢是丢心心的博客-CSDN博客_sir模型 【保姆级教程】使用python实现SIR模型&#xff08;包含数据集的制作与导入及最终结…

SI,SIS,SIR,SEIRD模型

SI&#xff0c;SIS&#xff0c;SIR&#xff0c;SEIRD模型 因为个人工作需要系统地整理SI&#xff0c;SIR以及SEIR模型&#xff0c;故对三个模型进行原理介绍以及对比。文中关于SI&#xff0c;SIS&#xff0c;SIR的所有的截图都来自西工大肖华勇老师在慕课上的分享&#xff0c;…