课程简介
工作坊介绍:
领域驱动设计全过程工作坊将以事件风暴为纵贯线,以领域场景为横切面,驱动从战 略设计到战术设计的全生命周期的完整开发过程。内容涵盖事件风暴、限界上下文、 上下文映射、场景驱动设计和测试驱动开发。整个工作坊围绕为学在线课堂的案例全程演练具有实操价值的领域驱动设计方法。
目标收益
通过本次工作坊,你将能够深刻体会领域驱动从战略设计到战术设计的全过程;你将学到如何将事件风暴运用到具体的项目开发中,并利用它进行业务分析、架构设计和编程开发,在降低业务复杂度的同时提高开发质量;你将学到如何利用场景驱动设计固化设计和开发过程,在现有开发团队中实现领域驱动设计在复杂系统下的软着陆。
培训对象
1、专注于行业软件开发或互联网开发的软件从业者
2、希望掌握事件风暴方法的业务分析人员与开发人员
3、希望提高领域建模与分析能力的软件设计人员
4、希望掌握领域驱动设计方法并运用到项目中的后端开发人员
课程大纲
领域驱动设计过程 (1小时) |
贯穿战略式设计到战术式设计,整体介绍领域驱动设计的完整过程和基本概念。 |
事件风暴(1小时) |
介绍事件风暴的基本概念,包括领域事件的基本特征,事件风暴的设计驱动力,并介绍事件风暴的可视化符号特征,为开展事件风暴工作坊做准备。 |
探索业务全景 (3小时) |
通过识别事件风暴的领域事件,并利用事件因果关系的驱动力识别各自的前置事件和 后置事件,形成一条或多条代表了时间轴的事件流。 探索过程包括: • 识别代表业务全景的领域事件 • 标记代表问题、重要关注点的热点 • 为每个领域事件识别参与者 • 对所有事件进行横向和纵向的切分,获得候选限界上下文 • 遍历所有事件,确定上下文映射 |
领域分析建模 (2小时) |
针对限界上下文内的领域事件进行领域分析建模。这个过程属于事件风暴的第二阶段,将进一步确定领域分析模型。分析过程如下: • 根据领域事件确定决策命令 • 根据决策命令确定读模型 • 根据决策命令和领域事件之间的关系确定聚合 • 根据读模型、聚合获得领域分析模型 |
场景驱动设计 (1小时) |
选择一个领域场景,由参与者开启一个初始状态,开始执行具有时序性的连续任务, 角色之间采用行为协作来共同满足业务价值,这就是场景驱动设计(Scenario Driven Design)。 这个过程是从领域分析模型到领域设计模型的关键步骤,同时也有利于降低开发团队 的设计门槛,形成固化的领域驱动战术设计过程。 |
场景驱动设计的过程 (2小时) |
场景驱动设计以事件风暴识别出来的领域场景为起点,以领域分析模型中的模型对象 结合角色构造型作为参与协作的设计元素,固化为一个可按部就班执行的动态设计过 程。整个设计过程分为三个步骤: • 识别场景:从需求中识别出独立的具有业务价值的领域场景 • 分解任务:根据职责的层次对领域场景进行任务分解 • 分配职责:为领域驱动设计角色构造型分配不同层次的职责 |
测试驱动开发 (2小时) | 场景驱动设计与测试驱动开发之间形成了一种相辅相成的设计伴侣。场景驱动设计分解出来的任务以及角色构造型的协作时序图,可以作为测试驱动开发的起点。测试驱动开发的代码编写又反过来验证场景驱动设计的正确性,并通过重构改进代码质量, 并重新发现之前未曾发现的隐含概念。在本次工作坊中,我们将选择一个领域场景, 严格按照测试驱动开发的开发节奏进行。 |
领域驱动设计过程 (1小时) 贯穿战略式设计到战术式设计,整体介绍领域驱动设计的完整过程和基本概念。 |
事件风暴(1小时) 介绍事件风暴的基本概念,包括领域事件的基本特征,事件风暴的设计驱动力,并介绍事件风暴的可视化符号特征,为开展事件风暴工作坊做准备。 |
探索业务全景 (3小时) 通过识别事件风暴的领域事件,并利用事件因果关系的驱动力识别各自的前置事件和 后置事件,形成一条或多条代表了时间轴的事件流。 探索过程包括: • 识别代表业务全景的领域事件 • 标记代表问题、重要关注点的热点 • 为每个领域事件识别参与者 • 对所有事件进行横向和纵向的切分,获得候选限界上下文 • 遍历所有事件,确定上下文映射 |
领域分析建模 (2小时) 针对限界上下文内的领域事件进行领域分析建模。这个过程属于事件风暴的第二阶段,将进一步确定领域分析模型。分析过程如下: • 根据领域事件确定决策命令 • 根据决策命令确定读模型 • 根据决策命令和领域事件之间的关系确定聚合 • 根据读模型、聚合获得领域分析模型 |
场景驱动设计 (1小时) 选择一个领域场景,由参与者开启一个初始状态,开始执行具有时序性的连续任务, 角色之间采用行为协作来共同满足业务价值,这就是场景驱动设计(Scenario Driven Design)。 这个过程是从领域分析模型到领域设计模型的关键步骤,同时也有利于降低开发团队 的设计门槛,形成固化的领域驱动战术设计过程。 |
场景驱动设计的过程 (2小时) 场景驱动设计以事件风暴识别出来的领域场景为起点,以领域分析模型中的模型对象 结合角色构造型作为参与协作的设计元素,固化为一个可按部就班执行的动态设计过 程。整个设计过程分为三个步骤: • 识别场景:从需求中识别出独立的具有业务价值的领域场景 • 分解任务:根据职责的层次对领域场景进行任务分解 • 分配职责:为领域驱动设计角色构造型分配不同层次的职责 |
测试驱动开发 (2小时) 场景驱动设计与测试驱动开发之间形成了一种相辅相成的设计伴侣。场景驱动设计分解出来的任务以及角色构造型的协作时序图,可以作为测试驱动开发的起点。测试驱动开发的代码编写又反过来验证场景驱动设计的正确性,并通过重构改进代码质量, 并重新发现之前未曾发现的隐含概念。在本次工作坊中,我们将选择一个领域场景, 严格按照测试驱动开发的开发节奏进行。 |