一切皆是为了交流-DDD通用语言

news2025/1/22 9:08:21

通用语言是什么?

通用语言是一种在特定领域内的沟通方式,可以由文字、语言、手势、图像等一切与达到沟通目的的元素组成。

比如,在中国内,方言是闽南的小王与方言是粤语的小张进行交流,那么,普通话是他们交流的主要语言,那么普通话便是他们之间的通用语言。

再比如,美国人史密夫来到了北京的一家餐馆,史密夫不会说中文,餐馆工作人员也不会说英语,史密夫和点餐人员通过在菜单上指指点点,再加上一些点头、OK手势等动作,终于完成了点餐(虽然,也是有概率会点菜点错了),那么,在菜单是指点、点头、OK手势等一系列动作,便是他们之间的通用语言。

再比如,小明和小红是两个项目组的程序员,小明画了一张系统之间交互的时序图,两就着这张时序图进行了激烈的讨论,那么,这张时序图,就是他们之间的通用语言的一部分。注意的是,这里使用了“一部分”这个词,因为除了时序图之外,他们激烈讨论过程中所用到的语言、手势(甚至打架动作)、白板都是通用语言的一部分。

再比如,A先生是北方人,B先生是南方人,A先生说马玲薯好吃,B先生说土豆好吃,到底是马玲薯好吃还是土豆好吃?如果是通用语言,会在沟通之前使两人达成共识“马玲薯==土豆”。

在一个团队中,构建出属于自己的通用语言是非常有必要的,好的通用语言,能让团队具备极高的沟通效率!

通用语言,不是天然就存在的,而是在发展的过程中,不断地完善。

在践行DDD的时候,通用语言特别重要,因为它是连通管理、业务、技术的重要工具。

通用语言的目的是为了交流,凡是有利于交流的方式,都可以称之为通用语言。

以下是一段场景,可以让你感受到如何践行DDD。

业务:我们需要的图书管理,都是通过Excel、纸质文件、借阅卡来来管理的,我们的图书,目前是以批发的形式卖给书店。目前这种方式,已经是跟不上时代的发展了,我们急需一套数字化系统来支撑我们的图书业务!

技术:我们十分赞同!给详细说一下吗?

业务:我们想打造一个线上图书馆和线上图书商城!

这时候,技术人员默认地拿出笔来记住了两个字词“线上图书馆”、“线上图书商城”!

业务:我们准备今年将线上图书馆这一块内容完成数字化,明天再将线上图书商城完成数字化!

这时候,听到“数字化”这几个高大尚的词,一些年轻的IT人员似乎不明白啥是“数字化”,于是举手提问!

领导:数字化,大白话就是为业务提供软件支持!你们以后聊到这些的名词的时候,需要将这些名词记录起来形成一个清单,方便团队中的成员交流!

领导发话了,于是业务人员在说话的时候,在使用高大尚的词语时,都刻意带上了解释,在使用只有业务才能听懂的术语时,也会将术语用大白话解释一遍。

技术:线上图书馆、线上图书商城,这听起来很抽象,请详细展开说说!

业务:线上图书馆,是将真实的图书馆动作方式搬到线上化。包含图书库存管理、图书借阅、会员管理、线上阅读、公告,这些模块功能。

业务:线上图书商城,是打造一个类似京东的、但只卖图书的商城。

技术:……,能详细展开说吗?比如,对图书库存管理更细一步展开说。

业务:图书库存管理,其中包含了图书入库、出库,入库的时候,需要追溯到图书的供应商源头,出库的时候需要跟踪到图书的具体借阅人、购买人。……省略n万字。

讨论会议,双方都觉得很满意,并约定过几天再进行一轮交流,但这次交流以技术为主导。

过了几天,技术人员拿着一些图纸与业务人员在聊,省略一万字。

以下是技术人员制作的图纸的一部分

通用语言,符合自顶向下设计的原则。

把图书领域分成线上图书馆、线上图书商城两大子域。

再细分线上图书馆,分解成库存管理、图书借阅、会员管理、线上阅读、公告。

库存管理,又进一步细分。

如此细分下去,直接细分到满意的粒度为止。

通用语言,一定是要包含在领域之中,脱离了领域的通用语言是不存在的。比如,图书领域的会员管理,与电商领域的会员管理,不是相同的。图书领域的会员具体借阅书籍的权限,电商领域的会员权拥有商品的VIP价格购买优惠。

通用语言,该如何践行呢?

仁者见仁,智者见智。践行通用语言没有标准的行动规范,需要根据自身团队的实践情况,寻找最符合自身发展的通用语言践行方式。

1、能面对而沟通,就不要视频语音沟通。能视频语音沟通,就不要文字沟通

2、沟通之前,先使双方处于同一认知水平。比如,业务方需要向研发人员描述一个需求,那么,业务人员应该将这个需求的由来说清楚,让研发人员有个大概了解。

3、重要的事情说三遍。

4、任何安排下去之后,要亲自参与实际研发过程。亲自参与,并不是与要自己动手开发,时不时询问一下开发人员的进度、看看开发的初步效果、给开发一些鼓励支持,也是亲自参与的一种践行方式。

5、制定好团队的术语表

6、制定好各种标准规范,如编码规范、设计规划

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇编基础----mov基本操作

汇编基础----mov基本操作 下载VS2022 这个网上教程很多,自行下载安装即可 新建项目 选择空项目,如何点击下一步 在源文件下创建这二个文件 修改配置使asm文件能被解析,右击项目名(demo)->生成依赖项->生成自定义->勾选如下图所示选项->确定 立即数寻址 main…

N5171B是德科技N5171B信号发生器

181/2461/8938产品概述: N5171B EXG 射频模拟信号发生器具有最佳的 EXG,旨在满足您对组件参数测试和接收器校准的信号需求。其出色的硬件性能可提供更快的吞吐量、更长的正常运行时间以及极好的准确性和可重复性。 Agilent / HP N5171B EXG 射频模拟信…

vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户

1.后端返回的json数据结构为: {"message":"下载失败,下载文件不存在,请联系管理员处理!","code":500} 2.vue 请求后台接口返回的 Blob数据 3.问题出现的原因是,正常其他数据列表接口&…

MySQL操作DML

目录 1.概述 2.插入 3.更新 4.删除 5.查询 6.小结 1.概述 数据库DML是数据库操作语言(Data Manipulation Language)的简称,主要用于对数据库中的数据进行增加、修改、删除等操作。它是SQL语言的一部分,用于实现对数据库中数…

基于wsl的Ubuntu20.04上安装桌面环境

在子系统Ubuntu20.04上安装桌面环境 1. 更换软件源 由于Ubuntu默认的软件源在国外,有时候后可能会造成下载软件卡顿,这里我们更换为国内的阿里云源,其他国内源亦可。 双击打开Ubuntu20.04 LTS图标,在命令行中输入 # 备份原来的软…

OpenCV 使用freetype在图像上写中文

​​​​​​ #include "opencv2/opencv.hpp" #include "opencv2/freetype.hpp"static cv::Ptr<cv::freetype::FreeType2> getFreeType() {static cv::Ptr<cv::freetype::FreeType2> ft2;if (ft2.empty()){ft2 cv::freetype::createFreeType…

论文阅读《Semantic Prompt for Few-Shot Image Recognition》

论文地址&#xff1a;https://arxiv.org/pdf/2303.14123.pdf 论文代码&#xff1a;https://github.com/WentaoChen0813/SemanticPrompt 目录 1、存在的问题2、算法简介3、算法细节3.1、预训练阶段3.2、微调阶段3.3、空间交互机制3.4、通道交互机制 4、实验4.1、对比实验4.2、组…

家庭网络防御系统搭建-家庭网络防御系统搭建-NDR之zeek安装配置过程详解

前面的文章&#xff0c;说明了raspiberry系统和硬件相关内容&#xff0c;参考家庭网络防御系统搭建-树莓派raspberry PI硬件和系统准备。本文将介绍NDR系统中的zeek安装过程。 corelight vs zeek 使用zeek获取网络的transaction log有两种方式&#xff0c;一种是使用coreligh…

从头开发一个RISC-V的操作系统(五)汇编语言编程

文章目录 前提RISC-V汇编语言入门RISC-V汇编指令总览汇编指令操作对象汇编指令编码格式add指令介绍无符号数 练习参考链接 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提 这个系列的大部分文章和知识来自于…

python语言程序设计完结

概述&#xff1a; 程序设计是计算机可编程的体现 程序设计&#xff0c;亦称编程&#xff0c;是深度应用计算机的主要手段 程序设计已经成为当今社会需求量最大的职业技能之一 程序设计语言是一种用于交互&#xff08;交流&#xff09;的人造语言 程序设计语言&#xff0c;亦称…

论文阅读AI工具链

文献检索 可以利用智谱清言来生成合适的文献检索式&#xff0c;并根据需要不断调整。 谷歌学术 在Google Scholar中进行检索时&#xff0c;您可以使用类似的逻辑来构建您的搜索式&#xff0c;但是语法会有所不同。Google Scholar的搜索框接受普通的文本搜索&#xff0c;但是…

牛客NC93 设计LRU缓存结构【hard 链表,Map Java】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84 思路 双向链表map最新的数据放头结点&#xff0c;尾节点放最老的数据&#xff0c;没次移除尾巴节点本地考察链表的新增&#xff0c;删除&#xff0c;移动节点参考答案Java im…

启动Unity发布的exe并且添加启动参数

启动Unity发布的exe并且添加启动参数 在启动Unity的时候添加一些启动的参数。 代码解释 在启动的时候获取的启动参数如果没有获取到正确的启动参数那么就退出程序&#xff0c;这个代码仅仅在发布到windows之后才会生效&#xff0c;在编辑器下这个代码虽然会获取到参数但是不能…

python开发poc2,爆破脚本

#本课知识点和目的&#xff1a; ---协议模块使用&#xff0c;Request 爬虫技术&#xff0c;简易多线程技术&#xff0c;编码技术&#xff0c;Bypass 后门技术 下载ftp服务器模拟器 https://lcba.lanzouy.com/iAMePxl378h 随便创建一个账户&#xff0c;然后登录进去把ip改成…

多轴机械臂/正逆解/轨迹规划/机器人运动学/Matlab/DH法 学习记录01——数学基础

系列文章目录 本科毕设正在做多轴机械臂相关的内容&#xff0c;这里是一个学习机械臂运动学课程的相关记录。 如有任何问题&#xff0c;可发邮件至layraliufoxmail.com问询。 1. 数学基础 文章目录 系列文章目录一、空间位置、姿态描述二、旋转矩阵&#xff08;Rotation matri…

阿里Qwen1.5-32B开源,评测超Mixtral MoE,挑战SOTA性价比

前言 阿里巴巴近日震撼开源其最新力作——Qwen1.5-32B大语言模型。在当前AI领域&#xff0c;大模型的开发与应用已成为评估技术进步的重要标尺。Qwen1.5-32B的问世&#xff0c;不仅再次证明了阿里在AI技术研发领域的深厚实力&#xff0c;更是在性能与成本之间找到了一个新的平…

Linux云计算之Linux基础3——Linux系统基础2

1、终端 终端(terminal)&#xff1a;人和系统交互的必要设备&#xff0c;人机交互最后一个界面&#xff08;包含独立的输入输出设备&#xff09; 物理终端(console)&#xff1a;直接接入本机器的键盘设备和显示器虚拟终端(tty)&#xff1a;通过软件方式虚拟实现的终端。它可以…

计算机网络-文件传输及IP协议——沐雨先生

实验内容 编写请求文件的客户Java应用程序编写响应文件请求的服务器Java应用程序利用Wireshark查看和分析IP包 基本要求 使用Java语言建立请求文件的客户应用程序使用Java语言建立响应文件请求的服务器应用程序了解IP协议的工作过程了解IP包首部各字段及含义 对Java应用程序…

java理论小作业(2)--类

第一题 1.题目&#xff1a; 2.解析&#xff1a; 首先&#xff0c;我们来分析Hello1类的结构和给定代码的执行流程&#xff1a; Hello1类中有两个成员变量&#xff0c;一个静态的a和一个非静态的b。静态变量a属于类本身&#xff0c;而非静态变量b属于类的每一个实例&#xff…

MySQL-5.函数

5.1 统计函数&#xff08;聚合函数&#xff09; # 统计数学成绩大于 90 的学生有多少个&#xff1f; SELECT COUNT(*) FROM student WHERE math > 90;# 求一个班级总分平均分 SELECT AVG(math english chinese) FROM student;# 统计一个班级数学总成绩 SELECT SUM(math) F…