简介
本次交流重点在于讲解领域驱动设计的方法体系,并将领域驱动设计与业务分析与建模技术结合起来,通过领域模型正确反映业务需求,以便于领域专家与业务分析人员、开发团队就业务需求达成共识,促进对业务需求的理解,并建立面向领域的架构体系以快速响应需求变化。
目标
深入学习DDD中的核心战术概念及DDD的战略建模工具
了解领域驱动设计及其各个阶段
受众人群
有3-5年的开发经验的核心开发者、架构师
课程时长
2天(12H)
分享提纲
主题 | 授课内容 |
第一部分 领域驱动设计体系 | 以高屋建瓴的方式概括讲解整个领域驱动设计体系,内容包括: v 经典领域驱动设计体系 v 软件系统复杂度剖析 v 领域驱动设计统一过程 讲解由Eric Evans提出的经典领域驱动设计,对整套方法体系和过程有一个完整的理解,然后,剖析软件系统的复杂度,明确复杂度的产生在于软件系统的规模与业务需求的变化,由此形成业务复杂度与技术复杂度。而领域驱动设计通过限界上下文与领域建模可以在一定程度降低业务复杂度,响应业务需求的变化,并通过隔离业务复杂度与技术复杂度整体降低软件复杂度。 针对领域驱动设计存在的不足,提出领域驱动设计统一过程,包括需求分析、架构设计与领域建模等内容,并在领域驱动设计的指导原则下进行。 案例分析: ·某航空公司地面保障系统的架构设计 案例分析首先将根据复杂度分析,对整个系统的问题空间进行剖析,明确复杂度的成因,然后根据企业架构思想,梳理业务架构、应用架构、数据架构与技术架构之间的关系,推导出降低和控制系统复杂度的办法。 |
第二部分 全景分析阶段 | 对整个项目进行业务的全局分析,内容包括: v 全局分析的5W模型 v 价值需求分析 v 业务需求分析 全局分析阶段会梳理目标系统的价值需求和业务需求,利用5W模型梳理目标系统的利益相关人、系统愿景和范围,获得价值需求,并在价值需求的指导下,梳理参与者、目标系统与伴生系统之间的协作关系,获得业务流程,再结合业务流程的三要素“角色、场景与时间”切分业务场景与业务活动。 在进行价值需求分析与业务需求分析中,需要用到需求分析的方法,包括: v 商业模式画布 v 服务蓝图 v 用例分析方法 工作坊: ·技术部落的需求分析:分析如何运用商业模式画布探索需求,分析如何运用服务蓝图提炼业务流程,根据用例获得业务需求。 |
第三部分 架构映射阶段 | 在领域驱动的战略设计阶段,以领域为核心驱动力,以限界上下文为核心模式构建面向领域的架构体系,内容包括: v 限界上下文 v 上下文映射 v 领域驱动架构 通过全局分析阶段输出的业务场景与业务活动,利用V模型从领域维度识别限界上下文。限界上下文作为业务能力的纵向切分、领域模型的知识语境,是响应业务变化的关键架构因素。由限界上下文之间的协作形成上下文映射,并根据领域驱动设计原则,建立面向领域的架构体系,形成以菱形对称架构与分层架构为支撑的领域驱动架构。 工作坊: ·技术部落的架构映射:根据全局分析输出的业务需求对技术部落进行架构映射,识别出系统的限界上下文,确定限界上下文之间的关系。 |
第四部分 领域建模阶段 | 以领域场景为建模核心开展领域模型驱动设计,是保证领域驱动设计落地的重要条件,内容包括: v 领域分析建模 v 领域设计建模 v 领域实现建模 在限界上下文的知识边界内分析领域逻辑,提炼领域概念,在统一语言的指导下迭代地进行领域建模,包括建立清晰表达了领域概念的领域分析模型,与以聚合为核心要素的领域设计模型,通过场景驱动设计确定每个领域模型对象的职责,并顺利地引导到领域实现建模,以测试驱动开发的流程编写领域实现代码与测试代码。在进行领域建模时,会使用到如下可视化建模方法: v 快速建模法 v 场景驱动设计 案例分析: ·某系统的领域建模:利用用例分析的成果,通过运用快速建模法获得领域分析模型,并在限界上下文的控制下识别聚合,然后按照场景驱动设计获得领域设计模型。 |
第五部分:微服务与领域驱动设计 | 微服务的设计至关重要,我们需要考虑微服务的粒度,服务的边界,服务之间的通信等。倘若服务的设计不合理,就可能导致不必要的代码重复、不必要的耦合,甚至影响到整个系统的部署、性能等。目前,业界基本达成一个共识,就是利用领域驱动设计的知识,特别是通过限界上下文来设计微服务。 若将限界上下文作为通信边界,则限界上下文即可作为微服务的边界,以限界上下文为核心的领域驱动架构即可以映射为微服务架构,而上下文映射则可以指导微服务之间的协作关系。本部分内容将基于领域驱动设计知识讲解微服务的架构设计,内容包括: v 面向领域架构到微服务架构的映射 v 基于服务(REST、RPC)的微服务架构 v 基于事件的微服务架构 v CQRS架构模式 案例分析: ·国际报税系统的微服务演化:利用领域驱动设计思想,从单体架构演化到微服务架构 ·某航空公司地面保障系统的微服务架构:通过领域驱动设计的限界上下文识别微服务,并确定事件驱动架构风格作为微服务之间的主要通信模式,并结合该系统讲解主流微服务平台的技术选型。 |
Bruce Zhang
百林哲咨询(北京)有限公司专家团队成员
Bruce Zhang
百林哲咨询(北京)有限公司专家团队成员
Bruce Zhang
百林哲咨询(北京)有限公司专家团队成员
Bruce Zhang
百林哲咨询(北京)有限公司专家团队成员
Bruce Zhang
百林哲咨询(北京)有限公司专家团队成员
Bruce Zhang
百林哲咨询(北京)有限公司专家团队成员
Bruce Zhang
百林哲咨询(北京)有限公司专家团队成员