领域驱动设计总结——简介

简介: 本文为领域驱动设计系列总结的开篇,主要对领域驱动设计概念做个介绍,本系列领域驱动设计总结主要是在Eric Evans 所编写的《领域驱动设计》 一书的基础上进行归纳和总结。

本文为领域驱动设计系列总结的开篇,主要对领域驱动设计概念做个介绍,本系列领域驱动设计总结主要是在Eric Evans 所编写的《领域驱动设计》 一书的基础上进行归纳和总结。

一 背景

导致软件复杂的原因是什么?目标不清,资源缺乏,官僚主义等都有可能,但真正决定软件复杂性的是设计方法。当复杂性失去控制时,软件就会难以理解和维护,而好的设计则可以为开发复杂特性创造更多机会。设计的一些因素

是技术上的,比如分布式架构,网络,数据库等等,但大多数软件的复杂性不在技术上,而是来自于领域本身、用户的活动或业务。当这种领域的复杂性没有很好地解决时,基础技术的构思再好也无济于事。

成功的设计必须系统的考虑到软件的这个核心方面。所以大多数软件项目中,主要的焦点应是领域和领域逻辑, 复杂的领域设计应该基于模型。

二 什么是领域驱动设计?

2.1 基础概念

先来介绍几个术语概念,我结合书中内容对一些术语做出如下解释:

模型:一个抽象的系统,描述了领域的所选方面,可用于解决与该领域有关的问题。

领域:知识、影响或活动的范围。每个软件都是为了执行用户的某项活动,或是满足用户的某种需求,这些用户应用软件的问题区域就是软件的领域。

领域建模:对一类知识严格的组织且有选择的抽象,出于某种目的概括的反应现实,可以通过图或者代码,文字等表达。会根据领域的作用,而选择具体的领域模型。

所以什么是领域驱动设计?常见的定义是:领域驱动设计是一种通过将实现连接到持续进化的模型来满足复杂需求的软件开发方法。

但这个定义过于抽象,这里我根据本书内容总结下:

领域驱动设计:

领域驱动设计是一种思维方式,也是一组优先任务,它旨在加速那些必须处理复杂领域的软件项目的开发。其实质是通过消化吸收大量知识,最后产生一个反映深层次领域知识并聚焦于关键概念的模型,并以此模型驱动软件设计。

为什么使用领域驱动设计?

软件的核心就是其为用户解决领域相关的问题的能力,而通过领域驱动设计可以很好的实现这种能力。

其中领域驱动设计有两个前提:

  1. 1. 在大多数软件项目中,主要的焦点应该是领域和领域逻辑。
  2. 2. 复杂的领域设计应该基于模型。

维基百科上还多了个前提,不过本书中没有专门提到:

  • 让技术人员以及领域专家合作,以迭代方式来完善特定领域问题的概念模型。

2.2 模型在领域驱动设计中的作用

领域驱动设计本质还是创建领域模型,并以模型来驱动软件设计,所以这里需要介绍下模型在领域驱动的作用:

  1. 模型和设计的核心互相影响。模型与实现之间的紧密联系便于后续的维护和开发,我们也可以基于对模型的理解来解释代码。
  2. 模型是团队所有成员使用的通用语言中枢。由于模型与实现之间的关联,开发人员可以使用该语言来讨论程序,并和专家进行无障碍的沟通。
  3. 模型是浓缩的知识。模型是团队一致认同的领域知识的组织方式和重要元素的区分方式。透过我们如何选择术语、分解概念以及将概念联系起来。


三 领域驱动设计介绍

本篇是领域驱动设计的初步介绍,后面我将会通过以下几个方面对领域驱动内容进行总结和概括:

  1. 1. 如何运用模型
  2. 2. 如何构造领域模型
  3. 3. 如何发觉深层次模型
  4. 4. 如何设计大型系统
相关文章
|
8月前
|
存储 Java 开发者
领域驱动设计入门指南
领域驱动设计入门指南
140 0
|
前端开发 Java 数据库连接
领域驱动设计:从学习到实践(一)
产品同学将需求分析完和开发同学进行需求评审,评审完毕后开发同学开始基于需求进行设计,一般会落到数据库设计,将库表设计完毕后,再向上进行分层开发。如果是前后端分离的项目,会在前期约定接口,进行基于契约的并行开发。所以,我们称这种方式为数据驱动开发,或基于数据模型的开发。
领域驱动设计:从学习到实践(一)
|
8月前
|
测试技术 微服务
领域驱动设计的基本概念有那些
领域驱动设计的基本概念有那些
|
消息中间件 开发者
DDD领域驱动设计实战(六)-领域服务(上)
DDD领域驱动设计实战(六)-领域服务
332 0
DDD领域驱动设计实战(六)-领域服务(上)
|
12月前
|
前端开发 架构师 Java
领域驱动设计DDD从入门到代码实践
在本文中,作者将借鉴《实现领域驱动设计》的做法,介绍领域驱动设计的基本概念的同时,用一个虚拟的公司和一个虚拟的项目,把领域驱动设计进行落地实践。
11234 9
领域驱动设计DDD从入门到代码实践
|
12月前
|
存储 开发框架 Java
「软件设计」权威领域驱动设计(DDD)简介
「软件设计」权威领域驱动设计(DDD)简介
|
12月前
「企业架构」Zachman框架简介
「企业架构」Zachman框架简介
|
12月前
|
Web App开发 机器学习/深度学习 数据可视化
OneCode 领域驱动设计(DDD)技术实践(一)
OneCode-DSM(以下简称DSM)工具集是建立是以OneCode低代码引擎为基础专注于低代码建模应用的高阶建模工具。 在OneCode引擎中,出了为普通用户提供无代码的拖动设计器,低代码的业务逻辑编排器,之外还提供了供专业业务领域专家的使用的DSM建模工具。
|
测试技术 领域建模
领域驱动设计基本概念答疑
领域驱动设计基本概念答疑
|
存储 设计模式 前端开发
浅谈领域驱动设计实践——董炎焱
近年来领域驱动设计(Domain Drive Design)大火。那么我们为什么要学习领域驱动设计,它适合用于哪些场景?怎么去用?在用的过程中,又有哪些需要注意的地方呢?
浅谈领域驱动设计实践——董炎焱