限界上下文
什么是限界上下文
限界上下文是一种语义上的上下文边界。意思是在这个边界内的软件模 型组件都有它独特的含义并且做特定的事。一个限界上下文内的组件都是上下文特定的并且语义明确的。
运营人员和用户对售卖机这个概念是有不同的概念的,如果要想让一个词具有单一的含义,那就需要明确是在那个上下文里。
- 自然语言具有模糊性: 甲:“你这是什么意思?”乙:“"没什么意思,一点小意思”
- 同一个事物面向不同场景有不同模型
- 软件系统需要分解模型以控制复杂性。 需要使用限界上下文来分解模型
如果不分解,就会得到下面的模型。系统会非常的难以实现和维护
- 限界上下文是分工的单位;模型分解之后,天然具备了高内聚、低耦合的特性。所以,团队的分工协作非常适合基于限界上下文进行。不同团队负责不同的限界上下文。
tip
在理想的情况下,子域和限界上下文是一一对应的 。子域属于问题空间,而限界上下文属于解决方案空间 。
在前期的分工阶段,是基于子域进行的,后期是基于限界上下文进行的。
如何划分限界上下文
- Domain Storytelling (领域故事陈述法)
- Event Storming(事件风暴法)
- 基于子域概念提取
Domain Storytelling 划分限界上下文
商品和售卖机在上图中出现了多次,每一次的含义都是有区别的。
对于售卖机来说: 运营投放售卖机、配送人员配送商品到售卖机、用户在售卖机上购买商品。运营、用户、配送员,他们眼里看的售卖机是一样的吗?当然不一样,运营看到的是容纳和消耗商品库存的容器、用户看到的是收钱吐商品的机器,而配送人员主要关注的是收货地址和操作手册。
对于商品来说,也是一样。所以这里最起码有三种限界上下文。
- 运营上下文
- 交易上下文
- 配送上下文
- 单向联系