复杂软件设计之道:领域驱动设计全面解析与实战这本书讲的是什么

简介: 30年行业实践沉淀,助力读者原著学习,更快打开DDD之门。

前言

“领域驱动设计”一词源于Eric Evans在2004年出版的图书《Domain-Driven Design:Tackling Complexity in the Heart of Software》,而Eric Evans也因此被称为“领域驱动设计之父”。领域驱动设计简称 DDD,它是面向对象、设计模式、函数式编程的集大成者,是软件设计发展的主要方向之一。DDD 诞生十多年来一直处于高速发展中,其超前思想正在指引着企业软件技术的发展,清洁(Clean)架构、六边形架构、CQRS 架构、事件溯源架构、微服务架构、无服务器架构等都与 DDD 有着紧密联系,DDD 更是微服务架构实现的基础知识。

DDD 是一种平衡业务和技术设计的方法学。通常,我们把产品经理或领域专家称为业务人员,把程序员称为技术人员,一套高质量的软件产品或项目需要两者合作才能完成,但是由于他们各自的领域背景不同,所以难以沟通和合作,而DDD则提供了一套业务建模与实现方法来消除两者间的隔阂。

为什么写这本书

写这本书的原因有二。

DDD 中引入了上下文、聚合等难以理解或实践的概念,导致新手入门和使用比较难,而笔者自 DDD 出现以来,一直专注于其中,并在以 jdon 为主的分享平台上不断记录自己的使用心得和国外DDD的最新发展情况,所以编写此书,并且以国内软件设计人员更易理解的结构和语言对 Eric Evans 所著书中的抽象概念、建模方法进行了梳理和全面解析,以此作为多年沉淀的总结。这是原因之一。

自DDD出现以来,随着软件系统的日益复杂,其越发受到软件设计开发相关人员的重视,也得到了新的发展,比如事件溯源、事件风暴会议、失血/贫血模型与充血模型。对DDD中术语的逐步统一和规范,与各种典型技术与架构的结合实现……这是笔者编写本书的原因之二,即梳理DDD的现有发展成果,包括与DDD相关的技术与架构。

这本书写给谁

本书主要面向拥有一定实践经验的软件产品经理、领域专家、软件设计开发相关从业人员,产品经理等业务专家可以着重阅读前三个章节。

如果你是一个软件开发新手或还是一个在校学生,也推荐你阅读本书,因为其中的软件设计开发思路与方法定能为你带来极大启发。

如何阅读本书

本书分为 7 章,首先从 DDD 的起源、发展、特点等方面出发,呈现了 DDD 的全貌,然后分别介绍了领域驱动战略设计、聚合设计、实体和值对象、CQRS 架构、事件溯源,最后对DDD中经典的货物运输系统案例进行了完整、详细的讲解。

除了各章专门的实例解析外,每个概念或方法的讲解中都穿插了具体实例,读者可以结合实例来理解 DDD,学习 DDD 模型从无到有的分析过程。此外,本书也提供了开放的源码实现,还可通过书中的链接进行知识拓展。

如需获取书中所有链接的列表以方便查看其中内容,可添加机械工业出版社计算机分社官方微信,回复66112即可。

本书采用 Java 语言来具体实现,并涉及大量软件系统实现相关的技术和架构,主要包括数据库、Spring Boot、微服务、分布式事务等,读者在学习DDD建模方法的同时,也可以掌握这些技术、架构在DDD等实现中的灵活应用。

本书主要内容

本书各章内容大致如下。

第1章是领域驱动设计基础,介绍了DDD的起源、发展、特点、难点、应用场景,其中对领域复杂性、领域边界、业务策略和业务规则、统一语言和有界上下文等 DDD建模方法中的关键概念和过程进行了综述,让读者对 DDD 建模的总体方向和思路有一个了解。

第2章是领域驱动战略设计。领域驱动设计分为战略设计和战术设计两个部分,本章的战略设计从宏观角度进行领域的分析设计,主要讲解了有界上下文、统一语言及多种有界上下文发现方法,也包括对业务平台与中台设计、事件风暴会议的介绍。

版权:机械工业出版社