【领域驱动设计 打通DDD最小闭环】DDD的开发流程、参与人员和统一语言

本文主要是介绍【领域驱动设计 打通DDD最小闭环】DDD的开发流程、参与人员和统一语言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一个学习阶段就是夯实基础,打通DDD的一个最小闭环,首先明确下DDD的最小闭环包含哪些步骤
在这里插入图片描述

开发流程

DDD的整体开发流程如下图所示,包含两个大的时间节点,模型的建立和模型的实现。
在这里插入图片描述
这样就是一个DDD的最小闭环,在实践中,尤其是对敏捷软件开发来说,这些步骤不是线性的,而是反复迭代、互相穿插的

战略设计阶段

也就是模型的建立阶段,使用的都是业务术语,归根结底来自业务人员,业务人员不仅能听懂,而且负责评价建模的正确性,所以必须由技术人员+业务人员共同主导

1 需求分析

在整个开发流程中,首先是要捕获行为需求,也就是传统软件工程里的“获取需求”。这一步,我们要识别需求里有哪些流程、哪些功能,每个功能由什么人操作,会产生什么结果,我们使用的分析方式是:业务事件风暴

2 领域建模

需求捕获完成后,接下来,我们就可以进行领域建模了,也就是通过建立领域模型,把需求里的主要业务知识描述清楚

战术设计阶段

也就是模型的实现阶段,业务人员不需要理解也不关注的,会包含技术实现方面的内容,所以由技术人员主导

3 架构设计

基于领域模型,我们就可以做架构设计,包括进程间和进程内的架构。比如说

  • 进程间架构:微服务设计、中台设计都属于进程间架构。
  • 进程内架构:通常说的 DDD 分层架构是进程内架构

对于项目实践来说,其实进程间可以理解为服务间的交互方式,进程内指的是服务内各个模块的交互方式。

4 数据库设计

依据架构设计进行对应的数据库表设计

5 代码实现

最后一步是按照设计完成代码编写。从这里也可以看的出来,代码实现其实是最容易的,一旦整体的设计成型了,代码实现就是水到渠成的事情,把文本语言翻译成计算机语言的过程。

参与人员

参与人员分为业务方和技术方,对于不同的业务,角色是不一定的

  • 领域专家:领域专家需要对业务有总体性和本质性的把握,同时对业务发展也要有一定前瞻性,对于商户可能就是:业务策略、商业分析师、运营、PA、PM等各种角色
  • 架构师及核心开发人员:要懂一些业务基础概念能够和业务讨论,了解相关业务模式,技术上一定要过硬。

核心就是这两方,不同阶段可能会有所补充,例如实现阶段可能会有一些基础RD、QA、FE等角色参与进来。

统一语言

在设计前一定要通过事件风暴形成UL语言表,确保大家对一件事物的理解是一致的,提到这个名词对它背后的含义和本质信息有共识,如果前期认知有GAP,后期实现阶段问题会被放大很多。

总结一下

其实我们日常开发都比较伪DDD,整体实现还是使用 MVC,代码结构类似 Controller、Service、DAO,个人认为这也无可厚非,只是代码的组织形式而已,关键是我们在整体设计时往往缺乏(领域建模-架构设计)这关键两步,很多时候都是就着一个功能点进行(需求分析-数据库 -> 代码实现)。这样没有全局的视角很容易盲人摸象,导致后续摸到一点打个补丁,项目难以维护。DDD的关键不全然是代码架构设计的指导,更是一种应对复杂业务的开发及协作模式,关键人员先通过UL建立有全局共识认知,不确认的地方预留扩展点,再进行穿插迭代式的小闭环补足认知和功能偏差更好些。

这篇关于【领域驱动设计 打通DDD最小闭环】DDD的开发流程、参与人员和统一语言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101040

相关文章

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys