上文说了“什么是领域驱动设计?”,里面简单描述了“领域”的概念。这篇文章说一下如何搞清楚一个领域。
Evans在他的《领域驱动设计》一书的开始就重点提出了“Ubiquitous language”(统一语言)这一个工具。“Ubiquitous language”是一种团队内部交流沟通的语言。这里的“团队”不仅仅包括负责编码的程序员,更不可或缺的应该是“领域专家”。谁是领域专家?这里可以理解为用户或者PM,在一个具体的项目组中,要视情况而定。“Ubiquitous language”就是为了在领域专家与研发人员之间达成认知一致的工具。
“Ubiquitous language”包括一些概念及业务规则,是一种几乎不涉及技术细节的领域表示方式。
“不涉及技术细节”这点很重要,因为领域更多的讨论的是业务。而且一旦涉及技术细节,就会出现混乱、无法精确传达业务含义的问题,不利于领域构建。
上面定义了“Ubiquitous language”这一工具,那么我们该如何使用这一工具来丰富领域呢?
答案其实非常简单,引用Evans的话说就是:
“大声地”建模。
可能很多人会问这是什么意思?怎么有听君一席话,如听一席话的感觉呢?
“大声地”建模说白了其实就是沟通。作为开发人员要与PM、用户进行沟通。在沟通过程中找到不一致的地方然后达成一致。
有一些小的问题需要注意,因为很多人一听到建模,可能就会问一些问题:
- 是要使用UML吗?
- 是不是必须要画图?
- 文档是不是不能表达?
我们不能说不关心这些方式,但是也不能本末倒置。因为说到底是先有领域模型,然后才有UML图、文档等表达方式。
所以领域模型的表达无关其具体的形式,只要能够表达清楚即可。
本文主要提出了“Ubiquitous language”这一工具,但是只有在实践中才能获得最深刻的理解。