从需求分析到业务上线
领域模型
- 领域模型反映了问题域的认知
- 领域模型决定业务响应能力
- 演进式思维和高质量领域模型
- 从需求到代码,卓越技术实践概览
认知问题是软件开发的根本问题
领域模型反映了问题域的认知
领域模型定义了领域内的关键的概念以及这些概念之间的关系。
- 领域模型是概念模型
- 领域模型描述的是实现世界的事物和他们之间的关系
- 领域模型和软件无关,反映的是问题空间的本质理解
显式模型带来更好认知,降低软件开发的困难
积累的是资产还是债务,是研发效率的分水岭
- 领域资产
- 技术债务
小结
领域模型的概念和价值
- 领域模型反映了问题域的认知
- 认知是企业的核心资产
- 深度认知带来更顺畅的需求沟通
- 深度认知带来更好的产品架构
- 领域模型和领域资产有重要关联
- 好的领域模型反映业务本质
- 好的领域模型带来更好的业务响应
缺乏领域模型的一些信号
- 组织中没有关于概念的共识
- 沟通误解和不必要的需求变更
- 看似容易支持的业务涉及到系统的许多改动点
- 架构可理解性和可维护性不足,容易发生意料之外的问题
- …..
高质量领域模型源自演进
领域模型反映了问题域的认知
认知问题本来就是渐进的
科学发现,是一个不断否定、逐步求精的过程
领域模型是一种假说,需要持续检验
产生洞察
确保领域模型可以持续演进
并不存在所谓“正确”的领域模型,
只是说当前的领域模型经过了场景的检验,而且最为优雅
科学发现,是一个不断否定、逐步求精的过程
领域模型是深层模型
有用的模型很少停留在表面层次上。随着对领域和应用的理解逐步加深,我们往往会丢掉那些最初看起来很重要的表面元素,或者切换他们的角度。 这样,⼀些在开始时不可能发现的巧妙抽象就会浮出⽔面,⽽他们恰恰切中问题的要害。
— Eric Evans
以领域模型为中心的实践体系
建立统一语言
除非做到统一语言,否则领域模型并不是真正的模型
- 一个简单规则:任何在需求描述中出现的概念,都必须出现在领域模型中。如果需求描述中存在概念之间的关系,领域模型中也必须有这个关系。
建立统一语言
- 将模型作为语言的中心,确保团队在所有的交流活动和代码中坚持使用这种语言。在画图、写文档和说话时采用这种语言。
- 试着尝试修改模型以及对应的语言表达来消除不自然的地方(相应的也要修改代码,包括模块名、类名、方法等)。
在白板上可视化领域模型
领域模型是关于认知的,它体现在每天的具体工作中。
如果领域模型只是活在 PPT 里,它并不是真正的领域模型。
