写点什么

使用领域叙事确定界限上下文

  • 2018-02-23
  • 本文字数:1183 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

界限上下文(Bounded Context)是采用领域驱动设计(DDD)工作方式中的一个核心理念。领域叙事(Domain storytelling)是一种发现领域中人与系统如何共事的方式,可用于识别各个界限上下文,以及它们之间是如何互联的。近期在阿姆斯特丹召开的DDD 2018 欧洲大会上,来自于 Workplace Solutions 的演讲者 Stefan Hofer Henning Schwentner 做了演讲。两位演讲者在使用领域叙事方式与领域专家开展对话上具有多年的经验。在他们看来,领域叙事是建模工具箱中额外添加的一种有用工具。

使用领域叙事,可让领域专家讲述自己的工作方式。他们讲述的故事使用了下面的象形语言、一组有差异的符号和文本注释做可视化展示:

  • 演员。例如一个人、一位客户,或者是汽车、船舶这样更技术化的事物。
  • 工作对象。例如文档或消息,也可以是更抽象的事物,例如运输路线。
  • 用箭头表示活动。

在通常情况下,符号是为适应领域而定制的。符号为人们提供了一种不同于交付情况的象形图。如有需要,可在图中添加文字,描述符号所代表的意义。使用符号和文字,最终构成了一些尽可能接近于自然语言的语句。然后将这些语句加入到图中,并使用数字标识顺序。一般情况下,如果能避开决策门户,那么故事总是仅涵盖某一个具体的例子。可视化绘图使领域专家能尽快看到一个故事中是否存在误解,并纠正其中的错误。

为了找出候选的界限上下文,Hofer 和 Schwentner 在故事中使用了指示符。具体的指示符例子包括:

  • 一个单向信息流。
  • 语言中的差异。例如,使用同一名称描述了不同的事物。
  • 对不同的部分使用不同的触发器。例如,部分工作需每日完成,而部分工作是按需完成的。

Hofer 认定,一旦发现了三种指示符,就找到了在两个不同上下文间的一个有效界限。但 Hofer 强调指出,这种方法只表明了存在界限的迹象,而非确证。虽然在故事中,单向信息流是界限的一种指示符。但如果我们对领域做深入了解,就可能会发现该信息流在其它故事中表现出更复杂的特性。因此,这样的信息流不能构成一种界限。

在 Hofer 和 Schwentner 看来,仅仅找出上下文间的界限是不够的,因为业务流程通常是一种跨界限的合作性工作。两位演讲者强调指出,找出界限的目标并非是要树立起一道墙壁,而是构建一种能分离上下文的模型,支持人们一起共事。他们需要分离模型,让所构建的软件易于理解且不易出错,所构建的系统可供不同的人使用。

Hofer 和 Schwentner 最后对演讲做了总结。他们指出领域叙事是一种有实用价值的工具,鼓励听众做尝试,并欢迎向他们反馈结果。

在大会中一个为期两日的研讨会上, Alberto Brandolini 介绍了由他创立的另一种称为“事件风暴”的建模工具。

大会的所有演讲录像将在下月发布。 DDD 2019 欧洲大会已经开始规划,准确日程尚未发布。

查看英文原文: Finding Bounded Contexts Using Domain Storytelling

2018-02-23 18:003125
用户头像

发布了 391 篇内容, 共 135.1 次阅读, 收获喜欢 256 次。

关注

评论

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

让容器应用管理更快更安全,Dragonfly 发布 Nydus 容器镜像加速服务

阿里云基础软件团队

云原生

百万年薪技术大佬的读书之旅

四猿外

Java 书籍推荐 书单 书单推荐 书籍

移动端堆栈关键行定位的新思路

移动研发平台EMAS

移动应用 应用崩溃 崩溃分析

React Ref 如何使用(译)

西贝

Java 翻译 React Hooks Ref

Appium常用操作之「微信滑屏、触屏操作」

清菡软件测试

跟Kafka学技术系列之时间轮

AI乔治

Java 编程 架构

微信小程序接口测试时appid为空如何解决

测试人生路

微信小程序 接口测试

嵌入式的我们为什么要学ROS

良知犹存

ROS

SpringBoot-技术专题-war包项目外置配置文件

洛神灬殇

音视频社交的应用和优势

anyRTC开发者

音视频 WebRTC 语音 直播 RTC

云原生时代下数据库管理工具的变革

BinTools图尔兹

数据库 sql 云原生 数据治理 工具软件

目标检测之YOLOv1

Dreamer

Amdocs收购OPENET:关于5G应用落地的思考

VoltDB

大数据 数据分析 5G 物联网

淘宝内测新内容社区淘宝逛逛:邀请B站UP主入驻打造流量池

石头IT视角

AI 科学家带你快速 Get 人工智能最热技术

京东科技开发者

人工智能

让你怀疑人生的重载和重写的区别

艾小仙

Java 编程语言

LeetCode题解:90. 子集 II,迭代,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

阿里五位大佬总结的操作系统+程序员必知硬核知识大全离线版pdf火了,在Github上获赞89.3K+,现已开源!

996小迁

架构 面试 操作系统 计算机

JVM垃圾回收与一次线上内存泄露问题分析和解决过程

AI乔治

Java 编程 架构 JVM 内存泄漏

《Among Us》火爆全球,实时语音助力派对游戏开启第二春

ZEGO即构

语音 游戏 RTC

SpringBoot-技术专题-Websocket消息推送和广播消息推送

洛神灬殇

腾讯安全披露多个0day漏洞,Linux系统或陷入“被控”危机

谈谈项目中主动full gc的一些问题

AI乔治

Java 编程 架构 JVM GC

LeetCode题解:90. 子集 II,迭代+位运算,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

高频面试题:秒杀场景设计

艾小仙

Java 面试 高并发 秒杀

SpringBoot- 技术专题 -Websocket+Nginx出现404问题

洛神灬殇

Java先驱者发布最新Java全栈面试“秘籍”,助力你吃透Java新特性!

Java架构追梦

Java 学习 编程 架构 面试

Java9 新特性 - 下篇

hepingfly

Java 新特性

低代码开发平台的敏捷之力

雯雯写代码

敏捷开发 低代码 信息化

震惊!线上四台机器同一时间全部 OOM,到底发生了什么?

AI乔治

Java 架构

零基础IM开发入门(四):什么是IM系统的消息时序一致性?

JackJiang

使用领域叙事确定界限上下文_语言 & 开发_Jan Stenberg_InfoQ精选文章