潘加宇—领域驱动设计用语溯源终稿(1)的副本

文字内容
1. 领域驱动设计用语溯源 潘加宇 UMLChina 首席专家
4. 潘加宇 建模研究者 • 1998-2002 程序员 • 2002-至今 建模咨询顾问 • 2007年开始提供领域建模和领 域驱动设计训练和咨询服务 扫码加我微信 答对题目有红包
5. 2004 2005 2008 好话说尽, 坏事做绝 好话说尽, 坏事做绝 好话说尽, 坏事做绝
6. 本题第一次讲, 不流畅多多包涵! • 话题来由 • “通用语言”溯源和评价 • “限界上下文”和“子域”溯源和评价 • “聚合”溯源和评价
7. 话题来由 • 口号和方法 口号 有 无 有 • 方法 有 无 无 √ × 最坏的事是“好人”做的 问题都是真的 唯独解决方案是假的 好话说尽,坏事做绝
8. 话题来由 • • 多些“客观”,少些“主观” • 关键是人! • 本团队特色的开发方法! • 软件开发是艺术! 拒绝“原教旨” • • 以为最早≠确实最早 最早≠最正确≠一直正确 工程力学、材料学和地质学?--理解起来需要智商 工作服颜色、结对洗澡、站立会议?--傻子都能看见
9. • 话题来由 • “通用语言”溯源和评价 • “限界上下文”和“子域”溯源和评价 • “聚合”溯源和评价
10. 通用语言 无所不在的 “主观”、交流 软件开发团队
11. 通用语言 广告 Whose Language?: A study in Linguistic Pragmatics, Jacob L. Mey, 1985 语言实用学
12. 通用语言 • 无所不在就是最佳选择吗? • 严谨需要向交流妥协吗? • • • 涉众用语 严谨术语 绿本 绿卡 绿单 小产权证 永久居留卡 预约单 医生,我是文盲,看不懂CT, 也听不懂你的解释! 软件模型和交流素材分离 内部交流和外部交流分离 • 妈妈带小孩来看病 • 医生-医生,医生-患者,医生-家属 外:宽松 见人说人话,见鬼说鬼话,如何通用? 内:严谨 领域专家在外面里面?
13. 通用语言 • 目的:抓住领域内涵应对需 求变更 • 描述而非“设计” • 选择目标战场(“主观”) • 尊重战场规律(“客观”) 符合领域内涵的最佳击球点 扭曲的映射难以应变
14. 通用语言 映射前 映射后 检查重复IP地址 检查重复会员 拖动商品到购物篮,勾选 输入商品和优惠券 优惠券,点击结算按钮 信息,请求结算 差别很大?特别是第一个?
15. • 话题来由 • “通用语言”溯源和评价 • “限界上下文”和“子域”溯源和评价 • “聚合”溯源和评价
16. 限界上下文和子域 “主观”
17. 限界上下文和子域 “客观”
18. 限界上下文和子域 借用 Compiler construction for digital computers, David Gries, 1971
19. 限界上下文和子域 问题子域 Object Oriented Analysis, Peter Coad, Edward Yourdon, 1990
20. 限界上下文和子域 主题 主题 主题 Object Oriented Analysis, Peter Coad, Edward Yourdon, 1990
21. 限界上下文和子域 偏“客观” 自包含 偏“主观” 为什么很多人喜欢使用用例关系和包图?
22. 限界上下文和子域 • 划分考虑 子域:领域知识 上下文:团队、物理位置、 实现手段…… • 不损害“客观”时 照顾“主观” 关联的灰色 及其衍生的 其他颜色 优先考虑 在一起
23. • 话题来由 • “通用语言”溯源和评价 • “限界上下文”和“子域”溯源和评价 • “聚合”溯源和评价
24. 聚合 会被误解成“集合” ▲ ??? 不变式
25. 聚合 Object-oriented Software Construction, Bertrand Meyer, 1997
26. 聚合 Refactoring object-oriented frameworks, William F. Opdyke, 1992
27. 聚合(题外话) 全庸? 尴尬
28. 聚合(题外话)
29. 聚合 更接近
30. 聚合 • 焦点:责任分配 • 领域知识(“客观” )是因 • 存储策略……是果 • 不能颠倒
31. 聚合 • 颠倒的思维 这个不应该是系统的用例! 是的!我都写好了,运行一下给你看,这个系统确实提供了这个用例。 这两个类关系不应该是泛化,而是关联。 是泛化,不信我打开代码给你看,代码里面写着A继承B。
32. 聚合 • 状态变化丰富的类-聚合根
33. 聚合 • 聚合<(子)域 • 聚合<上下文 • (子)域x<上下文< (子)域y