Day5 - 怎样既准确又深刻地理解业务知识?

153 阅读3分钟

1.领域建模主要有两个目的

呈上:将知识可视化,准确、深刻地反映领域知识,并且在业务和技术人员之间达成一致; 启下:指导系统的设计和编码,领域模型应该能够比较容易地转化成数据库模式和代码实现。

2.领域建模的工具 - UML类图

领域模型是用领域模型图来表达的,通常用 UML 来画; DDD 中将领域对象又分成实体(entity)和值对象(value object) 通过画类图的方式进行领域建模。

3.初步识别实体

首先,你可以先假定每个领域名词都是一个实体

识别“一对一”关联

识别“一对多”关联

进行抽象

识别“自关联”

增加“约束”

识别“多对多”关联

最终形成领域模型如下

image.png

4.观点

为什么领域建模要由业务人员和技术人员一起协作完成呢?

  1. 知识传递:
  • 技术同学说:我没太懂你到底想要个啥玩意儿
  • 产品同学说:好,让我跟你再细说说

2.知识提炼

  • 技术同学说:你讲的我大概都明白了,但是就感觉有些凌乱,东扯一下,西扯一下,还是有点迷糊
  • 产品同学说:好,那我们再来梳理一下,有些点确实可以归归类啥的,可能更方便理解

3、可视化:

  • 技术同学:嗯,你的需求我基本是了解了,要不我把我的理解画出来,跟你确认一下?
  • 产品同学:好主意,那咱们一起来搞吧。

4、认知对齐:

  • 技术同学:你看我画的这个,是那个意思哈,确定哈。 还有这个这个,是那个那个意思哈。
  • 产品同学:对的对的,这个是对的。 不过,那个可能稍微再调整一下更符合实情业务情况。

5、统一语言:

  • 技术同学:看来,咱们画这一波图,已经把需求的要点都囊括了哈。只是有些概念我感觉还是有点模棱两可,要不咱们再对一下,把这些概念的叫法给定死咯,这样我写代码的时候,也方便取名字。
  • 产品同学:要得要得,我们再拉一个表吧,把所有的业务概念再罗列一遍,包括中文表达和对应的英文表达都敲定一下,以后咱们就以这个术语表为准来沟通。

5.总结与思考

通常在回答"怎样既准确又深刻地理解业务知识"问题时,对于研发人员,传统的回答可能是: 1)听一遍,按自己的理解复述一遍,获取反馈 2)系统化地梳理,使用业务知识结构化,实现完整性、一致性。 基于DDD的角度,其实是第2)个思路,通过DDD的事件风暴和领域建模,完整业务知识的系统化梳理。 再通过第1)思路,与业务人员进行反馈协作沟通,以及统一化语言。

学习来源:钟敬的《手把手教你落地 DDD》