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

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://xiahunao.cn/news/3226948.html

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

相关文章

[leetcode]kth-smallest-element-in-a-sorted-matrix 有序矩阵中第k小元素

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool check(vector<vector<int>>& matrix, int mid, int k, int n) {int i n - 1;int j 0;int num 0;while (i > 0 && j < n) {if (matrix[i][j] < mid) {num i 1;j;…

基于Java技术的网上图书商城系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术、SpringBoot框架 工具&#xff1a;Eclipse、Navicat、Maven 系统展示 首页 用户注册界面…

机器学习与深度学习:区别与联系(含工作站硬件推荐)

一、机器学习与深度学习区别 机器学习&#xff08;ML&#xff1a;Machine Learning&#xff09;与深度学习&#xff08;DL&#xff1a;Deep Learning&#xff09;是人工智能&#xff08;AI&#xff09;领域内两个重要但不同的技术。它们在定义、数据依赖性以及硬件依赖性等方面…

threejs ~GUI工具的使用

Dat.gui 是一个 GUI 组件&#xff0c;他可以为你的 demo 提供参数的设置 先看一下想实现的效果 美观又实用 下边我们来简单实现下通过gui实现全屏与退出全屏 安装与引入 npm install --save dat.guiimport * as dat from "dat.gui"; 实例化对象 const gui new …

蚓链数字化营销策略的特点:精准营销

&#xff08;一&#xff09;数据驱动的精准营销 蚓链数字化营销能够基于大数据分析&#xff0c;深入了解消费者的行为、兴趣和需求&#xff0c;实现精准的客户画像和细分。通过对用户数据的挖掘和分析&#xff0c;企业可以准确地定位目标客户群体&#xff0c;制定个性化的营销…

ITIL4认证考试注意事项(附考试答题攻略)

作为一位持有ITIL4中级认证的IT服务管理专家&#xff0c;我深知备考ITIL4认证考试的重要性。在此分享我的复习备考经验&#xff0c;帮助你顺利通过考试。 1. 制定复习计划 制定详细的复习计划是备考的第一步。合理安排每天的复习时间&#xff0c;重点复习ITIL4的关键概念、四个…

数据结构--二叉树相关性质

1.性质 1.满二叉树每层节点个数&#xff1a;等比数列 3.&#xff08;重要&#xff09;任意二叉树&#xff1a;度为0&#xff08;叶子节点&#xff09;的比度为2的永远多一个。。度&#xff1a;就是看有多少孩子 如下图解析&#xff1a;&#xff08;用推到归纳来分析&#xff…

1996-2023年各省农业总产值数据(无缺失)

1996-2023年各省农业总产值数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1996-2023年 2、来源&#xff1a;国家统计局、各省年鉴 3、指标&#xff1a;农业总产值 4、范围&#xff1a;31省 5、缺失情况&#xff1a;无缺失 6、指标解释&#xff1a;农业总产值是…

100359.统计X和Y频数相等的子矩阵数量

1.题目描述 给你一个二维字符矩阵 grid&#xff0c;其中 grid[i][j] 可能是 X、Y 或 .&#xff0c;返回满足以下条件的子矩阵数量&#xff1a; 包含 grid[0][0]X 和 Y 的频数相等。至少包含一个 X。 示例 1&#xff1a; 输入&#xff1a; grid [["X","Y",…

MT3054 搭积木

1.思路&#xff1a; 把二维矩阵转化成一维编号&#xff0c;之后将编号使用并查集&#xff0c;看最后是否在同一个集合中即可。 2.代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e3 10; int n, m, cnt, root; int fa[N * N]; int dx[…

html5——表单

目录 表单基本结构 表单标签 常用表单元素 文本框 密码框 邮箱 单选按钮 复选框 文件域 隐藏域 列表框 多行文本域 lable标签 表单按钮 常用表单属性 只读与禁用 placeholder required pattern autofocus autocomplete 用于指定表单是否有自动完…

STM32串口通讯(RS232、RS485、TTL)详解

前言 STM32串口&#xff08;Serial Communication Interface&#xff09;是STM32微控制器中用于串行通信的接口&#xff0c;通常指的是USART&#xff08;通用同步异步收发器&#xff09;或UART&#xff08;通用异步收发传输器&#xff09;。这些接口允许STM32微控制器与其他设…

防火墙安全策略与用户认证综合实验

一、实验拓扑 二、实验需求 1.DMZ区内的服务器&#xff0c;办公区仅能在办公时间内<9:00-18:00>可以访问&#xff0c;生产区的设备全天可以访问 2.办公区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 3.办公区设备10.0.2.10不充许访问DMZ区的FTP服务器和HT…

昇思学习打卡-14-ResNet50迁移学习

文章目录 数据集可视化预训练模型的使用部分实现 推理 迁移学习&#xff1a;在一个很大的数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化网络的权重参数或作为固定特征提取器应用于特定的任务中。本章学习使用的是前面学过的ResNet50&#xff0c;使用迁移学…

数字人+展厅互动体验方案:多元化互动方式,拓宽文化文娱新体验

数字化创新已成为推动展厅可持续发展&#xff0c;创造全新消费体验&#xff0c;满足游客多元化需求的关键力量。 “数字人数字互动展厅”可以适应年轻一代的文化传播与多媒体互动新体验趋势&#xff0c;打造新生代潮玩聚集地&#xff0c;促进文化创意传播与互动体验场景创新&a…

手机回收站视频过期怎么恢复?跟随这2个方法解锁新技能

各位看官&#xff0c;是不是有时候一不留神&#xff0c;手机里的珍贵视频就不翼而飞了&#xff1f;然后你疯狂地寻找&#xff0c;心里五味杂陈&#xff0c;就像热锅上的蚂蚁一样团团转。视频过期怎么恢复&#xff0c;到底怎样才能找回来呢&#xff1f;别担心&#xff0c;今天小…

进程和线程(简单篇)

1.进程的概念 进程&#xff08;Process&#xff09;是计算机中的一个实体&#xff0c;是具有一定独立功能的程序关于某个数据集合上的一次运行活动&#xff0c;也是系统进行资源分配和调度的一个独立单元。进程是程序在处理机上的一次执行过程&#xff0c;具有生命周期&#x…

react学习——24redux实现求和案例(精简版)

1、目录结构 2、count/index.js import React, {Component} from "react"; //引入store,用于获取数据 import store from ../../redux/store export default class Count extends Component {state {count:store.getState()}componentDidMount() {//监测redux中的…

推荐一款功能强大的 GPT 学术优化开源项目GPT Academic:学术研究的智能助手

今天&#xff0c;我将向大家介绍一个强大的开源项目—GPT Academic&#xff0c;它或许正是你一直在寻找的理想工具。 已一跃成为 60.4k Star 的热门项目 GPT Academic 目前在 GitHub 上已经揽获了 60.4k 的 Star&#xff0c;这不仅反映了它的受欢迎程度&#xff0c;更证明了它…

初阶C++(三)

初阶C(三&#xff09; 指针和引⽤的关系inline介绍对inline的运用宏函数与inline关系nullptr NULL在C中有歧义nullptr引用 指针和引⽤的关系 C中指针和引⽤就像两个性格迥异的亲兄弟&#xff0c;指针是哥哥&#xff0c;引⽤是弟弟&#xff0c;在实践中他们相辅相成&#xff0c;…