【领域驱动设计 打通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语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia