DDD - 理论到落地从统一语言开始

简介: DDD - 理论到落地从统一语言开始


1. 什么是统一语言

DDD 战略设计的第一步就是统一语言,也叫通用语言(UBIQUITOUS LANGUAGE),用于定义上下文的含义。

  • 定义:提炼领域知识的产出物,体现在两个方面:① 统一的领域术语;②领域行为描述。
  • 如何获取:统一语言就是需求分析的过程,也是团队中各个角色就系统目标、范围与具体功能达成一致的过程。
  • 强调统一:无论是与领域专家的讨论,还是最终的实现代码,都使用相同的术语。
  • 强调约束:既要有内涵也要有外延。

定义上下文的含义:在事件风暴中,通过团队交流达成共识的,能简单清晰准确地描述业务含义和规则的言语就是通用语言。

注意:通用语言贯穿 DDD 的整个设计过程。作为项目团队沟通和协商形成的统一语言,在说某通用语言时,必须要限定在某个上下文内,以确保每个上下文含义在它特定的边界内都有唯一的含义。

2. 通用语言从哪里来

如果我们长期处于某个领域的话,肯定会有一些俗语,俗话,术语,常用语,技术用语,活动概念。如果在领域专家和开发人员之间也能建立一种语言,是不是就可以让他们使用这种语言进行交流,进而解决沟通不顺畅的问题。

3. 通用语言与DSL

定义:领域特定语言(英语:domain-specific language、DSL)指的是专注于某个应用程序领域的计算机语言。又译作领域专用语言。 源自 Martin Fowler 大神的著作《领域特定语言》。

2.2 通用语言与DSL的关系

通用语言其实跟DSL有相通之处,都是着重表达某个领域的业务名词,术语。只是通用语言更偏向于业务分析建模。而DSL则偏向于使用计算机技术将通用语言进行落地,进行模块化,自动化,让计算机通过一定的规则实现通用语言所表达的业务代码生成。

2.3 参考文档

DSL的概念

前端DSL

百度百科

领域特定语言

3. 通用语言实例

下面列举一些领域的通用语言和术语,供大家参考:

3.1 电商领域

3.2 四色建模的通用语言

4. 小结

如果我们长期处于某个领域的话肯定会有一些术语,专用词,俗语来表达某个场景或者业务活动,或者人事物。这样的话我们需要通过这些通用语言来探索更深层次的业务语义。

通用语言需要做到:

  • 表意明确,不用过多解释就知道一个名词、一段话表达了什么样的业务语义且无歧义
  • 认知统一,使用通用语言的所有人都对该语言有一个统一的标准
  • 简单易学,学习成本不能太高,毕竟是为业务服务的

这种通用语言基于领域模型,领域模型其实是领域专家头脑中对该领域的一个整体认知,并不是一些图形化和文本化的东西,那些只是用来辅助理解的。

通过团队交流达成共识的能够简单清晰准确传递业务规则的语言(可以是文字、图片等)即可称为通用语言。

通用语言包含术语和用例场景,且能够直接反映在代码中。

基于通用语言,开发人员能够开发出可读性更好的代码,从而将业务需求准确转化为代码设计。达到DDD的目标代码即设计,设计即代码。通俗的讲,也就是开发人员写的代码领域专家也能看懂。

相关文章
真下饭!字节技术官DDD(领域驱动设计)手册,拆解业务代码首选
至少20年前,一些顶尖的软件设计人员就已经认识到领域建模和设计的重要性,但令人惊讶的是,这么长时间以来几乎没有人写出点儿什么,告诉大家应该做哪些工作或如何去做。尽管这些工作还没有被清楚地表述出来,但一种新的思潮已经形成,它像一股暗流一样在对象社区中涌动,我把这种思潮称为领域驱动设计(domain-driven design)。
|
存储 搜索推荐
知识体系化的必要性及构建通用体系的方法
知识体系化的必要性及构建通用体系的方法
362 0
|
缓存 前端开发 中间件
DDD 领域驱动设计落地实践系列:工程结构分层设计
前面几篇文章中,笔者给大家阐述了 DDD 领域驱动设计的三大过程,重点围绕如何通过战略设计与战术设计进行 DDD 落地实践进行了详细的讨论,但是还没有涉及到工程层面的落地。实际上所有的这些架构理论到最后都是为了使得我们代码结构更加清晰,从而开发出 bug 少、扩展性强、逻辑清楚的应用。因此本文就是为了解决 DDD 领域驱动落地实践最后一公里问题,将我们分析出来的领域模型通过与工程结构的映射实现真正的落地。
DDD 领域驱动设计落地实践系列:工程结构分层设计
|
8月前
|
设计模式 监控 算法
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
163 2
|
8月前
|
敏捷开发 监控 架构师
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(构建领域知识)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(构建领域知识)
213 0
|
5月前
|
设计模式 架构师 数据建模
架构师必备底层逻辑:设计与建模的技术深度探索
【8月更文挑战第13天】在软件开发的浩瀚星海中,架构师如同星辰指引,他们不仅规划着系统的蓝图,更在底层逻辑上精雕细琢,确保系统的稳健与高效。其中,“设计与建模”作为架构师的核心能力之一,是连接业务需求与技术实现的桥梁。本文将深入探讨架构师在设计与建模过程中的关键思维与实践方法,为工作学习中的技术同仁提供一份宝贵的干货分享。
78 3
|
8月前
|
存储 消息中间件 算法
深度思考:架构师必须掌握的五大类架构设计风格
数据流风格注重数据在组件间的流动,适合处理大量数据。调用返回风格则强调函数或方法的调用与返回,过程清晰明了。独立构件风格让每个构件独立运作,通过接口交互,提升灵活性和可重用性。虚拟机风格则模拟完整系统,实现资源的高效利用。
424 0
深度思考:架构师必须掌握的五大类架构设计风格
|
存储 Java 测试技术
迄今为止最完整的DDD实践
对于一个架构师来说,在软件开发中如何降低系统复杂度是一个永恒的挑战。
22258 8
|
存储 缓存 NoSQL
概念、场景技术方案选择的理解
概念、场景技术方案选择的理解
67 0
|
缓存 运维 负载均衡
什么才是真正的架构设计?架构君给你解释的一清二楚。
什么才是真正的架构设计?架构君给你解释的一清二楚。
760 0
什么才是真正的架构设计?架构君给你解释的一清二楚。

热门文章

最新文章