什么是领域驱动设计(DDD)?- mathias


领域驱动设计是一门软件设计学科,其核心原则是:

  • 复杂领域的软件要求所有设计人员(工程师、测试人员、分析师……)在领域专家的指导下对该领域有深入的、共同的理解
  • 这种理解植根于语言:领域语言应该被形式化为一种无处不在的语言(共享、一致、明确)
  • 理解表达在专家和设计师之间共享的模型中,该模型表达问题空间(相对于解决方案空间)
  • 模型无法回避用明确方式表示根本复杂域。
  • 一个复杂的领域不能有效地表达为单一的通用模型和语言,因此必须由系统设计者分离成有界上下文(即内部一致的语言和模型)
  • 模型和语言应该与我们对领域的理解和变化保持同步,通过不断重构以获得更深入的洞察力

DDD 是一门设计学科,您可以在其中
  • 把握领域
  • 同意一种语言
  • 在共享模型中表达
  • 拥抱复杂性
  • 在上下文中分离模型
  • ......并不断进化它们

   
以上是著名DDD专家mathiasverraes的定义,背景资料:
领域驱动设计提供了一个关于软件设计的包罗万象的观点。它从微观层面的代码和设计模式,到模型及其语言,到模型之间的通信和关系,再到对系统系统的大规模推理来考虑设计。最重要的是,它旨在务实。您不会在所有地方都应用 DDD,而是在它会产生最大影响的地方进行。
DDD 不是规定性的。它没有关于如何去做的规则,并且对新的解释持开放态度。它没有规定的方法,或做法,甚至图案书中1是为了说明,而非最后一组。许多人们现在认为是 DDD 的核心方法,例如 EventStorming,在本书撰写时并不存在。
这使得众所周知的 DDD 难以定义。这个定义专门将 DDD 作为一门学科,即设计为你所做的,具有一套指导原则的活动。我已经在我的研讨会中使用和改进这个定义大约 6 到 7 年了,所以我希望它足够坚固,对 DDD 的新手和经验丰富的从业者都有用。我希望它保持最新的新见解。