构建领域驱动设计知识体系

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 构建领域驱动设计知识体系 张逸 http://zhangyi.xyz
2. 关于我 架构编码实践者 领域驱动设计布道师 ⼤数据平台架构师 敏捷转型咨询师 @逸⾔
3. 01 AGENDA 领域驱动设计的历史回溯 ‣ ⾥程碑之⼀ ‣ ⾥程碑之⼆ ‣ ⾥程碑之三 ‣ ⾥程碑之四 03 领域驱动设计参考过程模型 02 对领域驱动设计的新定位 ‣ 领域驱动设计魔⽅ ‣ 丰富领域驱动设计⽅法 04 领域驱动设计能⼒评估模型
4. 01 领域驱动设计的历史回溯
5. ⾥程碑之⼀ 诞⽣ Domain-Driven Design Tackling Complexity in Software 2004年
6. ⾥程碑之⼆ 领域事件的引⼊
7. ⾥程碑之⼆ 领域事件的引⼊ Domain Event CQRS Event Sourcing Event Store EDA Reactive Programming Functional Programming
8. 建模范式 的改变 对象范式 事件范式 函数范式 以“对象”为中⼼ Entity Value Object Aggregate Domain Service Repository Factory 以“事件”为中⼼ Domain Event Event Soucing Event Store Application Event Publisher-Subscriber 以“函数”为中⼼ Algebraic Data Type Pure Function Combinator Monad
9. 架构⻛格 的改变 对象范式 事件范式 函数范式 分层架构 事件驱动架构 CQRS 响应式架构
10. ⾥程碑之三 微服务的引⼊ A microservices architecture puts each element of functionality into a seperate service and scales by distributing these services accross servers, replicating as needed.
11. 设计理念 的改变 数据模型驱动设计 不适合微服务
12. ID AR AR ID 设计理念 的改变 AR • 限界上下⽂的边界可以是微服 务的边界 • 聚合的边界更加稳定,通过ID 引⽤聚合,有利于限界上下⽂ 边界的调整,改变通信⽅式 AR ID AR ID ID AR AR
13. UI M Q 设计理念 的改变 domain DB domain ACL OHS ACL OHS domain domain ACL OHS domain • 维护好限界上下⽂边界,有 利于从单体架构迁移到微服 务架构
14. • 设计理念 的改变 领域模型与数据模型的分 离,有利于从单体架构迁移 到微服务架构
15. 领域驱动 设计带来 价值 • 领域驱动设计的模式与实践 降低了从单体架构迁移到微 服务架构的⻛险
16. 天作之合 Microservices Architecture Domain Driven Design
17. ⾥程碑之四 中台战略的引⼊ 企业级能⼒复⽤平台 • 企业级:定义了中台的范围,区分开了单系统的服 务化与微服务; • • • 能⼒:定义了中台的主要承载对象,能⼒的抽象解 释了各种各样中台的存在; 复⽤:定义了中台的核⼼价值; 平台:定义了中台的主要形式。
18. Problem Space 企业级 与能⼒ Solution Space Core Subdomain Core Subdomain Bounded Context Generic Subdomain Supporting Subdomain Bounded Context 核⼼⼦领域:企业核⼼价值 Bounded Context Bounded Context 限界上下⽂:业务能⼒
19. 领域模型 的复⽤
20. 边界控制与 平台沉淀
21. 探索…… ZhongTai Strategy ? Domain Driven Design
22. 02 对领域驱动设计的新定位
23. 新的定位 Domain Driven Design Technology Philosophy
24. 件 ⼯ Z轴 式 模 法 ⽅ X轴 宏观层次 领域驱动 设计魔⽅ X轴:限定领域驱动设计的内容 Y轴:分离领域驱动设计的层次 Z轴:蕴含了领域驱动设计的实践 微观层次 纳⽶层次 Y轴 业 务 技 术 管 理
25. 宏观层次 战略设计阶段 宏观层次 全局分析阶段 宏观层次 宏观层次是针对整个软件系统开展的 战略宏图规划与战略概要设计,通常 分为两个阶段: • 全局分析阶段 • 战略设计阶段 业务全局 分析⽂档 业务战略 设计⽂档 架构全局 分析⽂档 核⼼领域 业务架构 限界上下⽂ 上下⽂映射 需求 管理体系 整洁架构 康威定律 特性团队 RAID⻛暴 业 务 精益 需求管理 技 术 管 理 ⼯ 模 ⽅ 法 微服务 架构⻛格 事件⻛暴 件 式 架构战略 设计⽂档 发布计划 RUP 4+1视图 业 项⽬先启 故事地图 务 件 ⼯ SCRUM 技 式 术 管 模 理 ⽅ 法
26. 微观层次 微观层次 微观层次是承上启下的关键环节,是领域驱动设计在 团队中落地的重要前提,这个层次输出的⼯件可以为 团队成员提供直接的指导与参考价值。 模型 设计⽂档 服务接⼝ 定义⽂档 ⻆⾊构造型 事件⻛暴 场景驱动设计 分层架构 迭代计划 服务模型 驱动设计 业 务 ⽤户故事 看板 件 ⼯ Scrum 技 式 术 模 管 理 ⽅ 法
27. 纳⽶层次 领域模型代码 简单设计 纳⽶层次 纳⽶层次对应于软件开发过程的实现阶段。 基础设施代码 燃尽图 燃烧图 ORM 事务处理 测试驱动开发 框架应⽤开发 业 务 迭代实践 件 ⼯ Scrum 技 式 术 模 管 理 ⽅ 法
28. 引⼊ -业务架构 业务架构(Business Architecture)呈现全⾯的、多维度 的业务视⻆,包括:业务能⼒、端到端的价值交付、信息 和组织结构,以及这些业务视⻆之间的关系,还包括它们 与战略、产品、政策、项⽬和Stakeholder之间的关系。
29. 引⼊ -C4模型的 System Context 引⼊系统上下⽂(System Context)确定系统的边 界,了解当前系统与利益相关⼈之间的关系,并确 定它的外部环境,包括与其集成的第三⽅系统与基 础设施。
30. 引⼊ -事件⻛暴
31. 引⼊ -架构模式
32. 引⼊ -RAID⻛暴
33. 引⼊ -RUP 4+1 视图 领域驱动设计并没有明确给出架构的设计过程与 设计交付物,限界上下⽂、分层架构、上下⽂映 射仅仅作为战略设计的模式⽽存在。可以引⼊ RUP 4+1视图与领域驱动设计的战略设计结合。
34. 引⼊ -康威定律 Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.
35. 引⼊ -精益需求管 理与敏捷过 程管理
36. 引⼊ -场景驱动设 计与测试驱 动开发
37. 引⼊ -测试策略 领域驱动设计架构的每个逻辑层都定义了⾃⼰的控 制边界,领域驱动设计的⻆⾊构造型位于不同层 次。不同的设计元素,决定了它们不同的职责和设 计的粒度。层次、职责和粒度的差异,恰好可以与 测试策略形成⼀⼀对应的关系。
38. 03 领域驱动设计参考过程模型
39. 参考过程 模型-固化 与简化 固化领域驱动设计的过程,提供简单有效 的实践⽅法,建⽴具有⽬的性和可操作性 的研发过程
40. 领域驱动 设计参考 过程模型 全局分析阶段 价值链 Value Stream 核⼼⼦领域 Core Subdomain C4模型 C4 Model 系统上下⽂ System Context ⻛险驱动设计 Risk Driven Design RAID Risks, Assupmtion, Issue, Dependency 精益需求管理 Lean Requirement Management 需求故事 Epic - Feature - User Story
41. 限界上下⽂ Bounded Context 事件⻛暴 Event Storming 领域驱动 设计参考 过程模型 上下⽂映射 Context Map 事件流 Event Stream 战略设计阶段 RUP 4+1 架构视图 Architectural View 敏捷项⽬管理 Agile Project Management MVP & 故事地图 MVP & Story Map
42. 领域驱动 设计参考 过程模型 领域模型 驱动设计阶段 迭代实践模式 Iteration Pratice Pattern User Story | Kick Off | Desk Check 事件⻛暴 Event Storming 领域分析模型 Domain Analysis Model 场景驱动设计 Scenario Driven Design 领域设计模型 Domain Design Model 测试驱动开发 领域实现模型 Domain Implement Model
43. 04 领域驱动设计能⼒评估模型
44. 敏捷迭代 能⼒ 能⼒评估 模型介绍 领域建模 能⼒ DCAM 整洁编码 能⼒ 领域驱动设计能⼒评估模型 Domain-driven design Capability Assesment Model, DMAM 架构设计 能⼒ DCAM是⼀套评估模型,提供了对软件产品实施领域驱动设计 的评估指标,指导团队进⾏能⼒的培养和提升。 ⽬前,DCAM仅限于对象范式的领域驱动设计。
45. DCAM并⾮⼀个标准或⼀套认证体系,更⾮事先制定和强制执⾏的评估框架。建⽴这套模型的⽬的仅仅 是为了更好地实施领域驱动设计,它是⼀个能够不断演化的评估框架。 能⼒评估 模型介绍 根据能⼒⽔平,分为三个等级层次。 初始级 成⻓级 成熟级
46. 等级 评估维度 敏捷迭代 能⼒ 团队 需求 过程 初始级 组件团队,缺乏定期的交流制度 没有清晰的需求管理体系 每个版本的开发周期⻓,⽆法快速响应 需求的变化 成⻓级 全功能的特性团队,每⽇站⽴会议 定义了产品待办项和迭代待办项 采⽤了迭代开发,定期交付⼩版本 成熟级 ⾃组织的特性团队,团队成员定期 轮换,形成知识共享 建⽴了故事地图、建⽴了史诗故 事、特性与⽤户故事的需求体系 建⽴了可视化的看板,由下游拉动需求 的开发,消除浪费
47. 等级 评估维度 领域建模 能⼒ 领域建模 初始级 采⽤数据建模,建⽴以数据表关系为基础的数据模型 成⻓级 采⽤领域建模,建模⼯作只限于少数资深技术⼈员,并凭借经验完成建模 成熟级 采⽤事件⻛暴、四⾊建模等建模⽅法,由领域专家与开发团队⼀起围绕核⼼⼦领域开展领域建模
48. 评估维度 架构设计 能⼒ 等级 架构 设计 初始级 采⽤传统三层架构,未遵循整洁架构,整个系统缺乏清晰 的边界 采⽤贫⾎领域模型,业务逻辑主要以事务脚本实现 成⻓级 领域层作为分层架构的独⽴⼀层,并为领域层划分了模块 采⽤了富领域模型,遵循⾯向对象设计思想,但未明确 定义聚合和资源库 成熟级 建⽴了系统层次与限界上下⽂层次的系统架构,遵循了整 洁架构,建⽴了清晰的限界上下⽂与领域层边界 建⽴了以聚合为核⼼的领域设计模型,职责合理地分配 给聚合、资源库与领域服务
49. 等级 评估维度 整洁编码 能⼒ 编码 ⾃动化测试 初始级 编码以实现功能为唯⼀⽬的 没有任何⾃动化测试 成⻓级 ⽅法和类的命名都遵循了统⼀语⾔,可读性⾼ 为核⼼的领域产品代码提供了单元测试 成熟级 采⽤测试驱动开发编写领域代码,遵循简单设计原则 具有明确的测试战略,单元测试先⾏
50. 与我交流 「逸⾔」 公众号 「TOP DDD」 知识星球

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.134.0. UTC+08:00, 2024-10-05 06:53
浙ICP备14020137号-1 $Map of visitor$