课程介绍
领域驱动设计案例实战训练营建立了完整的领域驱动设计统一过程,围绕着领域为核心驱动力,引入需求分析、架构设计与领域建模的最佳实践,在敏捷迭代开发模式的规范下,为团队提供了一套规范而完整的参考过程体系,旨在解决需求分析与软件设计的不一致问题,解决领域建模与程序实现的不一致问题,控制业务复杂度与技术复杂度,为业务复杂的企业系统提供行之有效的设计解决方案。
三个课程亮点:
· 领域驱动设计全方位阐释:课程内容来自讲师在项目中推行领域驱动设计的经验总结,是对Eric Evans领域驱动设计的全面阐释,内容覆盖领域驱动设计社区的最新进展。
· 项目实战与现场演绎:课程使用全真案例,以项目实战形式让学员全程模拟如何在项目中运用领域驱动设计,讲师将针对学员完成的内容做现场回顾与点评,改进设计方案。
贯穿知识培训到项目落地:通过培训帮助学员掌握领域驱动设计的全过程,并给出行之有效的具体方法与实践,帮助学员更快地在实际项目中运用领域驱动设计。
通过本次实战训练营,可以实现以下目标收益:
· 理解和掌握领域驱动设计方法体系
· 深入分析面向对象设计知识与设计模式
· 需求分析与领域建模技术
· 战略层面的软件体系架构设计
· 微服务架构设计以及微服务架构重构
· 应用服务、领域逻辑以及基础设施的编程实现
课程大纲
第一部分 领域驱动设计体系
以高屋建瓴的方式概括讲解整个领域驱动设计体系,内容包括:
· 经典领域驱动设计体系
· 软件系统复杂度剖析
· 领域驱动设计统一过程
讲解由Eric Evans提出的经典领域驱动设计,对整套方法体系和过程有一个完整的理解,然后,剖析软件系统的复杂度,明确复杂度的产生在于软件系统的规模与业务需求的变化,由此形成业务复杂度与技术复杂度。而领域驱动设计通过限界上下文与领域建模可以在一定程度降低业务复杂度,响应业务需求的变化,并通过隔离业务复杂度与技术复杂度整体降低软件复杂度。
针对领域驱动设计存在的不足,提出领域驱动设计统一过程,包括需求分析、架构设计与领域建模等内容,并在领域驱动设计的指导原则下进行。
第二部分 全局分析阶段
对整个项目进行业务的全局分析,内容包括:
· 全局分析的5W模型
· 价值需求分析
· 业务需求分析
全局分析阶段会梳理目标系统的价值需求和业务需求,利用5W模型梳理目标系统的利益相关人、系统愿景和范围,获得价值需求,并在价值需求的指导下,梳理参与者、目标系统与伴生系统之间的协作关系,获得业务流程,再结合业务流程的三要素“角色、场景与时间”切分业务场景与业务服务,并借鉴了用例和用户故事,重点讲解业务服务的特征、业务服务规约的编写。
在进行价值需求分析与业务需求分析中,需要用到需求分析的方法,包括:
· 业务流程泳道图
· 业务服务分析
案例讲解:某大型业务系统的全局分析
展示某大型业务系统的全局分析过程,展示通过业务流程获得的由业务服务组成的全局分析文档,然后针对客户案例指导团队进行全局分析,输出实践结果。
收益:
· 掌握业务流程的梳理方法
· 掌握业务服务的识别方式
· 编写业务服务规约
输出:
· 由利益相关人、系统愿景和系统范围组成的价值需求
· 由业务流程、业务场景和业务服务组成的业务需求
· 主要的业务服务规约
案例演练:购票系统的业务服务
输出:
· 购票业务流程的业务服务
第三部分 架构映射阶段
结合软件复杂度的本质分析与软件架构的定义,剖析领域驱动设计对架构战略的应对方式,引出战略设计的核心模式——限界上下文。限界上下文作为业务能力的纵向切分、领域模型的知识语境,是响应业务变化的关键架构因素。由限界上下文之间的协作形成上下文映射,并根据领域驱动设计原则,建立以菱形对称架构与系统分层架构为支撑的领域驱动架构。内容包括:
· 业务序列图与系统上下文
· 限界上下文与菱形对称架构
· 服务风暴法识别限界上下文
· 服务序列图与上下文映射
· 服务契约
· 系统分层架构
· 领域驱动架构风格
领域驱动设计的战略设计也可以帮助团队将单体架构重构为微服务架构。借鉴防腐层的隔离思想,通过绞杀者模式对单体架构进行重构,并引入应用现代化的思想完成从传统应用向现代应用的转型。整个过程的内容包括:
· 单体架构与微服务架构的区别
· 重构模式:绞杀者模式
· 重构策略:对新需求和旧系统的不同策略
· 重构过程:基于DevOps、绞杀者模式与抽象分支方法定义重构过程
案例讲解:某大型业务系统的架构映射
展示某大型业务系统的架构映射过程,包括通过业务服务识别限界上下文的映射过程,通过服务序列图确定上下文映射模式,定义服务契约,获得整个系统的逻辑架构,然后针对客户案例指导团队进行架构设计,输出实践结果。
收益:
· 掌握C4模型的系统上下文
· 深刻理解限界上下文的本质
· 掌握服务风暴法
· 掌握服务序列图
输出:
· 系统的系统上下文
· 限界上下文与业务服务的映射关系
· 限界上下文之间的协作关系
· 服务契约列表
· 系统的应用架构
案例演练:技术部落的架构映射
输出:
· 限界上下文视图
· 限界上下文组件图
案例讲解:某遗留系统的微服务重构
运用微服务设计工作坊和绞杀者模式,讲解如何将一个遗留的单体架构逐步重构为微服务架构,并在重构的同时,满足新需求的开发。
第四部分 领域建模阶段
以领域场景为建模核心开展领域模型驱动设计,是保证领域驱动设计落地的重要条件,内容包括:
· 领域分析建模
· 领域设计建模
· 领域实现建模
在限界上下文的知识边界内分析领域逻辑,提炼领域概念,在统一语言的指导下迭代地进行领域建模,包括建立清晰表达了领域概念的领域分析模型,与以聚合为核心要素的领域设计模型,通过服务驱动设计确定每个领域模型对象的职责,并顺利地引导到领域实现建模,以测试驱动开发的流程编写领域实现代码与测试代码。
在进行领域建模时,会使用到如下方法:
· 快速建模法
· 角色构造型
· 聚合的设计
· 服务驱动设计
· 测试驱动开发
案例讲解:某大型业务系统的领域建模
展示某大型业务系统的领域建模过程,包括通过快速建模法获得领域分析模型,建立以聚合为基本设计单元的领域设计模型,服务驱动设计获得的序列图脚本,并展示如何通过测试驱动开发进行领域实现建模,然后针对客户案例指导团队进行领域建模,最终输出由文本、图与代码构成的领域模型。
收益:
· 掌握领域分析的快速建模法
· 掌握聚合设计方法,深入理解聚合的价值
· 掌握服务驱动设计方法,并与菱形对称架构结合
· 掌握与服务驱动设计结合起来的测试驱动开发
输出:
· 详尽的业务服务规约
· 由领域概念与关系构成的领域分析模型
· 由聚合构成的领域设计模型
· 由角色构造型构成的序列图脚本
· 核心领域的产品代码与测试代码
案例演练:技术部落的领域建模
输出:
· 限界上下文内部的领域分析模型
· 静态的领域设计模型
· 动态的领域设计模型