战略设计:领域分解和领域建模;
战术设计:微服务设计和详细设计及技术实现。
战略设计:
首先,针对业务领域,通过流程及功能分析、业务场景分析、用例分析和用户旅程分析等方法,尽可能地梳理业务领域,发现这些业务领域中的命令、领域事件、领域对象以及它们的业务行为,并梳理这些领域对象之间的关系,这是一个发散的过程。
然后,将事件风暴过程中提取的实体、值对象和聚合根等领域对象,从不同的维度进行聚类,形成如聚合上下文等边界,并在限界上下文边界内建立领域模型,这是一个收敛的过程,收敛输出的结果就是领域模型。
子域
事件风暴是进行领域划分和领域建模的一个很重要且很实用的方法,但如果问题空间很大时不适合直接进行事件风暴,这时我们先把问题空间划分为三类子域:核心子域、通用子域和支撑子域。
- 核心子域:在企业内决定产品或企业核心竞争力的功能子域就是核心子域,它是让企业业务和商业模式成功的关键核心能力,是企业面对竞争对手时所拥有的核心竞争力。
- 通用子域:没有太多个性化的需求,同时又会被多个子域重复使用的通用功能子域
- 支撑子域:企业必需的,但它既不是决定产品或企业核心竞争力的功能,也不是被其他子域复用的通用功能,这类子域是支撑子域
以保险业务为例,我们划分子域的结果如下:

领域划分为核心子域、通用子域和支撑子域
通过领域划分,区分不同子域在企业内的不同功能属性和重要性,使用企业可对不同子域采取不同的资源投入和建设策略。
将问题空间划分为三个子域后再在子域内进行事件风暴,在事件风暴过程中,领域专家、架构师、产品经理、开发工程师、测试工程师一起通过用户旅程分析、业务场景分析,提取出业务领域中的所有领域对象,将这些对象进行聚合,并划定业务边界,然后建立领域模型。
界限上下文(Bounded Text)
避免二义性的业务边界,保证领域职责的单一性和 领域模型的纯洁性。
实体
领域模型中具有延续性的对象。
在代码模型中国,实体的表现形式是实体类,包含了实体的属性和方法,通过这些方法实现实体自身的业务行为和业务逻辑。
DDD强调面向对象的设计方法,这些实体类通常才用充血模型,与实体相关的所有业务逻辑都在实体类方法中实现,跨多个实体的领域逻辑则在领域服务中实现。
