如何落地业务建模
徐昊
ThoughtWorks中国区CTO
新⼈⾸单¥59.9
1202 人已学习
课程目录
已更新 3 讲 / 共 22 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (1讲)
开篇词|为什么你需要学习业务建模?
免费
旧约:“前云时代”的领域驱动设计 (2讲)
01|领域驱动设计到底在讲什么?
02|统一语言是必要的吗?
如何落地业务建模
15
15
1.0x
00:00/00:00
登录|注册

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

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

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

统一语言(Ubiquitous Language)是一种业务方与技术方共同使用的共同语言(Common Language),业务方与技术方通过共同语言描述业务规则与需求变动。可以说,共同语言为双方提供了协作与沟通的基础。注意,这里的业务方泛指一切非最终软件实现者,他们可能有很多名字:客户、产品、业务、业务分析师、解决方案架构师、用户体验设计师等等。
共同语言也有很多种形式。比如,用户画像(User Persona)与相关的用户旅程(User Journey) ,就能从流程角度有效地构成共同语言。再比如,数据字典(Data Dictionary)在很长的时间里,也是从软件实现侧形成共同语言的依据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
该试读文章来自付费专栏《如何落地业务建模》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59.9
立即订阅
登录 后留言

精选留言(3)

  • Jxin
    置顶
    上节留言是我错了:
    1.特地翻了下蓝书。统一语言->模型的理解浅了(模型不等于是画出来的类图或则代码,而应该是消化知识时的思维模式的产物)。是我以前的认知偏差了,实际工作中多是和业务方讨论出统一语言,再对统一语言做实现,结果就愣是把认知扭曲成这个顺序了。关键的错误认知在于,误以为模型指的是基于与业务方沟通的结果做的解决方案和代码实现。熟不知,在与业务方沟通时,自己脑袋中基于建模的思维模式就将业务知识消化转换成模型定义,并直接以自己定义的模型的术语与业务方做沟通,待沟通结束,已经完成了 模型->统一语言 的推导。

    课后题:
    1.领域驱动设计分两块,第一块是通过两关联一循环的知识消化方式,理解业务知识,并反馈给合作方对应的模型定义,以达成认知共识和行为约束(业务方讲故事要基于统一语言,开发人员改代码要反映到统一语言上)。也就是常说的战略部分;第二块是通过一系列的编码风格或者说编程范式,构建以领域模型为核心的代码结构,保证领域模型的富类型以更好的表达统一语言,保证领域模型的干净以更好的应对变化坚守统一语言与代码模型的原子操作。也就是常说的战术部分。
    2.领域驱动设计其实只是一系列软件开发过程的经验总结而成的方法论的总称,取这个名字主要因为这些方法论大多围绕领域业务为核心来设计模型和构建软件项目。可以说是来自字将的喜好。但也正应为领域驱动设计表达的是一个集合,所以现今流行的一些方法论也可以加入其中,只要是便于构建以领域业务为核心的软件项目这个目标,领域驱动设计的集合来着不惧。

    个人疑问:
    这么说统一语言是为了缓解开发和业务专家的认知差距?如果开发或者业务专家能完全理解业务和软件业务模型,就可以不需要统一语言?
    对于咨询行业来说,要应对众多的业务,每个都要成为专家显然不现实。但对于互联网大厂,很多业务或者开发在一个岗位一干就十来年,只要愿意学习,不管是开发掌握业务知识还是业务掌握软件模型显然都不是难事。那么还需要统一语言吗?现在,我认为统一语言其实只是一个别名,在开发与业务沟通的场合,所有双方的共同认知都属于统一语言(又是字将的喜好)。统一语言 ==(业务知识+软件模型)/共同认知。所以,可以不要统一语言直接用模型这个问题本身就有问题,毕竟有些时间统一语言就是模型,模型就是统一语言,不过是场景不同叫法不同。
    2021-06-26
  • Tom Yang
    以前读书的时候学习管理信息系统时书中有提到系统的设计视角是 社会 - 技术 视角,统一语言就是那个 社会 的要达到的共识吧。
    2021-06-26
  • 🐰兔兔🐰
    印象深刻的一点是领域语言建立了技术反馈业务的途径。不过在实操方面,就是实际工作中如何建立领域语言,有哪些技巧、方法和工具可以应用呢?
    2021-06-26
收起评论
3
返回
顶部