-- 知识铺
领域驱动设计入门建模过程
领域驱动设计(DDD)是一个概念框架而不是一种设计方法。正如 Evans 和 Vernon 的书中一样,DDD 是一组一致的概念和术语,但它没有规定实现 DDD 一致设计的具体过程。
这就是 DDD 入门建模过程的用武之地。它是实践者处理大型软件设计任务的实用指南。它不是一个僵化的过程,而是一套可以根据情况灵活使用的工具和方法。
在 DDD 大师课程中使用 DDD Starter 作为流程模型
我们在数字科学硕士课程“大型软件系统的领域驱动设计”中的流程将大致与“领域驱动设计入门建模流程”一致,这是一个实用的实践者完成大型软件设计任务的指南。
(c) DDD 船员,CC-BY-SA-4.0
以下是我们将如何在 DDD 大师课程中涵盖上述模型中列出的阶段。
对齐
实际上,正如在本课程中一样,此阶段通常发生在您开始项目之前。它涉及识别利益相关者、与他们在项目目标上保持一致并获得他们的支持。
此外,它还涉及识别高级用例和涉及的主要参与者。
发现
这个阶段是为了了解该领域,并尝试以半形式化的方式查明其本质。第一个子团队(EventStorming)负责此阶段。我们将使用 EventStorming(请参阅详细信息页面)。
分解/制定策略/连接/组织/定义
在 DDD 课程中,我们尝试通过对 EventStorming 结果进行后处理并应用各种规范方法来共同涵盖这些阶段。这由第二个子团队(有界上下文)涵盖。详细信息可以在此信息页面上找到)。
目标是识别有界上下文以及它们之间的关系。这样,(很大程度上)自治团队就可以各自处理有界上下文并进一步指定和实现它,而无需与其他团队进行过多协调。
DDD 入门建模流程对这些阶段的描述如下。
分解
此阶段涉及将大型系统或问题空间分解为更小、更易于管理的部分。目的是确定不同的功能或关注领域,从而更轻松地解决复杂性。
在这里,我们将尝试使用 EventStorming 研讨会的结果,并绘制(子)域边界。
制定策略
在此阶段,团队评估分解的部分,以确定哪些是业务核心,哪些是通用或支持性的。通过这样做,他们可以决定将精力和资源投入到哪里,以实现最大的业务影响。我们将使用的方法是核心域图表
连接
在此阶段,识别和定义不同有界上下文之间的关系。这涉及指定它们如何交互、通信和共享数据,以确保整个系统协同工作。使用的方法是域消息流建模。
组织
此阶段是将相关功能或概念分组到有界上下文中。有界上下文是定义和应用特定模型的明确边界,确保术语和概念具有明确的含义。作为方法,我们将创建一个上下文映射。
定义
在这里,团队深入研究每个有界上下文以创建详细的模型。这包括定义实体、值对象、聚合和领域事件,构成软件设计的基础。这里使用的方法是Bounded Context Canvas。
代码
在成熟的 DDD 项目中,此阶段将开始实施。由于时间原因,我们不会这样做。但是,我们将识别每个有界上下文中的主要聚合,并创建容器级模型。
此阶段将由 DDD 课程中的第三个小组(组件)涵盖。我们在此阶段将使用的方法在此信息页面中详细说明:
- 聚合画布和
- 每个有界上下文的 C4 模型(级别 1 和级别 2)。
来源
此服务器上有 DDD 的文献和在线资源的评论列表。对于 DDD 入门建模过程,以下来源特别相关。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240627/%E9%A2%86%E5%9F%9F%E9%A9%B1%E5%8A%A8%E8%AE%BE%E8%AE%A1%E5%85%A5%E9%97%A8%E5%BB%BA%E6%A8%A1%E6%B5%81%E7%A8%8B-%E5%BB%BA%E7%AD%91%E5%AE%9E%E9%AA%8C%E5%AE%A4%E7%BD%91%E7%AB%99--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com