阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

  • 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:002939
用户头像

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

关注

评论

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

《零基础学 Java》 FAQ 之 4-关于补码,多说两句

臧萌

Java 补码

用 Electron 打包语雀

封不羁

Java Electron

大话区块链和比特币的技术原理

麦叔

比特币 区块链 数字货币 加密货币 加密解密

软件产品信息安全 - 数据分类

Interstate5

软件开发 信息安全 数据分类

webpack入门(一)

子铭

面向对象是什么

落英亭郎

面向对象

程序员的晚餐 | 5月9日 炖蹄髈

清远

程序员

人人都应该懂的加密算法 - 公钥加密

麦叔

对称加密 加密解密 信息安全 公钥加密

软件产品开发流程

Interstate5

软件开发 软件开发流程

程序员必需清楚的进程和线程

小趴菜~

线程 操作系统 进程

白话计算机网络通信过程

WB

程序员 计算机网络

HTTP 升级 HTTPS 全过程记录

猴哥一一 cium

https 证书

产品周刊 | 第 14 期(20200510)

八味阁

产品 产品经理 产品设计

Java内存模型和volatile、final等关键字

麻瓜镇

Java 多线程

权威与边界

伯薇

权威 边界 BART 工作方式

《你好架构师之 压榨硬件价值的利器容器(Docker)》

再见小飞侠

LeetCode 1232. Check If It Is a Straight Line

liu_liu

LeetCode

高仿瑞幸小程序 05 更正轮播组件的高度计算

曾伟@喵先森

小程序 微信小程序 大前端

《零基础学 Java》 FAQ 之 3-为什么计算机里的浮点数不精确

臧萌

Java 浮点数

给在线教学泼点冷水

启润

在线教育 基础教育

Redis学习笔记(集合类型)

编程随想曲

redis

小棉袄,最终却没有变成你的防弹衣

小天同学

个人成长 成长 感悟 母亲节 感恩

模块化设计思想产品设计应用

燕陈华

产品设计 模块化流程 流程图

Spring整合MyBatis详细分析

Java收录阁

mybatis

《如何阅读一本书》读书心得

兆熊

读书笔记

从nacos客户端的TIME_WAIT说起

捉虫大师

Java TCP nacos

《零基础学Java》 FAQ 之 零-这门课适合我吗?

臧萌

Java 编程语言

一口气带你踩完五个 List 的大坑,真的是处处坑啊!

楼下小黑哥

Java 踩坑 后端 集合

Java小想法: JDK许可证

X.F

Java 编程语言

Android Studio NDK 编译 Bsdiff 库

码农亮哥

android-studio ndk bsdiff

软件产品的信息安全问题

Interstate5

软件开发 信息安全

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