DDD的基本概念 — 通用语言与界限上下文

在进行系统开发的时候,非常容易导致歧义的是不同人员对于同一个概念的不同描述。

比如用户说”我想要商品可以被删除”,开发人员就开发了一个使用Delete语句把商品从数据库中删除的功能;

后来用户又说”我想把之前删除的商品恢复回来,开发人员就会说”数据已经被删除了,恢复不了”,用户就会生气地说”Windows系统文件删除都能恢复,你们删除的怎么就恢复不了呢?”。

这其实就是开发人员和用户对于”删除”这个词语的理解不同造成的。

再如,电商系统的支付模块的开发人员和后台管理模块的开发人员聊了许久关于”用户管理的”功能,最后才发现支付模块开发人员说的”用户”指的是购买商品的”客户”,而后台管理模块开发人员说的”用户”指的是”网站管理员”。

从上面两个例子我们可以看出,在描述业务对象的时候,拥有确切含义的、没有二义性的语言是非常重要的,这样的语言就是”通用语言”。

在应用DDD的时候,团队成员必须对于系统内的每一个业务对象有确定的、无二义性的、公认的定义。

通用语言离不开特定的语义环境,只有确定了通用语言所在的边界,才能没有歧义地描述一个业务对象。

比如,后台管理模块中的”用户’和支付模块的”用户”,就处于不同的边界中,它们在各自的边界内有着各自的含义。

界限上下文就是用来确定通用语言的边界的,在一个特定的界限上下文中,通用语言有着唯一的含义。

在学习DDD的时候,我们需要了解很多的名词,比如领域、子域、实体类、值对象、聚合等,尽管这些概念比较晦涩难懂,但是所有学习和应用DDD的人员拥有同样一套通用语言,所有人员都用同样的通用语言进行表述和沟通,可以减少误解。

同时,DDD中的这些概念也是在DDD这个界限上下文中才有这些含义的,在其他界限上下文中可能就有其他含义了。

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部