如何落地业务建模
徐昊
ThoughtWorks中国区CTO
新⼈⾸单¥59.9
1906 人已学习
课程目录
已更新 8 讲 / 共 22 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (1讲)
开篇词|为什么你需要学习业务建模?
免费
旧约:“前云时代”的领域驱动设计 (7讲)
01|领域驱动设计到底在讲什么?
02|统一语言是必要的吗?
03|我们要怎么理解领域驱动设计?
04|跨越现实的障碍(上):要性能还是要模型?
05|跨越现实的障碍(中):富含知识还是代码坏味道?
06 | 跨越现实的障碍(下):架构分层就对了吗?
07|统一语言可以是领域模型本身吗?
如何落地业务建模
15
15
1.0x
00:00/00:00
登录|注册

07|统一语言可以是领域模型本身吗?

你好,我是徐昊。今天我们来聊聊如何把领域模型作为统一语言。
第二讲,我们谈论到为什么统一语言是必要的:一是因为业务维度在领域模型中被隐藏了;二是我们需要一个缓冲,去发现模型中不存在的概念。不过这里有一个隐藏的前提假设:最终建模结果将是原味面向对象范型的模型。
而我们在介绍上下文对象的第五讲里,已经见到一种不同于原味面向对象模型范型的思路:DCI 范型。围绕角色与上下文对业务进行分解,而不仅仅是实体与关系。那么我们是不是可以通过不同的建模范型,将领域模型本身当作统一语言呢?
答案是肯定的,而且其中最关键的就是如何将隐藏在模型中的业务维度展开。不同的建模范式,展开业务维度的方式与逻辑也不尽相同。我们首先需要更仔细地理解一下业务维度是如何被隐藏在模型中的,然后再看看不同的建模方法将会如何展开业务维度。

业务是模型的隐藏维度

我们仍然以你已经很熟悉的极客时间专栏领域模型为例,看看在订阅这个上下文中(模型如下图所示),原味对象范型的模型是如何将业务维度隐藏的:
作为技术人员,我们可以很容易地从数据角度理解业务行为:当用户订阅了一个专栏之后,就会产生一个新的 Subscription 对象,它会记录用户具体订阅了哪个专栏。而我们通过对 Subscription 对象的检视,就能知道用户一共订阅了多少个专栏。下图展示的是我们将模型实例化后的结果:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
该试读文章来自付费专栏《如何落地业务建模》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59.9
立即订阅
登录 后留言

精选留言(2)

  • Oops!
    催化剂法有点像将用例向后展开出模型的意味,角色目标实体法可操作更强,通过表格的形式梳理业务流程和关联的实体。不过,实际业务中有很多异步业务流程,如何在模型中描述这些异步流程呢?
    2021-07-08
    1
  • 赵晏龙
    我发现很多方法/模式其实都是同一件事情的不同侧面和表述方式。
    比如我认为文章中提到的【催化剂法】【角色目标实体法】,在软件实现阶段的一种具体实现方式是【行为驱动开发】。这些东西只是在不同的时代、时间点、场景下,有一些修正性的不同。整体的指导思维是基本一致的。

    我使用BDD时间比较长,所以根据我的经验:纯粹【催化剂/角色目标实体法】能很好的解释单个操作/目标将会发生的事情,但是知识会非常的碎片化。如果不加以整理和讨论,用户将无法对整体业务流程有一个很好的理解。

    感谢老师帮我梳理知识,继续认真学习!
    2021-07-08
收起评论
2
返回
顶部