DDD是一种开发思想体系,它是模式(战略模式、战术模式)、原则和实践的集合,可以被应用到软件设计中以管理复杂性。
DDD并非一种模式语言,它是专注于交付的一种协作思想体系,其中通信起核心作用,而要高效通信,就需要使用公共语言
DDD的核心是: 团队与领域专家充分沟通,建立公共语言,关注核心领域,提炼并验证模型,代码与模型始终保持一致.
下面给一个不断演进的一个DDD领域驱动设计过程:
不断演进的一个DDD领域驱动设计过程
B)如何提炼问题域.知识提炼是一个持续协作达成共识以创建有用模型的过程. 根据业界实践总结,可以尝试:专注于最有意思的对话、从用例开始、提出有力的问题等方法. 在对旧系统模型研究时,需要更深层次地理解隐含的愿景并且能够认识到业务到底试图达到什么。影响地图和业务模型是两个经典的实践方法
DDD-提炼问题域
C)专注核心领域.通常来说一个大的问题空间中会同时存在很多的小问题域,而这些小问题域往往只有少部分是核心领域,其他的可能都是通用域和支撑域。核心域是我们软件的根本竞争力所在,因此也可以说是我们编写软件的原因
专注核心领域
D)模型驱动设计.模型驱动设计是将分析模型(业务模型)绑定到代码实现模型并确保这两个模型保持协同并可用的过程。
模型驱动设计专注于实现以及对于初始模型可能需要修改的约束,领域驱动设计则专注于语言、协作和领域知识,他们是一个彼此互补的关系。而要实现协作,就需要使用通用语言,借助通用语言可以将分析模型和代码模型绑定在一起,并最终实现团队建模。实践UL是一个持续的过程,多个迭代后会不断对UL进行验证和改进,以便实现更好的协作。
模型驱动设计
注:本文转载自uml.org.cn