领域驱动设计入门建模过程

领域驱动设计(DDD)是一个概念框架而不是一种设计方法。正如 Evans 和 Vernon 的书中一样,DDD 是一组一致的概念和术语,但它没有规定实现 DDD 一致设计的具体过程。
这就是 DDD 入门建模过程的用武之地。它是实践者处理大型软件设计任务的实用指南。它不是一个僵化的过程,而是一套可以根据情况灵活使用的工具和方法。

在 DDD 大师课程中使用 DDD Starter 作为流程模型

我们在数字科学硕士课程“大型软件系统的领域驱动设计”中的流程将大致与“领域驱动设计入门建模流程”一致,这是一个实用的实践者完成大型软件设计任务的指南。

Process Model

(c) DDD 船员,CC-BY-SA-4.0

以下是我们将如何在 DDD 大师课程中涵盖上述模型中列出的阶段。

 对齐

实际上,正如在本课程中一样,此阶段通常发生在您开始项目之前。它涉及识别利益相关者、与他们在项目目标上保持一致并获得他们的支持。
此外,它还涉及识别高级用例和涉及的主要参与者。

 发现

这个阶段是为了了解该领域,并尝试以半形式化的方式查明其本质。第一个子团队(EventStorming)负责此阶段。我们将使用 EventStorming(请参阅详细信息页面)。

分解/制定策略/连接/组织/定义

在 DDD 课程中,我们尝试通过对 EventStorming 结果进行后处理并应用各种规范方法来共同涵盖这些阶段。这由第二个子团队(有界上下文)涵盖。详细信息可以在此信息页面上找到)。

目标是识别有界上下文以及它们之间的关系。这样,(很大程度上)自治团队就可以各自处理有界上下文并进一步指定和实现它,而无需与其他团队进行过多协调。
DDD 入门建模流程对这些阶段的描述如下。

 分解

此阶段涉及将大型系统或问题空间分解为更小、更易于管理的部分。目的是确定不同的功能或关注领域,从而更轻松地解决复杂性。
在这里,我们将尝试使用 EventStorming 研讨会的结果,并绘制(子)域边界。

 制定策略

在此阶段,团队评估分解的部分,以确定哪些是业务核心,哪些是通用或支持性的。通过这样做,他们可以决定将精力和资源投入到哪里,以实现最大的业务影响。我们将使用的方法是核心域图表

 连接

在此阶段,识别和定义不同有界上下文之间的关系。这涉及指定它们如何交互、通信和共享数据,以确保整个系统协同工作。使用的方法是域消息流建模。

 组织

此阶段是将相关功能或概念分组到有界上下文中。有界上下文是定义和应用特定模型的明确边界,确保术语和概念具有明确的含义。作为方法,我们将创建一个上下文映射。

 定义

在这里,团队深入研究每个有界上下文以创建详细的模型。这包括定义实体、值对象、聚合和领域事件,构成软件设计的基础。这里使用的方法是Bounded Context Canvas。

 代码

在成熟的 DDD 项目中,此阶段将开始实施。由于时间原因,我们不会这样做。但是,我们将识别每个有界上下文中的主要聚合,并创建容器级模型。

此阶段将由 DDD 课程中的第三个小组(组件)涵盖。我们在此阶段将使用的方法在此信息页面中详细说明:

  •   聚合画布和
  • 每个有界上下文的 C4 模型(级别 1 和级别 2)。

 来源

此服务器上有 DDD 的文献和在线资源的评论列表。对于 DDD 入门建模过程,以下来源特别相关。