课程简介
本次交流重点在于讲解领域驱动设计的方法体系,并将领域驱动设计与业务分析与建模技术结合起来,通过领域模型正确反映业务需求,以便于领域专家与业务分析人员、开发团队就业务需求达成共识,促进对业务需求的理解,并建立面向领域的架构体系以快速响应需求变化。
目标收益
领域驱动设计能够解决:
需求分析人员与开发团队的沟通问题
从需求到开发实现的设计问题
系统过于复杂导致代码难以维护的开发问题
本课程将从战略设计到战术设计全面讲解领域驱动设计,结合微服务架构、六边形架构以 及事件驱动架构和CQRS等知识,引入大量案例通过工作坊形式引导学员掌握领域驱动设 计的知识,并最终在项目开发中落地。
需求分析人员和领域专家无法与团队的设计人员和开发人员进行有效沟通。需求分析人员 不了解软件设计,软件设计人员常常会曲解需求内容,这是软件开发中容易出现的第一病 症。它带来的后果是设计频繁变更,设计的软件不满足客户需求。
培训对象
1、专注于行业软件开发或互联网开发的软件从业者
2、希望掌握事件风暴方法的业务分析人员与开发人员
3、希望提高领域建模与分析能力的软件设计人员
4、希望掌握领域驱动设计方法并运用到项目中的后端开发人员
课程大纲
第一部分 领域驱动设计体系 |
以高屋建瓴的方式概括讲解整个领域驱动设计体系,内容包括: •经典领域驱动设计体系 •软件系统复杂度剖析 •领域驱动设计统一过程 讲解由Eric Evans提出的经典领域驱动设计,对整套方法体系和过程有一个完整的理解,然后,剖析软件系统的复杂度,明确复杂度的产生在于软件系统的规模与业务需求的变化,由此形成业务复杂度与技术复杂度。而领域驱动设计通过限界上下文与领域建模可以在一定程度降低业务复杂度,响应业务需求的变化,并通过隔离业务复杂度与技术复杂度整体降低软件复杂度。 针对领域驱动设计存在的不足,提出领域驱动设计统一过程,包括需求分析、架构设计与领域建模等内容,并在领域驱动设计的指导原则下进行。 案例分析: 某航空公司地面保障系统的架构设计 案例分析首先将根据复杂度分析,对整个系统的问题空间进行剖析,明确复杂度的成因,然后根据企业架构思想,梳理业务架构、应用架构、数据架构与技术架构之间的关系,推导出降低和控制系统复杂度的办法。 |
第二部分 全景分析阶段 |
对整个项目进行业务的全局分析,内容包括: •全局分析的5W模型 •价值需求分析 •业务需求分析 全局分析阶段会梳理目标系统的价值需求和业务需求,利用5W模型梳理目标系统的利益相关人、系统愿景和范围,获得价值需求,并在价值需求的指导下,梳理参与者、目标系统与伴生系统之间的协作关系,获得业务流程,再结合业务流程的三要素“角色、场景与时间”切分业务场景与业务服务。 在进行价值需求分析与业务需求分析中,需要用到需求分析的方法,包括: •商业模式画布 •服务蓝图 •业务服务分析方法 |
第三部分 架构映射阶段 |
在领域驱动的战略设计阶段,以领域为核心驱动力,以限界上下文为核心模式构建面向领域的架构体系,内容包括: •限界上下文 •上下文映射 •领域驱动架构 通过全局分析阶段输出的业务场景与业务服务,利用V模型从领域维度识别限界上下文。限界上下文作为业务能力的纵向切分、领域模型的知识语境,是响应业务变化的关键架构因素。由限界上下文之间的协作形成上下文映射,并根据领域驱动设计原则,建立面向领域的架构体系,形成以菱形对称架构与系统分层架构为支撑的领域驱动架构。 工作坊: •技术部落的架构映射:根据全局分析输出的业务需求对技术部落进行架构映射,识别出系统的限界上下文,确定限界上下文之间的关系。 |
第四部分 领域建模阶段 |
以领域场景为建模核心开展领域模型驱动设计,是保证领域驱动设计落地的重要条件,内容包括: •领域分析建模 •领域设计建模 •领域实现建模 在限界上下文的知识边界内分析领域逻辑,提炼领域概念,在统一语言的指导下迭代地进行领域建模,包括建立清晰表达了领域概念的领域分析模型,与以聚合为核心要素的领域设计模型,通过服务驱动设计确定每个领域模型对象的职责,并顺利地引导到领域实现建模,以测试驱动开发的流程编写领域实现代码与测试代码。在进行领域建模时,会使用到如下可视化建模方法: •快速建模法 服务驱动设计 案例分析: •某系统的领域建模:利用业务服务规约,通过运用快速建模法获得领域分析模型,并在限界上下文的控制下识别聚合,然后按照服务驱动设计获得领域设计模型。 |
第一部分 领域驱动设计体系 以高屋建瓴的方式概括讲解整个领域驱动设计体系,内容包括: •经典领域驱动设计体系 •软件系统复杂度剖析 •领域驱动设计统一过程 讲解由Eric Evans提出的经典领域驱动设计,对整套方法体系和过程有一个完整的理解,然后,剖析软件系统的复杂度,明确复杂度的产生在于软件系统的规模与业务需求的变化,由此形成业务复杂度与技术复杂度。而领域驱动设计通过限界上下文与领域建模可以在一定程度降低业务复杂度,响应业务需求的变化,并通过隔离业务复杂度与技术复杂度整体降低软件复杂度。 针对领域驱动设计存在的不足,提出领域驱动设计统一过程,包括需求分析、架构设计与领域建模等内容,并在领域驱动设计的指导原则下进行。 案例分析: 某航空公司地面保障系统的架构设计 案例分析首先将根据复杂度分析,对整个系统的问题空间进行剖析,明确复杂度的成因,然后根据企业架构思想,梳理业务架构、应用架构、数据架构与技术架构之间的关系,推导出降低和控制系统复杂度的办法。 |
第二部分 全景分析阶段 对整个项目进行业务的全局分析,内容包括: •全局分析的5W模型 •价值需求分析 •业务需求分析 全局分析阶段会梳理目标系统的价值需求和业务需求,利用5W模型梳理目标系统的利益相关人、系统愿景和范围,获得价值需求,并在价值需求的指导下,梳理参与者、目标系统与伴生系统之间的协作关系,获得业务流程,再结合业务流程的三要素“角色、场景与时间”切分业务场景与业务服务。 在进行价值需求分析与业务需求分析中,需要用到需求分析的方法,包括: •商业模式画布 •服务蓝图 •业务服务分析方法 |
第三部分 架构映射阶段 在领域驱动的战略设计阶段,以领域为核心驱动力,以限界上下文为核心模式构建面向领域的架构体系,内容包括: •限界上下文 •上下文映射 •领域驱动架构 通过全局分析阶段输出的业务场景与业务服务,利用V模型从领域维度识别限界上下文。限界上下文作为业务能力的纵向切分、领域模型的知识语境,是响应业务变化的关键架构因素。由限界上下文之间的协作形成上下文映射,并根据领域驱动设计原则,建立面向领域的架构体系,形成以菱形对称架构与系统分层架构为支撑的领域驱动架构。 工作坊: •技术部落的架构映射:根据全局分析输出的业务需求对技术部落进行架构映射,识别出系统的限界上下文,确定限界上下文之间的关系。 |
第四部分 领域建模阶段 以领域场景为建模核心开展领域模型驱动设计,是保证领域驱动设计落地的重要条件,内容包括: •领域分析建模 •领域设计建模 •领域实现建模 在限界上下文的知识边界内分析领域逻辑,提炼领域概念,在统一语言的指导下迭代地进行领域建模,包括建立清晰表达了领域概念的领域分析模型,与以聚合为核心要素的领域设计模型,通过服务驱动设计确定每个领域模型对象的职责,并顺利地引导到领域实现建模,以测试驱动开发的流程编写领域实现代码与测试代码。在进行领域建模时,会使用到如下可视化建模方法: •快速建模法 服务驱动设计 案例分析: •某系统的领域建模:利用业务服务规约,通过运用快速建模法获得领域分析模型,并在限界上下文的控制下识别聚合,然后按照服务驱动设计获得领域设计模型。 |