如何落地业务建模
徐昊
Thoughtworks 中国区 CTO
24830 人已学习
新⼈⾸单¥68
登录后,你可以任选2讲全文学习
课程目录
已完结/共 32 讲
如何落地业务建模
15
15
1.0x
00:00/00:00
登录|注册

02|统一语言是必要的吗?

订阅
用户可以订阅多个专栏
订阅的专栏(Subscription),指用户付费过的专栏
用户(User),指所有在极客时间注册过的人
统一语言可以包含领域模型的概念与逻辑、界限上下文、系统隐喻、职责的分层、模式与惯用法
统一语言必须是团队的共识
统一语言实际上赋予了技术人员定义业务的权利
统一语言给予了双方一种沟通和协商的途径
修改代码引起模型改变无可避免
修改模型就是修改代码;修改代码就是修改模型
直接使用模型作为统一语言在实际操作中效果并不理想
模型本身应该是业务方和技术方讨论需求的基础
统一语言特指根据领域模型构造的共同语言
共同语言为双方提供了协作与沟通的基础
难能可贵地建立了技术反馈业务的途径,降低了知识消化过程失败的风险
统一语言与其背后的领域模型赋予了研发人员通过重构定义业务的能力
统一语言提供了一种更好的协同方式的可能性
统一语言提案内容
统一语言提案
修改代码就是改变统一语言
统一语言是基于领域模型的共同语言
小结
一个简单的统一语言提案
统一语言是必要的吗?
领域驱动设计中的统一语言与模型关联

该思维导图由 AI 生成,仅供参考

你好,我是徐昊。今天我们来聊一聊领域驱动设计中的统一语言与模型的关联。
在上一讲,我们介绍了领域驱动设计的核心理念,即在业务系统中应该使用与问题域相关的模型,而不是通用的数据结构去描述问题。并由此介绍了 Eric Evans 提倡的知识消化,总结起来就是“两关联一循环”。
我们讲了第一个关联,那就是模型与软件实现的关联,并解释了为什么它是实践知识消化的前提。那么今天我们来讲第二个关联:统一语言与模型关联,也就是从模型中提取统一语言。
不过在讲具体做法之前,我们要先思考一下,为什么需要统一语言,以及统一语言会带来哪些好处。

统一语言是基于领域模型的共同语言

统一语言(Ubiquitous Language)是一种业务方与技术方共同使用的共同语言(Common Language),业务方与技术方通过共同语言描述业务规则与需求变动。可以说,共同语言为双方提供了协作与沟通的基础。注意,这里的业务方泛指一切非最终软件实现者,他们可能有很多名字:客户、产品、业务、业务分析师、解决方案架构师、用户体验设计师等等。
共同语言也有很多种形式。比如,用户画像(User Persona)与相关的用户旅程(User Journey) ,就能从流程角度有效地构成共同语言。再比如,数据字典(Data Dictionary)在很长的时间里,也是从软件实现侧形成共同语言的依据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

领域驱动设计中的统一语言与模型关联是至关重要的话题。统一语言是基于领域模型的共同语言,为业务方与技术方提供了协作与沟通的基础。文章指出,直接使用模型作为统一语言在实际操作中效果并不理想,因为业务方难以直接将模型与他们对系统的理解关联到一起。因此,从模型中提取的统一语言扮演了试验田的角色,帮助业务方理解模型,并作为触发提炼知识的循环,逐步完善模型。统一语言的模糊反而更能满足人与人之间交流的需求。尽管理论上可以不需要统一语言,但实践证明它是一种实证的智慧。最终,通过不同的建模方法,能够几乎仅仅使用模型作为统一语言。文章深入探讨了统一语言的必要性和好处,以及如何提取统一语言,为读者提供了对领域驱动设计中统一语言与模型关联的深入理解。文章还强调了统一语言对于技术方与业务方之间的沟通与协作的重要性,以及统一语言在业务领域中的应用潜力。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《如何落地业务建模》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(48)

  • 最新
  • 精选
  • 奔跑的蜗牛
    置顶
    课后问题思考: 领域驱动设计,逼着业务方和实现方像玩跷跷板一样共同构建业务系统,从协作角度看,这个游戏的特点是,【一个人没法玩】。 板≈共同语言,支点≈模型,以“支点”为中心,以“板”为媒介,双方你一下我一下地玩。 “板”+“支点”很大程度上定义了游戏的基本规则。

    作者回复: good metaphor

    2021-07-02
    5
    46
  • 箭和方糖
    置顶
    技术人员通过重构进而影响业务,这个观点很独到,但从自身经验而言确实匪夷所思。这个真的是有可能的吗?从技术角度出发的重构真的可以影响经验老道的业务人员吗?

    作者回复: 可以 因为最后谁说了都不算 代码跑起来算

    2021-06-28
    2
    6
  • Jxin
    置顶
    上节留言是我错了: 1.特地翻了下蓝书。统一语言->模型的理解浅了(模型不等于是画出来的类图或则代码,而应该是消化知识时的思维模式的产物)。是我以前的认知偏差了,实际工作中多是和业务方讨论出统一语言,再对统一语言做实现,结果就愣是把认知扭曲成这个顺序了。关键的错误认知在于,误以为模型指的是基于与业务方沟通的结果做的解决方案和代码实现。熟不知,在与业务方沟通时,自己脑袋中基于建模的思维模式就将业务知识消化转换成模型定义,并直接以自己定义的模型的术语与业务方做沟通,待沟通结束,已经完成了 模型->统一语言 的推导。 课后题: 1.领域驱动设计分两块,第一块是通过两关联一循环的知识消化方式,理解业务知识,并反馈给合作方对应的模型定义,以达成认知共识和行为约束(业务方讲故事要基于统一语言,开发人员改代码要反映到统一语言上)。也就是常说的战略部分;第二块是通过一系列的编码风格或者说编程范式,构建以领域模型为核心的代码结构,保证领域模型的富类型以更好的表达统一语言,保证领域模型的干净以更好的应对变化坚守统一语言与代码模型的原子操作。也就是常说的战术部分。 2.领域驱动设计其实只是一系列软件开发过程的经验总结而成的方法论的总称,取这个名字主要因为这些方法论大多围绕领域业务为核心来设计模型和构建软件项目。可以说是来自字将的喜好。但也正应为领域驱动设计表达的是一个集合,所以现今流行的一些方法论也可以加入其中,只要是便于构建以领域业务为核心的软件项目这个目标,领域驱动设计的集合来着不惧。 个人疑问: 这么说统一语言是为了缓解开发和业务专家的认知差距?如果开发或者业务专家能完全理解业务和软件业务模型,就可以不需要统一语言? 对于咨询行业来说,要应对众多的业务,每个都要成为专家显然不现实。但对于互联网大厂,很多业务或者开发在一个岗位一干就十来年,只要愿意学习,不管是开发掌握业务知识还是业务掌握软件模型显然都不是难事。那么还需要统一语言吗?现在,我认为统一语言其实只是一个别名,在开发与业务沟通的场合,所有双方的共同认知都属于统一语言(又是字将的喜好)。统一语言 ==(业务知识+软件模型)/共同认知。所以,可以不要统一语言直接用模型这个问题本身就有问题,毕竟有些时间统一语言就是模型,模型就是统一语言,不过是场景不同叫法不同。

    作者回复: 敬请期待下一课和7-9节

    2021-06-26
    8
    9
  • 极客侠女
    我的总结:DDD领域驱动设计,是解决业务系统中,业务方和技术方沟通协同的问题。 它是从业务出发,以业务问题域为焦点,构造出与业务强相关的模型。 1.该模型既要关联软件开发,使得对模型的修改,就是对代码的修改。 2.又要关联统一语言,将业务方成为模型的使用者,统一语言驱动需求描述,驱动测试设计等。 3.通过技术方和业务方不断地交流与反馈中,提炼知识的循环,逐步完成对模型的淬炼。

    作者回复: nice

    2021-08-26
    18
  • xtepCool
    麻烦大了,看不懂。

    作者回复: 慢慢来

    2021-07-21
    5
  • 赵晏龙
    领域驱动设计我的理解是:以模型为中心和桥梁,连接并同步需求与实现,同时不断试错并修正的设计方式。

    作者回复: nice

    2021-06-28
    5
  • Oops!
    印象深刻的一点是领域语言建立了技术反馈业务的途径。不过在实操方面,就是实际工作中如何建立领域语言,有哪些技巧、方法和工具可以应用呢?

    作者回复: 敬请期待7-9节

    2021-06-26
    3
  • Tom Yang
    以前读书的时候学习管理信息系统时书中有提到系统的设计视角是 社会 - 技术 视角,统一语言就是那个 社会 的要达到的共识吧。

    作者回复: good point

    2021-06-26
    2
  • 花花
    描述: 针对大型、复杂系统开发流程的一种解决方案。 领域驱动设计在逻辑设计上类似于结构化设计,自顶向下设计各个领域,由领域指导实现。 前置条件: 为实现领域驱动开发过程需各相关方人员在一起以业务需求出发建立统一语言,该语言是一个在组织环境、系统描述中各方各方都能接受的语言, 是在该组织或该项目下独有的且语义明确清晰的。 应用: 在确定统一语言后则可以进一步的以统一建模语言为基础提取出各方都确认的领域模型,由该模型的逻辑结构指导系统的实现,以达到实现与模型与需求相一致的目的。

    作者回复: nice

    2021-09-01
    1
  • 陈凯杰
    我理解的DDD是击穿业务和技术的隔阂,让双方有共同的需要,减少业务和实现的偏差,技术更改了模型以后也能即使反馈给业务。另外一个是富含知识的代码,在显示中缺少业务和技术的文档,甚至代码注释都少,遗留系统非常难以维护,DDD能解决一部分的问题

    作者回复: 光靠富含知识的代码可能还是不太够

    2021-06-29
    2
    1
收起评论
显示
设置
留言
48
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部