DDD 战略设计的第一步就是统一语言,也叫通用语言(UBIQUITOUS LANGUAGE),用于定义上下文的含义。
定义:提炼领域知识的产出物,体现在两个方面:① 统一的领域术语;②领域行为描述。
如何获取:统一语言就是需求分析的过程,也是团队中各个角色就系统目标、范围与具体功能达成一致的过程。
强调统一:无论是与领域专家的讨论,还是最终的实现代码,都使用相同的术语。
强调约束:既要有内涵也要有外延。
定义上下文的含义
:在事件风暴中,通过团队交流达成共识的,能简单清晰准确地描述业务含义和规则的言语就是通用语言。
注意
:通用语言贯穿 DDD 的整个设计过程。作为项目团队沟通和协商形成的统一语言,在说某通用语言时,必须要限定在某个上下文内,以确保每个上下文含义在它特定的边界内都有唯一的含义。
如果我们长期处于某个领域的话,肯定会有一些俗语,俗话,术语,常用语,技术用语,活动概念。如果在领域专家和开发人员之间也能建立一种语言,是不是就可以让他们使用这种语言进行交流,进而解决沟通不顺畅的问题。
定义:领域特定语言(英语:domain-specific language、DSL)指的是专注于某个应用程序领域的计算机语言。又译作领域专用语言。 源自 Martin Fowler 大神的著作《领域特定语言》。
通用语言其实跟DSL有相通之处,都是着重表达某个领域的业务名词,术语。只是通用语言更偏向于业务分析建模。而DSL则偏向于使用计算机技术将通用语言进行落地,进行模块化,自动化,让计算机通过一定的规则实现通用语言所表达的业务代码生成。
下面列举一些领域的通用语言和术语,供大家参考:
如果我们长期处于某个领域的话肯定会有一些术语,专用词,俗语来表达某个场景或者业务活动,或者人事物。这样的话我们需要通过这些通用语言来探索更深层次的业务语义。
通用语言需要做到:
这种通用语言基于领域模型,领域模型其实是领域专家头脑中对该领域的一个整体认知,并不是一些图形化和文本化的东西,那些只是用来辅助理解的。
通过团队交流达成共识的能够简单清晰准确传递业务规则的语言(可以是文字、图片等)即可称为通用语言。
通用语言包含术语和用例场景,且能够直接反映在代码中。
基于通用语言,开发人员能够开发出可读性更好的代码,从而将业务需求准确转化为代码设计。达到DDD的目标代码即设计,设计即代码。通俗的讲,也就是开发人员写的代码领域专家也能看懂。