战略领域驱动设计:伟大软件被遗忘的基础

主要观点:

  • 领域驱动设计(DDD)的本质在于战略基础,而非战术实现,很多项目因忽视战略而迷失方向。
  • 战略 DDD 包括域和子域定义、通用语言、有界上下文及上下文映射四个支柱,可将 DDD 从模式集转变为协作语言。
  • 战略 DDD 提供七种模式指导有界上下文间的协作,选择正确模式可确定上下文间的依赖关系。
  • 很多团队在 DDD 中常犯将其视为技术配方的错误,而忽视战略部分,应重视战略 DDD 以交付更好软件。

关键信息:

  • 战略 DDD 的四个支柱:

    • 域和子域定义:将大域划分为核心、支持和通用子域,以明确价值所在。
    • 通用语言:使术语对齐,建立共同理解,成为清晰讨论和准确建模的基础。
    • 有界上下文:明确模型和语言适用的边界,帮助澄清代码中的术语含义。
    • 上下文映射:可视化上下文间的关系,识别集成点等,防止团队间的不一致。
  • 战略 DDD 的七种模式:

    • 共享内核:两个团队共享部分模型,需强沟通和互信。
    • 客户-供应商:下游依赖上游,可影响上游但上游控制模型。
    • 顺应者:下游完全适应上游设计,常与防腐层结合。
    • 防腐层:下游用此层翻译外部模型与自身模型,保护内部语言。
    • 发布语言:多个团队同意的共享契约,用于数据交换。
    • 独立方式:某些区域无需集成,各自独立发展。
    • 开放主机服务:上游提供可扩展 API,下游系统可消费。

重要细节:

  • 以金融系统中“合规”和“交易”上下文共享“客户身份”对象为例说明共享内核。
  • 以电商平台中“订单管理”依赖“库存”说明客户-供应商关系。
  • 以电商与支付网关集成说明顺应者模式。
  • 以卡管理集成说明防腐层。
  • 以电商生态中“订单管理”和“发货”团队的共享 JSON 模式说明发布语言。
  • 以电商中核心与营销等的独立发展说明独立方式。
  • 以金融科技生态中“支付服务”的开放主机 API 说明该模式。

结论:很多团队忽视战略 DDD,应重视,作者在新书《领域驱动设计与 Java》中深入探讨,该书详细介绍战略和战术设计的连接等内容。

阅读 15
0 条评论