DDD之整体设计流程(2)
一、发展史
DDD 的发展历程
- 领域建模的萌芽(20 世纪 70-90 年代):软件工程和面向对象编程兴起,开发人员开始通过类和对象来抽象和表示现实世界的业务领域。1997 年统一建模语言(UML)诞生,为领域建模提供了标准化工具和图示方法。
- 领域驱动设计的提出(2003 年):Eric Evans 出版《领域驱动设计:软件核心复杂性应对之道》,提出 DDD 核心思想,奠定了现代领域建模的理论基础。
- 领域驱动设计的推广和实践(2000 年代中后期):Vaughn Vernon 等扩展实践者通过书籍和文章进一步推广 DDD。2013 年,Vaughn Vernon 出版《实现领域驱动设计》,补充了技术实现层面内容。同时,各种开发框架和工具开始支持 DDD 思想的实现,DDD 也与敏捷开发结合,在快速迭代中得到应用。
- 微服务与现代 DDD(2010 年代):微服务架构兴起,推动了 DDD 边界上下文的实践,每个微服务可视为一个边界上下文。DDD 与事件驱动设计结合,使用领域事件在上下文之间传播信息,CQRS 和事件溯源等概念进一步增强了 DDD 在复杂系统中的应用。
- 现代领域驱动设计(2020 年代):DDD 的原则被应用于云原生开发,在 DevOps 实践中帮助团队更高效地协作。Alberto Brandolini 提出的事件风暴成为重要的建模方法。
三位专家的贡献及价值
- Eric Evans:2003 年出版《领域驱动设计:软件核心复杂性应对之道》,提出通过构建领域模型将软件设计围绕业务需求展开,强调通用语言、分层架构、聚合与边界上下文等概念。其价值在于为 DDD 奠定了理论基础,让开发社区认识到在复杂系统中,将技术解决方案与业务需求对齐的重要性,推动了软件开发从以技术为中心向以业务为中心的转变。
- Vaughn Vernon:2014 年出版《实现领域驱动设计》,详细阐述了 DDD 在架构设计、领域建模、代码实现等方面的最佳实践,为 DDD 实践者提供了具体的操作指南和参考,让 DDD 从理论走向更广泛的实际应用,帮助开发者更好地在项目中落地 DDD,提升软件系统的架构质量和可维护性。
- Alberto Brandolini:2013 年提出事件风暴概念,这是一种基于工作坊的快速建模方法,通过识别领域事件来快速建立领域模型,加速了 DDD 的建模过程。其价值在于提供了一种高效的领域建模手段,能够让团队在短时间内梳理复杂的业务流程和领域知识,促进业务人员和技术人员的沟通与协作,有助于更准确地理解业务需求,为后续的领域模型构建和系统设计打下良好基础。
二、整体流程(粗粒度)
整体分为四个阶段,首先是挖掘用户故事(梳理业务流程)、在挖掘用户故事的同时就会建立统一语言,统一语言是非常有必要的,否则就会出现沟通效率低,沟通不一致的情况,并且这种统一语言不仅是技术与技术之间,更重要的是技术与业务之间,统一语言之后就会进行上层建设(战略设计)、上层假设规划好之后,接着就会进行应用落地(战术设计)、后续会针对这四个阶段分别展开进行详细深入的介绍。
在这个整体的流程中,有必要强调一个概念,这个概念就是Model Exploration Whirlpool,翻译过来就是“建模涡流”,它要表达的意思是整个的流程并不是顺序性不可逆的,相反在不同的节点之间会进行循环迭代,不断完善,比如战略设计之后进行战术设计,但是在进行战术设计的时候,发现战略设计的某一块内容并不完善,然后就可以回到战略设计进行优化、调整。
四、总结
DDD是一个方法论,是一个解决复杂业务场景的方法论,在如今产业互联网的大背景下,通过这一理论的学习,将帮助我们更好的设计复杂业务场景。