解构领域驱动设计
上QQ阅读APP看书,第一时间看更新

第一篇 开篇

开篇,明义。

领域驱动设计(domain-driven design,DDD)需要应对软件复杂度的挑战!那么,软件复杂度的成因究竟是什么,又该如何应对?概括而言,即:

  • 规模——通过分而治之控制规模;
  • 结构——通过边界保证清晰有序;
  • 变化——顺应变化方向。

领域驱动设计对软件复杂度的应对之道可进一步阐述为:

  • 规模——以子领域、限界上下文对问题空间与解空间分而治之;
  • 结构——以分层架构隔离业务复杂度与技术复杂度,形成清晰的架构;
  • 变化——通过领域建模抽象为以聚合为核心的领域模型,响应需求之变化。

子领域、限界上下文、分层架构和聚合皆为领域驱动设计的核心元模型,分属战略设计和战术设计,贯穿了从问题空间到解空间的全过程。

领域驱动设计的开放性是其生命长青的基石,但它过于灵活的特点也让运用它的开发团队举步维艰。我之所以提出领域驱动设计统一过程,正是要在开放的方法体系指导之下,摸索出一条行之有效的软件构建之路,既不悖于领域驱动设计之精神,又不吝于运用设计元模型,通过提供简单有效的实践方法,建立具有目的性和可操作性的构建过程。

领域驱动设计统一过程分为3个阶段:

  • 全局分析阶段;
  • 架构映射阶段;
  • 领域建模阶段。

每个阶段的过程工作流既融合了领域驱动设计既有的设计元模型,又提出了新的模式、方法和实践,丰富了领域驱动设计的外延。领域驱动设计统一过程对项目管理、需求管理和团队管理也提出了明确的要求,因为它们虽然不属于领域驱动设计关注的范畴,却是保证领域驱动设计实践与成功落地的重要因素。

领域驱动设计统一过程是对领域驱动设计进行解构的核心内容!