AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

实施领域驱动设计团队的文档指南

  • 2013-05-30
  • 本文字数:808 字

    阅读完需:约 3 分钟

对于做一个新软件项目的团队来说,应该做的第一件事就是绘制情境图(context map),帮助他们理解情境和核心领域是什么,以及他们可能需要与哪些其他情境交互。最重要的就是要让所有与开发这个软件相关的人员都对领域有一致的理解, Paul Rayner 是一位顾问和教练,作为对问题的回应,它说明了实施领域驱动设计的团队应该创建什么类型的文档。

Paul 以终为始,先理解为什么我们要创建文档;每种文档的目标是什么? 考虑一下你的受众,并让你的文档适应他们的需要。读者是偏向技术层面还是业务层面呢,这是面向技术还是面向业务的文档呢? 正如 Paul 写到: “尊重你的受众”。
另一个重要的问题与时间相关: 这个文档是要当前在团队开发软件的时候为其提供支持,还是要支持将来的开发?

对于支持开发中的团队的情况,Paul 建议持续记录文档(作为持续进行、即时、活动的文档)而不是创建(一次完成不再改变的)文档,那更可能会保持文档正确而值得信任。
对于将来的开发,Paul 考虑到,在代码、支持性测试或者其他产品特别是与文档相关的内容中找不到相关的知识。没有这种知识文档,就没有人真正知道系统最终会是什么样子。

Paul 发现敏捷团队通常更喜欢使用轻量级的方法,来描述系统需要做什么,而不喜欢更详细的需求说明书。详细说明书的一个问题在于,设计决定通常做出得过于匆忙,对领域和技术的知识都准备不足,从而使设计与实现分离。Paul 引用了 Mary Poppendieck 的话:

经常看到的现象是,详细的需求列表和故事的 backlog 实际上都是业余选手所做的很糟糕的系统设计。

BDD
Paul 是使用 BDD 工具来为系统创建实时文档的狂热分子。他倾向于使用 Cucumber 工具,因为它使用的方式可以把普遍的语言和技术实现分离开来。

Paul Rayner 是一位经验丰富的设计教练和领导力导师,擅长 DDD、BDD 和精益与敏捷过程。在 DDD Exchange 2012 上,Paul 发表了演讲: 驱动建模漩涡的领域场景

查看英文原文: Documentation Guide for Teams Doing Domain-Driven Design

2013-05-30 01:291827
用户头像

发布了 340 篇内容, 共 135.3 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

大数据ELK(九):使用VSCode测试分词器

Lansonli

ELK 10月月更

在vue的v-for中,key为什么不能用index?

bb_xiaxia1998

Vue

从特斯拉人形机器人亮相看AI人工智能模型落地面临的两个难题

felix

落地 机器人 AI人工智能

mysql中的事务隔离级别序列化如何实现

知识浅谈

MySQL 隔离级别 10月月更

浅谈云原生安全

HummerCloud

云原生 云安全 云原生安全

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

多线程——死锁的原因和解决方案

StackOverflow

编程 多线程 10月月更

React面试:谈谈虚拟DOM,Diff算法与Key机制

beifeng1996

React

When allowCredentials is true, allowedOrigins cannot contain the special value ___ since that cannot be set on the _Access-Contr

共饮一杯无

Java springboot 10月月更

启动 Hello Spring Security Boot 应用

HoneyMoose

计算机网络——MAC地址、IP地址

StackOverflow

编程 计算机网络 10月月更

【牛客刷题-算法】 NC19 连续子数组的最大和

清风莫追

数据结构与算法 10月月更

能不能手写Vue响应式?前端面试进阶

bb_xiaxia1998

Vue

【愚公系列】2022年10月 Go教学课程 015-运算符之赋值运算符和关系运算符

愚公搬代码

10月月更

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

【牛客刷题-算法】1-算法入门-数据结构-栈

清风莫追

算法与数据结构 10月月更

Java中的自旋锁和适应性自旋锁是什么意思?其分类依据是啥?

wljslmz

Java 自旋锁 10月月更 适应性自旋锁

【结构体内功修炼】结构体内存对齐(一)

Albert Edison

C语言 结构体 10月月更 内存对齐

Go学习之路-1.认识GO语言

子不语Any

Go 后端 10月月更

Qt解压带有密码的加密文件

中国好公民st

c++ Qt Company 10月月更

测试

乌龟哥哥

9月月更

腾讯云搭建wordpress网站超详细介绍

乌龟哥哥

9月月更

多线程(进阶)

StackOverflow

编程 多线程安全 10月月更

spring-cloud-kubernetes与SpringCloud Gateway

程序员欣宸

Kubernetes spring-cloud 10月月更 spring-cloud-kubernetes

大画 Spark :: 网络 (8)-Spark 网络中的“四次握手”Driver 如何获取 Executor 的 EndpointRef 烧脑

dclar

大数据 hadoop spark 源代码 spark源码

操作系统导论:分页

小白钊钊

操作系统 java; 10月月更

linxu入门指令

乌龟哥哥

9月月更

GaussDB(DWS)如何实现实时,批量和交付式查询一站式开发

乌龟哥哥

9月月更

问:React的setState为什么是异步的?

beifeng1996

React

【牛客刷题-算法】 NC13 二叉树的最大深度

清风莫追

二叉树 数据结构与算法 10月月更

【CSS】:什么是z-index属性?该属性有哪些取值类型?

翼同学

CSS 前端 样式设置 10月月更

实施领域驱动设计团队的文档指南_架构_Jan Stenberg_InfoQ精选文章