前言
最近公司通过8节课组织了DDD培训,在此以系列文章作为总结,本篇文章主要介绍DDD整体概述
什么是DDD?(领域驱动设计)
传统架构方式
如果对于传统的web开发比较熟悉的同学一定会了解传统的三层架构,既controller层,service层,dao层,
传统的软件架构能够解决业务中的实际问题,但是对于复杂多变的业务场景,很多时候会发现,业务是一团乱麻,在现有系统中扩展功能会难以扩展,或者业务的扩展导致其他业务的不可用
DDD的定义
DDD经过这些年的发展,已经成为了一个业务与技术结合,架构适应业务变化的良好的实现,下边具体介绍ddd的理论及落地方法
定义:领域驱动设计是一种处理高度复杂领域的设计思想,试图痛殴过分离技术实现的复杂性,围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演化的问题.
团队应用可以成功的开发复杂的业务软件系统,使系统增大时仍然保持敏捷
DDD的三阶段
战略设计->战术设计->技术实现
- 战略设计:对于业务进行整体的梳理
- 战术设计:如何将业务与技术组织结合起来
- 技术实现:具体的技术方案,解决实际的业务问题
当我们获取到具体的业务需求时,需要对业务进行梳理,建立模型,获取业务中涉及到的
建模
软件开发本质上是将现实世界抽象到模型,建模的过程,模型解决了现实世界中的问题
建模的特点
- 解决特定问题
- 对现实世界模拟
- 抽取一部分属性,忽略一部分属性
- 多角度,多方法
- 人造物
建模的过程
现实世界->行为模型->领域模型->实现模型->代码执行
行为模型包括: 用户故事, 事件风暴, 用例
领域模型包括:领域建模
实现模型包括:分层架构,代码,数据库
后续的文章会详细的介绍具体的内容
各个阶段的协作图
- PO:project owner 项目拥有者
- PM:project manager 项目管理者
- BA:business analyst 商业分析师
- TL:Tech Lead 技术领导
- dev:developer 开发者
- QA:Quality Assurance 质量保证
每种角色在项目中复杂不同时期的工作,每种角色之间也会有交叉的地方,没有绝对的界限,最终大家协作完成项目
总结
- DDD是一种处理高度复杂领域的设计思想
- DDD解决了软件难以理解,难以维护的问题
- DDD采用分段式协作
- DDD采用统一建模语言,将业务与技术拉通