Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

与 DDD 领域专家共事

  • 2016 年 6 月 06 日
  • 本文字数:937 字

    阅读完需:约 3 分钟

在 2016 年年初举行的领域驱动设计欧洲大会上, Cyrille Martraire 演讲中分享了他在DDD 驱动的环境中与领域专家共事的经验。他指出,在领域驱动设计中,与领域专家对话及所使用的语言是关键,这通常会因为所说的语言不同而出现困难。

Martraire 是“巴黎软件工艺社区(Paris Software Craftsmanship Community)”的创始人,同时也是 arolla 的联合创始人。他指出,要想与领域专家成功地对话,首先需要自学一些领域知识。做好功课,提前准备一些知识,例如读书或在互联网上查找信息。

在 Martraire 看来,展示一些领域知识是一种和专家建立信任及改善沟通的方式。以下是三种简单的方式:

  • 显得你真的很好奇,并展示你的知识;
  • 提出更好的问题,并随着对话进行改进它们;
  • 挑战,但要恭敬。

Martraire 指出密切注意词汇避免转换或其他曲解的重要性。他特别提到,积极聆听非常困难,所以他创建了一种他称之为 _Word Safari_ 的技术,从中他可以标记出所有出自领域专家之口的新词。然后,他就可以检查下它们是新概念还是同义词。他强调,这不仅仅是一个简单的技巧——注意 DDD 中使用的语言至关重要。

Martraire 发现,“引导对话(navigating the conversation)”是一项实用的技术。你可以将对话向上引导,引向一个更抽象的层次,总结并发现意图。这里的关键问题是“为什么”,通常要问多次。你还可以将对话向下引导,引向更具体的细节,这时,示例成了发现误解的一个重要手段。使用示例的一种方式是使用行为驱动开发(BDD)和专家一起描述具体的行为示例。第三种引导对话的方法是偏离对话主线,拓宽领域。有时候,这可以揭示出根本就没讨论到的环节。

让领域专家清楚地认识到,与你对话很安全,你没有计划窃取他们的工作,Martraire 认为这是一条特别重要的原则。这样做的一个结果是你什么东西都要求验证;最终,你和领域专家就领域达成共识。

这一切看上去很美好,也很简单,但根据 Martraire 的经验,有时候很难找到一位优秀的领域专家。他指出:

最差的领域专家是那些专业知识来自错综复杂的现有系统的专家。

同时,他还指出,他的经验可能有点片面,因为他通常是根据 DDD 潜力以及相关人员的整体心态选择项目。

明年的领域驱动设计欧洲大会将于2017 年1 月底举行。

查看英文原文 Working with Domain Experts in a DDD World

2016 年 6 月 06 日 19:002105
用户头像

发布了 1008 篇内容, 共 338.0 次阅读, 收获喜欢 319 次。

关注

评论

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

web自动化测试-puppeteer入门与实践

夏兮。

puppeteer

LeetCode题解:62. 不同路径,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

数据量大读写缓慢如何优化(5)【读缓存】

我爱娃哈哈😍

redis 缓存 架构设计实战 缓存设计

1480. 一维数组的动态和

小马哥

算法 七日更

开箱即用cypress

夏兮。

PO Cypress

week12-conclusion

J

程序员成长第八篇:做好测试工作

石云升

程序员 测试 2月春节不断更

11. 用别人写好的代码,完成我的工作,剩下的时间去摸鱼

梦想橡皮擦

Python 2月春节不断更 python入门

今日笔记

Nydia

CI-基于JMeter的性能测试

夏兮。

【活动回顾】4步2小时,搭建爆火的语音聊天室

ZEGO即构

第四章作业

Deborah

如何搭建自动化测试框架

夏兮。

js puppeteer automation

SonarQube&Gitlab-CI 实现静态代码分析

夏兮。

ci gitlab SonarQube

第十二周命题作业

cc

DO、DTO、BO、VO、POJO区别

安琪拉的博客

系统设计

分布式任务框架:xxl-job使用问题整理

程序员架构进阶

开源 分布式任务调度 七日更 2月春节不断更 XXL-JOB

翻译:《实用的Python编程》01_04_Strings

codists

人工智能 爬虫 后端 数据结构与算法 Python Monad

消息队列Kafka:入门基础

正向成长

kafka

【LeetCode】数组拆分Java题解

HQ数字卡

算法 LeetCode 2月春节不断更

自动化测试中的Page Object

夏兮。

Python PO selenium

sonarLint与IntelliJ IDEA 集成

夏兮。

日记 2021年2月16日(周二)

Changing Lin

2月春节不断更

【STM32】TIM---基本定时器

AXYZdong

硬件 stm32 2月春节不断更

这是我的第一次JavaScript初级技巧

我是哪吒

JavaScript 学习 程序员 大前端 2月春节不断更

Flink集群部署:Standalone部署

正向成长

Jacoco统计web接口/功能测试的代码覆盖率

夏兮。

tomcat WebService JACOCO

第十二周学习心得

cc

诊所数字化:诊所老板为什么拒绝预约制?

boshi

数字化转型 医院 七日更

深度讲解背包问题:面试中每五道动态规划就有一道是背包模型 ...

宫水三叶的刷题日记

深度思考 面试 LeetCode 动态规划 数据结构与算法

ElasticSearch.03 - 基本原理

insight

elasticsearch 2月春节不断更

GPU容器虚拟化:用户态和内核态的技术和实践详解

GPU容器虚拟化:用户态和内核态的技术和实践详解

与DDD领域专家共事_架构_Jan Stenberg_InfoQ精选文章