复杂软件设计之道

彭晨阳
图片 前言 “领域驱动设计”一词源于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相关的技术与架构。 这本书写给谁 本书主…