领域驱动设计的必要性和模型标准——《领域驱动设计-精简版》

一、领域驱动设计

领域驱动设计早在30年前就已经为人所知,一些设计人员开始开始领域建模,领域通用语言的思维构造,以便能够在领域专家和开发专家形成高效的沟通,Eric Evans将这种思维(思潮)定义为Domain-Driven Desigin(领域驱动设计,简称DDD)。DDD在B/S还不这么流行的年代,主要应用在软件公司,因为很多都是C端,但是现在各个互联网公司将很多业务尝试模块化、量级上规模化,业务上多样化,不再是CRUD这么简单,因此,领域驱动设计在互联网开发中也起到了一个很好的引领作用。这本书在InfoQ上有专家改写出了一本精简版,全文82页,本文主要将个人阅读笔记和思考做分享。可以通过网址直接访问或下载阅读(https://files.cnblogs.com/files/anderslly/dddquickly-chinese-version.pdf

二、领域驱动设计必要性

软件开发离不开具体的业务需求,开发人员会先从理解业务开始,此时需要请教领域专家,通过了解专家口中的领域术语,对应转换成软件开发人员能够理解的计算机概念。但是,两种不同的角色身份对于同一领域有不同的理解和表达,为了让两者更加高效和准确理解,同时也提高大型软件系统的可用性,需要建立一个领域模型来向双方反映领域知识,开发人员依据领域模型来开发软件,用代码来实现模型,从而达到了通用的设计流程。实现领域模型驱动软件设计开发。

三、建立一个领域模型

领域模型是沟通领域专家和软件专家的桥梁,也是唯一实现实例抽象成统一模型,而该模型可以被两者认同。所以,在领域驱动设计时候,建立一个领域模型是非常重要的,它一般具有以下特点:

1、模型有边界,只反映具体某个领域所关注的部分。

2、领域模型只反映业务,和具体编程语言、技术无关。

3、领域模型确保了软件逻辑都在一个模型里,也在同一个地方,尽量实现高内聚,低耦合。

4、领域模型能够帮助开发人员将领域专业知识转换为软件设计知识,方便开发人员区别和学习。

5、领域模型不仅用在沟通阶段,贯穿整个开发过程,。

6、领域模型在软件开发阶段,会对原有的模型完善和细化、深入,是一个多方共同维护的结果。

7、图是表示领域模型最常见和最形象的方式,可以参见美团技术团队-领域驱动设计在互联网业务中的应用

8、领域模型是整个软件的核心,后续的业务变更和扩展也是基于原有的模型进行迭代,因此模型建立非常重要。

原文地址:https://www.cnblogs.com/geons/p/9195619.html

时间: 2024-08-29 19:32:25

领域驱动设计的必要性和模型标准——《领域驱动设计-精简版》的相关文章

C#进阶系列——DDD领域驱动设计初探(六):领域服务

前言:之前一直在搭建项目架构的代码,有点偏离我们的主题(DDD)了,这篇我们继续来聊聊DDD里面另一个比较重要的知识点:领域服务.关于领域服务的使用,书中也介绍得比较晦涩,在此就根据博主自己的理解谈谈这个知识点的使用. DDD领域驱动设计初探系列文章: C#进阶系列——DDD领域驱动设计初探(一):聚合 C#进阶系列——DDD领域驱动设计初探(二):仓储Repository(上) C#进阶系列——DDD领域驱动设计初探(三):仓储Repository(下) C#进阶系列——DDD领域驱动设计初探

NewQuant的设计(一)——整体的领域设计

NewQuant的设计思路——整体的领域分析 “领域驱动设计(DDD)”是著名软件工程建模专家Eric Evans提出的一个重要概念,是“面向对象分析设计(OOAD)”的深化.当业务逻辑变得复杂,系统变得庞大时,OOAD会使人陷入“只见树木不见树林”的处境,而DDD可以指导设计人员暂时忽略掉琐碎细节,高屋建瓴的观察问题.如果要全面了解DDD,请阅读Eric Evans的著作<领域驱动设计>和<实现领域驱动设计>. 在NewQuant的设计中,DDD的思想给了我很大启发.简单直观地讲

电商系统中的商品模型的分析与设计&mdash;续

前言     在<电商系统中的商品模型的分析与设计>中,对电商系统商品模型有一个粗浅的描述,后来有博友对货品和商品的区别以及属性有一些疑问.我也对此做一些研究,再次简单的对商品模型做一个介绍. 从SPU.SKU开始     首先我们需要澄清上篇中的这两个概念,在上篇文章中"货品"是指一种概念物品,这种物品并不是一个具体的实物,当它具备具体的属性.价格时,才是一种实物,也就是商品."商品"就是库存中一个具体的实物.例如:iphone6,就是一种货品,但用户

数据库设计的必要性

为什么要对数据库进行设计? 当我们要存储的数据比较少的是后当然不需要对数据库进行设计,但是当我们对数据的需求量越来越大时对数据库的设计就很有必要性了!如果数据库的设计不当会造成数据冗余.修改复杂.操作数据异常等问题而好的数据库设计则可以减少不必要的数据冗余,通过合理的数据规划提高系统的性能! 什么是数据库设计? 数据库设计就是将实体与实体之间的关系进行规划和结构化的过程 设计数据库的步骤 1.现实世界业务需求------->绘制E-R图--------->绘制数据库模型图-----------

20150226 IMX257 总线设备驱动模型编程之驱动篇

20150226 IMX257 总线设备驱动模型编程之驱动篇 2015-02-26 11:42 李海沿 前面我们已经实现了 总线和设备 的驱动程序,接下来我们的任务就是 实现 驱动 了 地址:http://www.cnblogs.com/lihaiyan/p/4301079.html http://www.cnblogs.com/lihaiyan/p/4301072.html 在实现驱动程序之前,我们来想两个问题: 一.问题分析 1.什么时候驱动程序会在总线上找它可以处理的设备? 在driver

Django基础核心技术之Model模型的介绍与设计

Django基础核心技术之Model模型的介绍与设计原创: Yunbo Shi Python Web与Django开发 2018-05-03Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL的配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用.今天小编我就拼了老命来用千字长文给你来介绍下第一项Django核心基础知识之Model的设计吧.想持续了解后续Django Web开发技术请订阅我的公众号[Python与Django大咖之路].

软件架构设计:程序员向架构师转型必备(第二版) 笔记

1 从程序员到架构师 1 1.1 软件业人才结构 1.1.1 金字塔型还是橄榄型? 1 1. 橄榄型:中间大两头小:   2. 区分开学历结构和能力结构:学历结构:橄榄型,能力结构:金字塔型: 1.1.2 从程序员向架构师转型 2 1. 软企该怎么做? 2 解析软件架构概念 10 1. 架构的概念很多种,不统一: 2.1 软件架构概念的分类 11 1. 架构的概念很难统一: 2. 本书将概念分为组成派和决策派两大流派,来帮助理解: 2.1.1 组成派 11 1. 软件系统的架构将系统描述为计算组

Boost程序库完全开发指南——深入C++“准”标准库(第3版)

内容简介  · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Boost 社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串处理.正则表达式.容器与数据结构.并发编程.函数式编程.泛型编程.设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简捷.优雅.灵活和高效. <Boost程序库完全开发指南——深入C++“准”标准库(

[连载]《C#通讯(串口和网络)框架的设计与实现》- 8.总体控制器的设计

目       录 第八章           总体控制器的设计... 2 8.1           总控制器的职能... 2 8.2           组装和释放部件... 3 8.3           事件响应... 5 8.4           小结... 9 第八章     总体控制器的设计 有了IO部分.设备驱动部分.显示部分.数据导出部分和服务组件部分等,在这些已经存在的接口上构建一个集成各部分的总控制器,协调各部分有序工作.事件响应和控制数据流向. 另外,这个总控制器还负责