领域、系统和组织-《实现领域驱动设计》中译本评点-第2章(4)

相关链接

DDD领域驱动设计批评文集>>

汪峰哭晕在厕所-《实现领域驱动设计》中译本评点-第2章(1)

可不是乱打的-《实现领域驱动设计》中译本评点-第2章(2)

“领域”的错误定义-《实现领域驱动设计》中译本评点-第2章(3)

《实现领域驱动设计》的翻译错误>>

[答疑]《实现领域驱动设计》的译者其实没错?(一)>>

[答疑]《实现领域驱动设计》的译者其实没错?(二)>>

图片

上一篇文章《“领域”的错误定义》讲述:《实现领域驱动设计》原文中把“领域”定义为“组织做的事”是错误的。

接下来,我们来看看领域和组织之间怎样能扯上关系。

很多学科都使用“领域(domain)”这个词,函数的定义域、网站的域名等等里面的“域”就是domain。

对于软件开发,domain指的应该是(软件系统需要封装的)知识领域(knowledge domain)。

(1)客观规律

宇宙、星系、星体、生命体、细胞、原子、基本粒子,当然,还有人类社会及其衍生物,万事万物都存在其运转的客观规律。

★无论人类存在还是已灭绝,无论人类是否认识这些客观规律,无论认识的精确度如何,这些客观规律就在那里。

(2)领域知识

经过不断积累和整理,人类对万事万物的认识形成各种领域知识,而且不断更新。有的更新朝着接近客观规律的方向,有的更新则有意无意地偏离客观规律。

虽然一直在进步特别是近200年进步飞快,但目前人类认识客观规律的总体精确度应该偏低——毕竟才0.7级文明嘛。

图片

当前存在的领域知识中:

①有一部分知识精确度最高,例如各种最新的科学研究成果。

②有一部分知识曾经精确度最高,但现在已经被精确度更高的知识取代,例如阴阳五行、地心说。当然,至今仍然有很多人相信或假装相信这些知识的精确度很高——“****博大精深”。

③有一部分知识是基于①②,为了某种目的想象和杜撰的。

可以为了娱乐而杜撰,例如武侠小说中的武学知识体系、当代网络小说中的修真体系、游戏中的英雄技能体系。大家明知不是真的,但依然乐在其中。

还可以为了**而杜撰,例如(此处作者删除283字)。

从上面可以看出:

★领域知识虽然源于客观规律,但不一定接近客观规律或追求接近客观规律。

许多软件系统封装的是②或③的知识,例如一款看风水的系统、一款修真游戏。

★领域知识中,涉及到人类社会或人体的知识,只占很少一部分,而且精确度偏低。

领域知识是人类对万事万物的认识,而人类自身(甚至包括其他生命体在内)在这万事万物中能占多少比例呢?

目前人类能造出机器人,造出宇宙飞船,但无法合成(不是繁殖)出一个细胞,合成生命体更是遥不可及了。

★封装在软件系统中的领域知识,涉及到人类社会或人体的比例更少。

当前的绝大多数软件系统中,和现实中有生命的“人”对应的类,与其相关的逻辑所占比例是非常少的。封装复杂逻辑的类,我们需要为之画出复杂状态机的类,往往是“订单”、“设备”、“房间”等,它们在现实中对应的是无生命的事物。

目前的软件系统关注较多的人相关的逻辑可能是“有权限”、“无权限”等等,其他逻辑还没有能力或余力照顾。例如,现实中,男性很在意一名女性是否漂亮、健康、善良,但有多少软件系统封装了这些逻辑呢?

(3)系统

此处只讨论封装领域知识、有计算能力的信息系统,它能将输入信息转成所需信息输出。

信息系统可以分为人脑系统和非人信息系统(软件系统)。

图片

人的大脑可以看作一台计算机,其中安装了许多信息系统。

例如,输入是一张人脸,输出是人的姓名,用人脑中的“人脸识别系统”辨认还是用计算机中的“人脸识别系统”辨认,本质是一样的。

注意,“封装领域知识”必须把相关的领域知识变成自己的计算能力。

人在身上揣一本数学书,或者大脑死记硬背这本数学书上的文字,却没有能力运用其中知识解数学题,那不算“封装领域知识”。

同理,计算机里放了一本数学书的pdf文件,也不算“封装领域知识”,因为也没有能力运用其中知识解数学题。

★无论有没有系统封装这些领域知识,这些领域知识都在那里。

还是用前面《“领域”的错误定义》的说法,γ射线暴啪的一下,人类没了,图书馆的书还在那里。如果“把字刻在石头上”,没准还能等来外星文明来阅读它们——参见阿瑟·克拉克的《星(The Star)》,三体的“把字刻在石头上”应该来源于此。

(4)组织

人脑系统,软件系统,以及其他非信息系统,可以组装成组织。

★无论是否组装成组织,这些系统就在那里,领域知识也封装在系统里。

(5)组织价值(做某事)

图片

可见,“组织做的事”和“领域”相隔如此之远,而且中间各个环节都是多对多的映射。从“组织做的事”来的定义“领域”是非常不妥的。

关于系统、组织的更深入论述,参见《软件方法》第9章。

给大家留几道题目:

1. [单选] 

可以把各种投资少、见效快、产量高、门槛低的领域驱动设计伪创新手法做进一款充满仪式感的工具,用来帮助(割韭菜)有这方面需要的开发人员。

如果在开发这款工具时,想寻找领域专家,以下说法最合适的是:

 A) 典型的不想付出努力但又急需某个“方法”充门面的开发人员张三,是领域专家。

 B) 研究和批评领域驱动设计伪创新多年的潘加宇老师,是领域专家。

 C) UML三友之一James Rumbaugh,是领域专家。

 D) 伪创新不属于领域知识,不存在领域专家。

2. [多选]

软件的“技术人员”在研究物理领域时,发现有很多看起来差不多的用语,例如:高度、深度,压力、压强,重量、质量,速度、加速度,平衡力、相互作用力……

通用语言(Ubiquitous Language)是领域驱动设计革命性的创造和划时代的洞见之一。如果“技术人员”想发挥“通用语言”的威力,用最少的思考来解决这些词语差异,以下做法值得赞扬的有:

 A) 认真阅读物理专业书籍,努力分辨这些用语之间的区别和联系,并且做相应的测试题来检查自己的学习成果。

 B) 把物理领域划分成若干限界上下文,并定义A上下文中的速度相当于B上下文的加速度。

 C) 兄弟们一起去轰趴,一边饮酒作乐,一边头脑风暴,投票选出最能够凝聚团队的通用语言。

 D) 找物理高考满分的高考状元请教,一边问问题,一边画类图来整理。

3. [多选] 

很多革命性划时代领域驱动设计创新有投资少、见效快、产量高等特点。

以下选项的图形中,有一些也向领域驱动设计学习,它们是:

 A) 

 

图片

 B) 

 

图片

 C) 

 

图片

 D) 

 

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/485706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

牛客题霸-SQL篇(刷题记录三)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多,因此本文不再展示,只提供 MySQL 代码与示例输出。 以下内容是…

笔试总结01

1、spring原理 1、spring原理 spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中,程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间的藕合度。它的原理是在applicationContext.xml加入bean标记,在bean标记中通过class属性说明具体类…

Mamba 基础讲解【SSM,LSSL,S4,S5,Mamba】

文章目录 Mamba的提出动机TransformerRNN Mama的提出背景状态空间模型 (The State Space Model, SSM)线性状态空间层 (Linear State-Space Layer, LSSL)结构化序列空间模型 (Structured State Spaces for Sequences, S4) Mamba的介绍Mamba的特性一&#…

天软高频因字库——委托订单因子及资金流向因子发布

天软始终致力于构建完善而丰富的因子库服务体系,陆续推出了股票因子、基金因子、指数因子等众多因子数据及评价数据。 本月天软推出高频委托订单&资金流向相关因子,继续补充和完善天软高频特色因子库,至此该因子库已包含36个因子表单&…

基于SpringBoot+Vue共享客栈管理系统(源码+部署说明+演示视频+源码介绍+lw)

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

Pycharm配置conda

1.下载conda Free Download | Anaconda . 2.配置环境 1.conda自带base环境 2.创建环境 3. Pycharm创建项目,选择环境 3.Pycharm中新建conda环境

win11 安装SIBR 3dgs

1.安装显卡驱动 下载地址: 官方驱动 | NVIDIA下载适用于 GeForce、TITAN、NVIDIA RTX、数据中心、GRID 等 NVIDIA 产品的新驱动。https://www.nvidia.cn/Download/index.aspx?langcn 2.安装cuda 下载地址:如果无法打开,切换.com为.cn&am…

AD20如何整体修改元器件标号?

1 2这里可以设置元器件标号方向 3更新 4点击前两个选项(生成,执行)即可

【Linux】nmcli命令详解

目录 ​编辑 一、概述 二、常用参数使用 2.1 nmcli networking 1.显示NM是否接管网络 2.查看网络连接状态 3.开/关网络连接 2.2 general ​编辑 1.显示系统网络状态 2.显示主机名 3.更改主机名 2.3 nmcli connection ​编辑1.显示所有网络连接 2.显示某个网卡的…

Day08 Java复习8 Spring MVC概念

Day09 Java复习9 Spring MVC spring mvc 的核心组件是什么? DispatcherServlet 1.JAVA 和Spring 、Spring Boot 、Spring MVC的关系 你要举办一个生日派对,而且你希望它既特别又好玩。Java就像是举办派对的地方,Spring、Spring Boot和Spri…

YOLOv5全网独家改进: 注意力机制改进 | 维度感知选择性集成模块DASI,红外小目标暴力涨点| 2024年3月最新成果

💡💡💡本文独家改进:维度感知选择性集成模块DASI,解决目标的大小微小以及红外图像中通常具有复杂的背景的问题点,2024年3月最新成果 💡💡💡红外小目标实现暴力涨点,只有几个像素的小目标识别率大幅度提升 改进结构图如下: 收录 YOLOv5原创自研 https://…

【正点原子Linux连载】第十九章 设备树下的platform驱动编写 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1)实验平台:正点原子ATK-DLRK3568开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id731866264428 3)全套实验源码手册视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 第十九…

PSO-CNN-BiLSTM多输入回归预测|粒子群优化算法-卷积-双向长短期神经网络回归预测|Matlab

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…

软件设计不是CRUD(15):低耦合模块设计理论——行为抽象与设计模式(中)

接上文《软件设计不是CRUD(14):低耦合模块设计理论——行为抽象与设计模式(上)》 3.2、行为抽象中常见的控制逻辑形式 上文我们讨论了在功能的整个控制逻辑中,针对一个业务控制点上的控制方式,可以通过何种行为抽象的方式找到对应的设计模式并最终将需求转换为具有较强…

vue基础——java程序员版(总集)

前言: ​ 这是一个java程序员的vue学习记录。 ​ vue是前端的主流框架,按照如今的就业形式作为后端开发的java程序员也是要有所了解的,下面是本人的vue学习记录,包括vue2的基本使用以及引入element-ui,使用的开发工具…

爬楼梯C语言

方法一&#xff1a;动态规划 int climbStairs(int n) {int f[100] {0};f[0] 0;f[1] 1;f[2] 2;for(int i 3;i<n;i)f[i] f[i-1] f[i-2];//可能是从i-1阶爬上第i阶&#xff0c;也有可能是从i-2阶 return f[n]; } 方法二&#xff1a;滚动数组 int climbStairs(int n){int…

上位机图像处理和嵌入式模块部署(qmacvisual点线测量)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 上面一篇文章&#xff0c;我们完成了直线的拟合操作。在实际场景中&#xff0c;拟合之后更多地是需要进行长度的测量。既然是测量&#xff0c;那么…

电源技术中的深力科强力推荐低成本高性能低 VCE(sat) 晶体管 NSS40302PDR2G提供更高的电源效率和更长的电池寿命

NSS40302PDR2G是一款低 VCE(sat) 双极晶体管&#xff0c;具有超低饱和电压 VCE(sat) 和高电流增益能力的表面贴装器件。用于需要经济、高效的能量控制的低电压、高速开关应用。典型应用有大容量存储产品&#xff08;例如磁盘驱动器和磁带驱动器&#xff09;中的低压电机控制。在…

Set A Light 3D Studio中文--- 打造专业级3D照明效果

Set A Light 3D Studio是一款专业的灯光模拟软件&#xff0c;专为摄影师和电影制片人打造。它允许用户在计算机上模拟并预览各种布光效果&#xff0c;助力拍摄出真实、精准且具有艺术感的作品。软件提供了丰富的灯光和场景模型&#xff0c;用户可以灵活调整光源参数&#xff0c…

全志R128 SDK HAL 模块开发指南——DMA Controller

DMA Controller 本文介绍RTOS 中DMA 驱动的接口及使用方法&#xff0c;为DMA 的使用者提供参考。 DMA 主要实现设备与设备、设备与 memory、memory 与 memory 之间的数据搬运与传输&#xff1b;BSP DMA 驱动主要实现设备驱动的底层细节&#xff0c;并为上层提供一套标准的 AP…