• 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的目标代码即设计,设计即代码。通俗的讲,也就是开发人员写的代码领域专家也能看懂。

  • 相关阅读:
    【源码解析】Spring源码解读-beanFactory和Bean的后置处理器流程
    【网络安全篇】PHP文件与目录操作(一文带你手撕迷茫)
    SequoiaDB分布式数据库2022.10月刊
    本地FTP YUM源报错处理
    从三个层面分析如何创造高价值专利?
    python_data_analysis_and_mining_action-master-2
    题解 [Codeforces1156D] 0-1-Tree
    【统计分析】(task5) 金融量化分析与随机模拟(通过随机模拟估计看涨期权的报酬分布)
    Python封装一个接收UDP组播的模块
    python路径的麻烦事
  • 原文地址:https://blog.csdn.net/weixin_42201180/article/details/126676786