《实现领域驱动设计》笔记——上下文映射图

news2024/11/17 7:54:05

一个项目的上下文映射图可以用方式来表示。比较容易的一种是画一个简单的框图表示两个或多个限界上下文之间的映射关系。该框图表示了不同的限界上下文在解决方案空间中是如何通过集成相互关联的。另一种更详细的方式是通过限界上下文集成的源代码实现来表示。

  上下文映射图为什么重要

  上下文映射图主要帮助我们从解决方案空的角度看待问题。

  

  假定你期望大泥球维护团队提供一套新的API。然而,他们却并不打算这么做,或者他们根本就不知道你的想法。此时你的团队和大泥球维护团队的关系变成了 客户方-供应方 的关系。由于大泥球团队决定维持现状,你的团队不得不陷入一种遵奉关系中。这样的关系可能导致你的项目延期交付或者彻底失败。

  尽早绘制上下文映射图,这样可以迫使你仔细思考你的项目和你所依赖项目之间的关系。

  绘制上下文映射图

  上下文映射图表现的是项目当前的状态,如果项目会在将来发生改变,你可以到那时才对上下文映射图做出相应的更新。关注于当前的项目状态可以帮助你了解你正处的位置,并帮助你决定如何走出下一步。

  绘制一个上下文映射图并不复杂。通常,首选在白板上手绘映射图,此时你可以采用 [Brandolini] 的风格。如果你打算使用一个绘图工具来绘制上下文映射图,请注意不要把图画得太正式了。

  上图3.1中,图中限界上下文的名字和彼此之间的集成关系只是占位符而已,在真实的上下文映射图中,我们将代之以实际的名字。

  有时,我们希望对上下文映射图的某些特定部分进行放大,以向里面加入更多的细节,这只是从另外一个角度来看待同一个限界上下文。除了边界、关系和翻译,我们可以可能希望加入其他的一些内容,比如模块、聚合,或者团队的分布信息等。

  所绘制的所有映射图,包括文字,都可以装订在同一份参考文档中,只要这对团队是有价值的。在这个过程中,我们应该避免那些繁文缛节性的仪式,保持简单和敏捷。向框图中加入过多的细节对团队并无多大帮助,交流才是关键,我们应该将交流对话也加入到上下文映射图中。

  

  上下文映射图并不是一种企业架构,也不是系统拓扑图。但是,它可以用于高层次的架构分析,指出诸如集成瓶颈之类的架构不足。上下文映射图展现了一种组织动态能力,它可以帮助我们识别出有碍项目进展的一些管理问题。

  并不是说限界上下文边界一定得密不透风,而是:对于任何上下文边界,开发团队都希望协作上下文能够完全地控制所进所出,还包括进出的原因。否则,该上下文便会出现一些不受欢迎的“拜访者”。对于模型而言,这些“拜访者”通常会导致混淆和BUG。建模人员应该是友好的,但是友好的前提是秩序与和谐。任何进入边界的外部概念都应该持有充分的理由,甚至需要和边界内的模型保持良好的兼容性。

  在理解充分的情况下,要绘制上下文映射图并不难,但是通常来说,我们并不会将映射图中的所有内容都显示出来。在迭代过程中,思考和讨论可以帮助我们改进上下文映射图,比如对集成点进行改进,这将有助于描述限界上下文之间的关系。

  拥有自治服务的应用程序并不表示需要将上游系统的数据库复制到下游系统。数据库复制将迫使本地系统承担过多的职责,它需要创建一个共享内核,而这并不是真正意义上的自治。

  处理不可用的一个 好办法是将其显现出来。

  使用资源可用性状态的好处并不只是技术上的,还有商业上的。

  需要记住的是,对于一个非常详细的上下文映射图,我们很有可能无法对其进行实时更新。

文章转载自:Ruby_Lu

原文链接:https://www.cnblogs.com/afei-24/p/17848031.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1242695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

section header

section header table 是一个section header的集合,每个section header是一个描述section的结构体。在同一个ELF文件中,每个section header大小是相同的。 每个section都有一个section header描述它,但是一个section header可能在文件中没有…

小白也看的懂的爬取视频操作

1.获取一段视频 可以直接从抖音下,也可以从b站上爬取(注意法律谢谢) 保护原创 b站的视频 直接复制网址链接到哔哩哔哩(bilibili)视频解析下载 - 保存B站视频到手机、电脑 去就好了,

Python计算DICOM图像两点真实距离

Python计算DICOM图像两点真实距离 对比测量结果图Code对比测量结果图 DICOM阅读器(小赛看看)测量结果 python测量结果 Code import numpy as np import cv2 import math import pydicom from pydicom.pixel_data_handlers.util import convert_color_spaceds = pydicom.dc…

YOLOv5 分类模型 预处理 OpenCV实现

YOLOv5 分类模型 预处理 OpenCV实现 flyfish YOLOv5 分类模型 预处理 PIL 实现 YOLOv5 分类模型 OpenCV和PIL两者实现预处理的差异 YOLOv5 分类模型 数据集加载 1 样本处理 YOLOv5 分类模型 数据集加载 2 切片处理 YOLOv5 分类模型 数据集加载 3 自定义类别 YOLOv5 分类模型…

OpenCV入门10——特征点检测与匹配

文章目录 特征检测的基本概念Harris角点检测Shi-Tomasi角点检测SIFT关键点检测SIFT计算描述子SURF特征检测OBR特征检测暴力特征匹配FLANN特征匹配实战flann特征匹配图像查找图像拼接基础知识图像拼接实战 特征点检测与匹配是计算机视觉中非常重要的内容。不是所有图像操作都是对…

腾讯又出王炸产品!使用混元大模型进行数据报表测试

最近腾讯出了自己的大模型,命名混元。 现在已经开始内测,感谢腾讯小伙伴卢晓明同学帮我们提前申请到了内测机会,接下来我们用腾讯混元大模型与实际工作结合,开始我的报表测试之旅。 腾讯混元大模型官方入口:https://hunyuan.ten…

深入了解前馈网络、CNN、RNN 和 Hugging Face 的 Transformer 技术!

一、说明 本篇在此对自然语言模型做一个简短总结,从CNN\RNN\变形金刚,和抱脸的变形金刚库说起。 二、基本前馈神经网络: 让我们分解一个基本的前馈神经网络,也称为多层感知器(MLP)。此代码示例将&#xff1…

玻色量子“揭秘”之集合划分问题与QUBO建模

摘要:集合划分问题(Set Partitioning Problem)是一种组合优化问题,其中给定一个集合S和其若干个不同的子集S1,S2,...,Sn后,需要找到子集的有效组合,使得集合S的每个元素正…

高通Camera HAL3: CamX、Chi-CDK要点

目录 一、概述 二、目录 三、CamX组件之前的关系 一、概述 高通CamX架构是高通实现的相机HAL3架构,被各OEM厂商广泛采用。 二、目录 代码位于vendor/qcom/proprietary下: camx:通用功能性接口的代码实现集合chi-cdk:可定制化…

shell循环语句 for while until

目录 什么是循环语句 概念 for循环 格式 while循环 格式 until 循环 格式 实验 for (1)计算1到100的和 ​编辑 (2)100以内的偶数 (从0开始到100结束,每次加2步 打印的都是偶数) &…

ELK架构

经典的ELK 经典的ELK主要是由Filebeat Logstash Elasticsearch Kibana组成,如下图:(早期的ELK只有Logstash Elasticsearch Kibana) 此架构主要适用于数据量小的开发环境,存在数据丢失的危险。 整合消息队列Ngin…

Spring框架学习 -- 读取和存储Bean对象

目录 🚀🚀 回顾 getBean()方法的使用 根据name来获取对象 再谈getBean() (1) 配置扫描路径 (2) 添加注解 ① spring注解简介 ② 对类注解的使用 ③ 注解Bean对象的命名问题 ④ 方法加Bean注解 (3) Bean 注解的重命名 (4) 获取Bean对象 -- …

投标文件的注意事项

一、检查标书 1.1有时候标书需要从别的地方复制黏贴文件,记住复制内容可以,但是不要复制“落款和时间”的格式,落款和时间的格式借鉴你的招标文件中给响应文件格式的落款和时间,切记! 1.2检查标书是否有空页&#xf…

数据中心运维管理:从人工到智能需要走几步?

一切的变化来自于数据中心规模、复杂度、设备多样性的挑战,将运维平台的重要性推向历史高点。 此外,基于业务连续性方面的考虑,分布式数据中心成为越来越多客户的选择。 一、数据中心面临的挑战 运维管理分散,缺乏统一的管理 I…

Linux:设置Ubuntu的root用户密码

执行以下命令: 给root用户设置密码 sudo passwd 输入两次密码 切换root su root 退出root用户 exit

地埋式积水监测仪厂家直销推荐,致力于积水监测

地埋式积水监测仪是一种高科技设备,能够实时监测地面积水深度,并及时发出预警信息,有效避免因积水而产生的安全隐患。这种智能监测仪可以安装在城市道路、立交桥、地下车库等易积水地势较低的地方,以确保及时监测特殊地段的积水&a…

【Sorted Set】Redis常用数据类型: ZSet [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 目录 ⑤Redis Zset 操作命令汇总1. zadd 添加或…

APM工具skywalking部署

一 整体架构 整个架构,分成上、下、左、右四部分: 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是&…

css渐变详解(重复性线性渐变、径向渐变、重复性径向渐变的使用)

目录 线性渐变 重复性线性渐变 径向渐变 重复性径向渐变的使用 线性渐变 线性渐变是向下、向上、向左、向右、对角方向的颜色渐变。 其语法格式为: background-image: linear-gradient(side-or-corner|angle, linear-color-stop); 参数说明如下: …

mongo DB -- aggregate分组查询后字段展示

一、分组查询 在mongoDB中可以使用aggregate中的$group操作对集合中的文档进行分组,但是查询后的数据不显示其他字段,只显示分组字段 aggregate进行分组示例 db.collection.aggregate([{$group: {_id: "$field"}},]) 查询后显示 展开只显示两个字段 二、显示所有字段…