领域驱动设计学习笔记-战略设计

一、项目介绍

业务背景

团队背景

客户背景

案例优势

二、建模与设计的整体流程

2.1四个阶段

2.2 参与人员

2.3 用户故事

2.4 通用语言

2.5战略设计

2.6战术设计

2.7 常用建模方法

三、如何建立模型?从用户故事到通用语言

3.1 用户故事

用户故事验证:Who? What? Hay

验证方法:卡片->谈话->验收标准

常规用户故事缺点:容易漏掉关键细节

3.2 Domain story telling

四、分解问题:领域划分和子域

本章问题:

  • 什么是领域划分和子域?领域划分就是以分离关注点为原则对问题空间的划分。子域是领域中某个方面的问题和解决它所涉及的一切。
  • 为什么要进行领域划分?
  • 基于用户故事分解的领域划分方法。

4.1为什么要划分?

问题一:问题点和领域知识重叠

问题二:模型重叠

解决方法:

4.1 基于故事分解的领域划分

五、确定系统最核心的部分:核心域和精炼

5.1 子域的类型

  • 核心域:软件系统具备竞争力的系统(最核心的技术人员应该投入到核心域,但目前更多的大牛会把经历投入到支撑子域,做框架,但这种要尽可能的避免)
  • 通用子域:
  • 支撑子域:类似于系统框架

六、限界上下文

本章问题:

6.1什么是限界上下文

6.2为什么需要限界上下文

  • 自然语言具有模糊性
  • 同一个事物面向不同场景有不同模型
  • 软件系统需要分解模型以控制复杂度
  • 限界上下文是分工的单位

6.3 怎么限界上下文

如何划分限界上下文?

  • Domain StoryTelling (领域故事陈述法):
  • Event Storming (事件风暴法)
  • 基于子域概念提取

七、多个上下文如何协作?上下文映射

什么是上下文映射?

  • 上下文映射是指限界上下文之间的模型映射关系;
  • 描述团队之间的协作关系以及上下文之间的集成关系;
  • 决定上下文之间如何集成?及如何设置防腐层;

常见的问题是,上下文和上下文之间会有重叠,比如下图:

上下文类型:

中台一般为客户/供应商模式,但中台很容易变成大泥鳅。