拯救中国足球,要不尝试一下DDD事件风暴?

news2024/9/23 3:23:51

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


张逸老师写了新文章《领域建模的常见问题及解决方案》,我来谈一谈对这篇文章的感想。

(1)文章一开始,张逸老师大大地赞扬了事件风暴:

图片

图1 摘自《领域建模的常见问题及解决方案》

张逸老师说,事件风暴是主流的建模方法,参与者交头接耳,大声讨论。

看来,霍金、陈景润是没有资格的了。

大家如果感兴趣,可以找来事件风暴的始作俑者Alberto Brandolini写的书看看,书尚未写完(大量的%、留白和FIXME),但已经收费了。

书中大量篇幅讨论怎么拉人,怎么布置环境,怎么开会讨论,然后,Duang的一声,模型就出来了?

把里面涉及软件的内容抹掉,用于中国足球也未尝不可。

怎么拉人,怎么布置环境,怎么开会讨论,然后,Duang的一声,国足就赢球了。

这和一些敏捷“软件开发”的培训很相似,一帮软件开发人员聚在一起拼玩具、搬气球。这些内容同样适用于保险推销员、美发店技师......。比起抓耳挠腮思考软件的复杂性,这样的培训简直太愉快了!

我在《软件方法》第1章中曾评价过这样的现象:

图片

图2 摘自《软件方法》第1章

(2)张逸老师所给的事件风暴示例很有讲究

图片

图3 摘自《领域建模的常见问题及解决方案》

这个图跟我们平时在各种DDD文章中看到的事件风暴不太一样。

平时在DDD文章中出现的事件风暴如图4,摘自最近看到的一篇公众号文章:

图片

图4 摘自一篇公众号文章

★并非我故意不给链接。当时只下载了这张图,不记得文章标题。尝试用关键词“DDD”结合图上的某些词搜公众号,没找到含有该图的文章。了解的读者可在评论帮我补上。

这个图很符合我对领域驱动设计产出物的评价:投资少、见效快、产量高、仪式感十足。

*大量的同名黄贴纸:产品运营人员、系统、买家……

*一一对应,蓝色有“添加商品”,棕色的就有“商品已创建”;蓝色有“编辑库存”,棕色有“商城库存已编辑”……

★这样的一一对应,容易让人产生“状态和事件本质相同”的错觉,参见《评“状态和事件本质相同”》、《关于“评状态和事件本质相同”的6个疑问》。

*巧妙换词,“添加商品”对应的是“商品已创建”,而不是“商品已添加”,把“创建”换成“添加”,给读者带来新鲜感。

*巧妙增减词,“编辑库存”对应的是“商城库存已编辑”,增加了“商城”二字,带来了仪式感。当然,也可以反过来理解,“商城库存已编辑”是全文,“编辑库存”减了“商城”二字,带来了仪式感。

通过这样的一些技巧,整张图一下子就丰满了,用很少的时间和思考工作量,刷出很大的内容。

张逸老师所给出的“事件风暴”图3,和常见的图4长得不太像,图3完美地避开了刚才我所说的图4的问题。

图3更像是一个“系统用例图”,我把其中一部分用UML用例图画出来,读者可以对比一下:

图片

图5 把图3变成用例图

这些“用例”怎么来的,估计也很玄妙,好像大家一头脑风暴就有了,再加上CRUD(新建、查询、修改、删除)四件套,整个工作量一下就丰满了。

这样的“方法”怎能不爱?

(3)接下来的内容,怎么没有“事件风暴”的影子了?

张逸老师的文章一开始就说事件风暴怎么怎么好,接着往下看文章的内容,却不再提事件风暴了,开始批评拍脑袋建模和随意建模,强调要固化,要严格。刚才说的“释放自己”呢?

内容上的问题,例如把各种各样的建模都叫“领域建模”,还有“分为三个阶段”然后又说“迭代建模”……这些我之前写的文章已经批评过,以后有机会再详谈。

仅从形式上看,所有的图形看起来都很精致,糊墙呢?贴纸呢?

图片

一个解释可以是这样:

不再吹捧“事件风暴”是“建模方法”,而是降级成“获取建模素材”的方法,涉众爱怎么释放自己都行,收集素材嘛。该建模的时候,必须严格按照步骤走。

就算降级,也还是有问题。

对于“获取建模素材”而言,所谓的“事件风暴”,其实就是把具有不同利益的涉众同时集中到一个地点来获取素材。如果认真学习过前人关于需求的书籍和文章,会知道,这样的方式并不好。

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

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

相关文章

Linux系统中磁盘管理LVM与挂载

Linux系统中磁盘管理LVM与挂载 本文以属于Linux系统基本概念,如果以查找教程教程,解决问题为主,只需要查看本文后半部分。如需要系统性学习请查看本文前半部分。 本文操作极容易导致主机无法自动重启,请慎重操作。操作前务必要进…

JlmPack在军民两用工业软件生态平台的使用

随着信息技术的飞速发展,军民两用工业软件生态平台在国防建设和民用产业中的应用日益广泛。JlmPack作为一款拥有完全自主加权概率模型下的编码算法发明专利的纯国产压缩工具库,其高效、安全、可控的特性在军民两用工业软件生态平台中拥有巨大的应用潜力。…

闲话银行家舍入法,以及在程序中如何实现

前言 相信对于四舍五入的舍入法,大家都耳熟能详,但对于银行家舍入法,可能就会比较少接触了! 可是在金融界,银行家舍入法可是大名鼎鼎的主角之一,主要应用于金融领域和涉及货币计算的场合。 那么&#xf…

Clion中怎么切换不同的程序运行

如下图,比如这个文件夹下面有那么多的项目: 那么我想切换不同的项目运行怎么办呢?如果想通过下图的Edit Configurations来设置是不行的: 解决办法: 如下图,选中项目的CMakeLists.txt,右键再点击…

16. Revit API: Family、FamilySymbol、FamilyInstance

前言 前面写着一直絮絮叨叨,感觉不好。想找些表情包来,写得好玩点,但找不到合适的,或者说耗时费力又不满意,而自个儿又做不来表情包,就算了。 其次呢,之前会把部分类成员给抄表列出来&#xf…

电脑缺少dll文件是怎么回事?教你5种有效的解决方法

当您的计算机显示DLL文件已经遗失时,您应如何应对呢?实际上,针对此类DLL文件的处置过程相对来说较为简易。今日,我们在此为大家详细介绍此领域的相关知识,让大家轻松解决电脑中因丢失DLL文件而产生的问题。 一、关于DL…

关于消息队列MQ的举例 | 同步调用与异步调用的区别

为什么要有一个消息代理? 举例: 消息发送者和消息接收者直接连接,就好像外卖员直接把外卖送到顾客的手上。 但如果顾客此刻正在处理自己的事情,不方便拿外卖。 那么外卖员就需要把外卖放在外卖柜上,顾客方便的时候直接…

【前端】面试八股文——meta标签

【前端】面试八股文——meta标签 在HTML文档中&#xff0c;meta标签是一个关键但常被忽视的元素。它位于文档的<head>部分&#xff0c;用于提供关于HTML文档的元数据&#xff08;metadata&#xff09;。这些元数据不会直接显示在页面上&#xff0c;但对搜索引擎优化&…

DDL也会有undo吗?模拟Oracle中DML、DDL与undo的关系,10046跟踪DDL语句

已经有两个月没有更新博客了&#xff0c;主要实在忙毕设和毕业的一些事情&#xff01;这两个月也是非常的精彩呀&#xff0c;充分体会到了职场的和校园的不同&#xff0c;作为一名刚毕业就满 1 年工作经验的牛马人&#xff0c;在两个月期间经历了两次调岗、两次降薪&#xff0c…

Python编程:如何有效等待套接字的读取与关闭

背景介绍 网络编程是现代应用程序开发的重要组成部分&#xff0c;尤其是在大数据和实时通信的背景下。套接字&#xff08;Socket&#xff09;作为网络通信的核心技术&#xff0c;是开发网络应用程序的基础。在Python编程中&#xff0c;如何有效地等待套接字的读取与关闭事件是…

无人机之穿越机注意事项篇

一、检查设备 每次飞行前都要仔细检查穿越机的每个部件&#xff0c;确保所有功能正常&#xff0c;特别是电池和电机。 二、遵守法律 了解并遵循你所在地区关于无人机的飞行规定&#xff0c;避免非法飞行。 三、评估环境 在飞行前检查周围环境&#xff0c;确保没有障碍物和…

补码一位乘法原理(布斯编码详讲)

最近在看补码乘法的时候&#xff0c;感觉到很奇怪的一点&#xff0c;那就是补码的一位乘法&#xff0c;就是上网查了大量的资料都没有理解到它真正的原理&#xff0c;总感觉还是不会。那么&#xff0c;补码乘法的原理到底是什么呢&#xff1f;而让我们一直困惑的点是哪里呢&…

Linux运维:MySQL中间件代理服务器,mycat读写分离应用实验

Mycat适用的场景很丰富&#xff0c;以下是几个典型的应用场景&#xff1a; 1.单纯的读写分离&#xff0c;此时配置最为简单&#xff0c;支持读写分离&#xff0c;主从切换 2.分表分库&#xff0c;对于超过1000万的表进行分片&#xff0c;最大支持1000亿的单表分片 3.多租户应…

【多线程】生产者消费者模型(代码实现)

文章目录 生产者消费者模型介绍生产者消费者模型的特点基于BlockingQueue的生产者消费者模型 生产者消费者模型介绍 生产者消费模型是一种常见的多线程编程模式&#xff0c;广泛应用于解决并发编程中的数据共享和任务调度问题。在该模型中&#xff0c;我们将生产数据并放入缓冲…

“都市绿洲,健康生活新纪元“ —全方位打造高科技多功能智慧健康园

咸宁&#xff0c;这座被誉为"桂花之乡"和"华中康养区"的城市&#xff0c;如同一朵绽放在湖北东南的璀璨明珠。这里桂花飘香&#xff0c;温泉涌动&#xff0c;将自然的馈赠与人文的智慧完美融合。漫步在咸宁&#xff0c;你会被满城金黄的桂花树所吸引&#…

SCSA第四天

ASPF FTP --- 文件传输协议 Tftp --- 简单文件传输协议 FTP协议相较于Tftp协议 ---- 1&#xff0c;需要进行认证 2&#xff0c;拥有一套完整的命令集 用户认证 防火墙管理员认证 ---- 校验登录者身份合法性 用户认证 --- 上网行为管理中的一环 上网用户认证 --- 三层认证…

QImage显示图片像素

在Qt中&#xff0c;QImage 类是用来表示和处理图像的。如果你想查看或显示一个图片的像素数据&#xff0c;你可以使用 QImage 提供的方法来访问这些数据。以下是一些基本的方法来获取和显示图片的像素信息&#xff1a; 获取图像的像素格式&#xff1a; 使用 QImage::format() …

redis相关知识记录

redis基本数据类型 Redis⽀持五种主要数据结构&#xff1a;字符串&#xff08;Strings&#xff09;、列表&#xff08;Lists&#xff09;、哈希表&#xff08;Hashes&#xff09;、集合&#xff08;Sets&#xff09;和有序集合&#xff08;Sorted Sets&#xff09;。这些数据结…

springboot 旅游导航系统-计算机毕业设计源码69476

目 录 第 1 章 引 言 1.1 选题背景 1.2 研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统性需求分析…

Flutter——最详细(Table)网格、表格组件使用教程

背景 用于展示表格组件&#xff0c;可指定线宽、列宽、文字方向等属性 属性作用columnWidths列的宽度defaultVerticalAlignment网格内部组件摆放方向border网格样式修改children表格里面的组件textDirection文本排序方向 import package:flutter/material.dart;class CustomTa…