美文网首页
DDD 战略设计:建立统一语言

DDD 战略设计:建立统一语言

作者: 贪睡的企鹅 | 来源:发表于2019-12-17 19:17 被阅读0次

1 如何理解“统一语言”

  • 统一语言是提炼领域知识的产出物,获得统一语言就是需求分析的过程,也是团队中各个角色就系统目标、范围与具体功能达成一致的过程。
1.1 为什么使用“统一语言”

开发人员与领域专家之间,他们掌握的知识存在巨大的差异。善于技术的开发人员关注于数据库、通信机制、集成方式与架构体系,而精通业务的领域专家对这些却一窍不通,但他们在讲解业务知识时,使用各种概念如呼吸一般自然,这些对于开发人员来说,却成了天书,这种交流就好似使用两种不同语言的外国人在交谈。在没有达成一致的情况下,那就是鸡同鸭讲,毫无沟通效率,相反还可能造成误解。

从需求中提炼出统一语言,其实就是在两个不同的语言世界中进行正确翻译的过程。

1.2 “统一语言”用处

一旦确定了统一语言,无论是与领域专家的讨论,还是最终的实现代码,都可以通过使用相同的术语,清晰准确地定义领域知识。重要的是,当我们建立了符合整个团队皆认同的一套统一语言后,就可以在此基础上寻找正确的领域概念,为建立领域模型提供重要参考。


统一语言体现在两个方面:

  • 统一的领域术语

领域术语通常表示对象命名,如商品、订单等,对应实体对象

  • 领域行为描述

领域行为通常表示一个动作或事件,如商品已下单、订单已付款等,对应领域事件或者命令

2 统一的领域术语

领域术语是有行业规范的,例如财会领域就有标准的会计准则,对于账目、对账、成本、利润等概念都有标准的定义,在一定程度上避免了分歧。然而,标准并非绝对的,在某些行业甚至存在多种标准共存的现象。

  • 民航业的运输统计指标为例,牵涉到与运量、运力以及周转量相关的术语,就存在 ICAO(International Civil Aviation Organization,国际民用航空组织)与IATA(International Air Transport Association,国际航空运输协会)两大体系,而中国民航局又有自己的中文解释,航空公司和各大机场亦有自己衍生的定义

城市对与航段

领域术语.jpg
  • 如果我们不明白城市对运量与航段运量的真正含义,就可能混淆这两种指标的统计计算规则。这种术语理解错误带来的缺陷往往难以发现,除非业务分析人员、开发人员与测试人员能就此知识达成一致的正确理解。

我们可以做什么

  • 在领域建模过程中,我们往往需要在文档中建立一个大家一致认可的术语表。

  • 语表中需要包括整个团队精炼出来的术语概念,以及对该术语的清晰明白的解释。

  • 为难以理解的术语提供具体的案例。

  • 一旦发生变更,也需要及时地对其进行更新。

  • 在维护领域术语表时,一定需要给出对应的英文术语,否则可能直接影响到代码实现。

3 领域行为描述

领域行为描述可以视为领域术语甄别的一种延伸。领域行为是对业务过程的描述,相对于领域术语而言,它体现了更加完整的业务需求以及复杂的业务规则。在描述领域行为时,需要满足以下要求:

  • 从领域的角度而非实现角度描述领域行为
  • 若涉及到领域术语,必须遵循术语表的规范
  • 强调动词的精确性,符合业务动作在该领域的合理性
  • 要突出与领域行为有关的领域概念

4 小结

磨刀不误砍柴工,多花一些时间去打磨统一语言,并非时间的浪费,相反还能改进领域模型乃至编码实现的质量,反过来,领域模型与实现的代码又能避免统一语言的“腐化”,保持语言的常新。重视统一语言,就能促成彼此正面影响的良性循环;否则领域模型与代码会因为沟通不明而泥足深陷,就真是得不偿失了。

相关文章

  • DDD 战略设计:建立统一语言

    1 如何理解“统一语言” 统一语言是提炼领域知识的产出物,获得统一语言就是需求分析的过程,也是团队中各个角色就系统...

  • 第二节 DDD领域部分

    DDD补充部分 统一建模语言UML,为方便设计人员、领域专家和程序员都能看懂的一种通用语言 多层架构是DDD的一个...

  • 《领域驱动设计精粹》读书笔记

    DDD同时提供了战略和战术工具,来帮助你设计和实现高价值的软件。P1DDD的战略设计工具可以帮助你和团队做出最有竞...

  • ddd

    DDD理解:基本概念:DDD战略思想:领域、子领域、限界上下文、通用语言、下文映射图、架构风格DDD战术实现:聚合...

  • DDD 设计之服务端落地实践

    本篇内容来源于本人部门的开发经验总结--注者:廖同学 什么是 DDD DDD 全称领域驱动设计,分为战略设计和战术...

  • 2020-04-18

    领域驱动设计战略三步走 1.根据场景分析来获取领域知识;2.根据领域知识来建立统一语言;3.划分限界上下文; 今天...

  • DDD战略2 领域知识

    GitChat课程《领域驱动设计--战略篇》笔记,课程作者张逸 一.DDD开发中团队的沟通与协作 DDD先要识别问...

  • 领域驱动设计: 构建你的代码蓝图

    战术设计 在DDD中,分两部分,战略设计和战术设计,战略设计很好的帮助我们理清问题域,划分服务,具体可参见: ht...

  • 简述DDD,战略设计

    从What、How、Why三个层面进行了梳理。 What:DDD是什么?DDD是用来解决软件复杂度的问题,是一种软...

  • 架构思维学习总结(十八)

    5-3 DDD之战略设计 一、战略和战术的区别 战略是目标和方向,战术是具体方法论同时战略和战术又是相对的,战略...

网友评论

      本文标题:DDD 战略设计:建立统一语言

      本文链接:https://www.haomeiwen.com/subject/vdjenctx.html