敏捷DoD

“完成”的定义

虽然具体情况因组织而异,但“完成”的典型定义包括以下项目的检查清单:

代码已经进行了CodeReview
代码已经check in
代码已部署到测试环境
代码/功能通过冒烟测试
代码/功能通过回归测试
代码/功能通过安全测试
帮助文档已更新
功能已得到用户/需求方的验收

不同的公司和开发团队可能会提出自己的checklist,但它们都有着相同的理念:代码实现了需求所要求的功能,而且不会破坏其他任何东西。确保每个特性/发布/迭代都经历这些步骤是非常重要的。

ps. "功能已得到用户/需求方的验收" 严格意义来讲,算是敏捷DoD右移

谁来定义“完成”

Agile里面一般是由Scrum Master / 产品经理来定义。 最佳实践是,产品需求由产品经理来定义,技术类需求由Tech Leader来定义。

DoD vs 验收标准

验收标准是针对特定用户故事或功能的。这些标准应由产品经理定义,从时间上来看,被认为是在“完成”之前。 更简单的理解DoD 包含了Acceptance criteria

另一个重要的区别,DoD 更像是软件流程中的状态,便于迭代管理。例如:只有DoD的用户故事和功能才计入到生产率的统计

如何实施

  1. 定义过程应该是利益相关者和实施的人之间的协作过程,充分的讨论,并对最终产品/功能DoD达成一致。
  2. 为每个标准指定负责人,一旦在标准的实施过程中遇到问题,由负责人裁决和修正
  3. 每个标准应该尽可能的简单和简短,不易产生歧义
  4. 控制checklist的长度。不要追求“最高”标准,标准要切合组织实际情况
  5. 标准是可迭代的