京东云开发者DDD妙文欣赏(3-4)什么时候厨师是Actor

DDD领域驱动设计批评文集

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

《软件方法》各章合集


京东云开发者DDD妙文欣赏(1-2)报菜名和化繁为简的创新>>

图片

图8 《餐厅》中的“用例图”

(01)

原文

用例图

赏析

揉一揉眼睛仔细看,确实写着“用例图”,不是领域驱动设计革命性创新的蛋蛋图。

那么,我们就按用例图的知识来赏析。

(02)

原文

理清谁在做什么

厨师→做菜

赏析

前面“统一语言”的脑图里说“做饭”,这里变成了“做菜”?我又揉一揉眼睛,后面紧跟着的“买菜”、“洗菜”和脑图中的一样,应该说的是一个东西。也许在强调统一语言的同时,又引入了量子力学加成吧。

**********

你猜,用例为啥有个“用(use)”字?

因为它说的并不是“A做B”,而是“A用X来做B”,或者“X向A提供了B的服务”。

这里的焦点是X,用例实质上是描述X作为一个整体对外提供哪些价值。

图9的左右两侧的图形表达都可以,但都要说清楚研究对象X,否则谈论用例是没有意义的。

图片

图9 X的用例图

X可以是一个系统。此时,A就是X外面的另一个系统,A称为系统X的系统执行者(Actor),B称为系统X为系统执行者A提供的一个系统用例。这样的用例表达了X系统的需求。

*系统可以是人,也可以是非人智能系统或时间。当然,也可以把时间看作特殊的非人智能系统。

X也可以是一个组织。此时,A就是X外面的另一个组织,A称为组织X的业务执行者,B称为组织X为业务执行者A提供的一个业务用例。

*组织可以是正式组织,如企业、党政军单位、事业单位、社会团体,也可以是非正式组织,如人群、家庭、正式组织中的部门或团队。

**********

图8的“用例图”,研究对象X是什么?也就是说,是描述什么东西的用例?

这又回到了之前的赏析说到的“薛定谔的餐厅”,说“设计餐厅”,这个“餐厅”到底指什么?不说清楚这一点,这个“用例图”是没有意义的,除非画的是“领域驱动设计革命性创新的蛋蛋图”。

★如果“餐厅”指的是“餐饮企业”

“餐饮企业”是组织。图8中的三个小人“厨师”、“刀工”和“采购员”此时在“餐饮企业”内,可以看作“餐饮企业”的人肉零件,或者称为“餐饮企业”的业务工人。它们不是“餐饮企业”的Actor,“厨师→做菜”也不是“餐饮企业”的用例。

或者这样说,“餐饮企业”之所以存在,不是为了解决厨师的就业问题,让厨师有个地方做菜来获得薪水。老板巴不得不用请那么多厨师,搞一个外星黑科技烹调机来取代他们。顾客也并不在意菜是谁做的,只要味道好、干净、卫生、有营养、价格公道,没准外星黑科技烹调机的分子料理更受顾客欢迎。

“餐饮企业”之所以存在,是因为一些人群或机构需要用餐,但又不想自己完成购买食材、烹调、布置用餐场所、餐后清理的工作,于是由“餐饮企业”提供这个价值,这个价值可以称为“用餐”。

“餐饮企业”的用例图可能如图10。图中用“食客”替换了原文中的“顾客”。实际工作中还需要定位目标食客是哪种类型的食客,本文暂不考虑这个问题。

图片

图10 “餐饮企业”的用例图

图10代表了“餐饮企业”的价值,非常稳定。时光倒流三百年,图10也是成立的,往后一百年,也应该是成立的……吧?

容易变的是用例的实现,即“餐饮企业”的业务流程。图11是某餐饮企业“***餐厅”于2018年的业务流程片段。可以看到,“食客扫码点餐”等场景尚未出现在当时的业务流程中。

图片

图片

图11 用序列图表达某餐饮企业“***餐厅”于2018年的业务流程片段

“厨师”作为业务工人出现在图11中,但和“取号系统”、“餐馆管理信息系统”等没有交互——虽然“餐馆管理信息系统”有一条虚线指向“厨师”。

也就是说,无论是以“餐饮企业”为研究对象,还是以“取号系统”、“餐馆管理信息系统”为研究对象,“厨师”都不是Actor。当然,“厨师→做菜”也不是用例。

图片

图12 厨师不是Actor

★什么情况下,厨师会是Actor?

一种情况是,研究对象是一个组织,厨师作为组织外的一个人群和该组织交互。

例如,以“餐饮协会技能评定中心”为研究对象,“厨师→考厨师证”就是用例。

图片

图13 厨师作为执行者,例1

思考题:

多年前,电子支付还没有普及。有一家较大的餐饮企业,发薪水都是发现金。假设我们去观察,可能会看到一名厨师到财务部去领薪水。请问“厨师→领薪水”是“财务部”的用例吗?

另一种情况是,研究对象是一个系统,厨师作为系统外的一个系统和该系统交互。

例如,以封装了一些烹调智慧的“智能烹调机”为研究对象,“厨师→做菜”就是用例。

图片

图14 厨师作为执行者,例2

思考题:

假设研究对象是普通的炒锅,请问“厨师→做菜”是炒锅的用例吗?

★如果“餐厅”指的是“虚拟餐厅”

例如做一款游戏,把现实中的一切人、物、事都搬进去。

以这样的系统为研究对象,Actor就是游戏玩家。

如果这个“虚拟餐厅”厉害到黑客帝国中Matrix的地步,那Actor就只有时间了。

如何选择UMLChina服务

UMLChina公众号精选(20240123更新)

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

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

相关文章

目标检测 - RCNN系列模型

文章目录 1. RCNN2. Fast-RCNN3. Faster-RCNN 1. RCNN 论文:Rich feature hierarchies for accurate object detection and semantic segmentation 地址:https://arxiv.org/abs/1311.2524 分为两个阶段: 目标候选框Object ProposalsProposal…

04 SB实战 -微头条之头条模块(登录验证拦截器+发布文章+修改文章)

1.登陆验证 为什么还要做登陆验证? 尽管先前我们已经进行过登录, 但是要知道token是有有效期的, 而用户登陆后有可能长时间停留在页面不退出, 甚至这个停留的时间超出token有效期, 因此,尽管用户已经登录, 但是, 在需要登录才能进行的操作(进入发布页前、发布新闻前、进入修改…

MongoDB单机部署

Windows系统安装启动 下载安装包 附件中已准备好win32位、win64位安装包 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-cente…

MATLAB curve fitting toolbox没有怎么办?

版本:MATLAB R2023b 如果在安装MATLAB时仅仅选择了安装MATLAB,而并未选择其他选项,则在进入MATLAB后会发现顶部的APP栏中无法找到曲线拟合工具箱。 本人跟随MATLAB中的教程进行下载时,出现了如下报错: 最终解决方案&a…

【机器学习300问】19、深度学习和机器学习什么关系?

之前的文章都聚焦在传统的机器学习上,作为入门,学了许多机器学习的基础。往后的文章我会穿插着机器学习和深度学习的内容进行,所有有必要在这里先说下两者的关系。 一、从范围上讲 深度学习和机器学习都是人工智能的一个子领域,它…

自然语言NLP学习

2-7 门控循环单元(GRU)_哔哩哔哩_bilibili GRU LSTM 双向RNN CNN 卷积神经网络 输入层 转化为向量表示 dropout ppl 标量 在物理学和数学中,标量(Scalar)是一个只有大小、没有方向的量。它只用一个数值就可以完全…

Elasticsearch内核解析 - 数据模型篇

Elasticsearch内核解析 - 数据模型篇 - 知乎 Elasticsearch是一个实时的分布式搜索和分析引擎,它可以帮助我们用很快的速度去处理大规模数据,可以用于全文检索、结构化检索、推荐、分析以及统计聚合等多种场景。 Elasticsearch是一个建立在全文搜索引擎…

对齐大型语言模型与人类偏好:通过表示工程实现

1、写作动机: 强化学习表现出相当复杂度、对超参数的敏感性、在训练过程中的不稳定性,并需要在奖励模型和价值网络中进行额外的训练,导致了较大的计算成本。为了解决RL方法带来的上述挑战,提出了几种计算上轻量级的替代方案&…

虹科分享丨汽车技术的未来:Netropy如何测试和确保汽车以太网的性能

来源:艾特保IT 虹科分享丨汽车技术的未来:Netropy如何测试和确保汽车以太网的性能 原文链接:https://mp.weixin.qq.com/s/G8wihrzqpJJOx5i0o63fkA 欢迎关注虹科,为您提供最新资讯! #汽车以太网 #车载网络 #Netropy …

程序员自由创业周记#25:一个功能的诞生

程序员自由创业周记#25:一个功能的诞生 快捷启动 记录在创业项目 Island Widgets-学伟灵动岛锁屏小组件 中新增一个功能的诞生过程。 功能名称:快捷启动。 人话:不用回到桌面在锁屏界面或者灵动岛就能打开其他App、网页或快捷指令。 使用…

uniapp安卓android离线打包本地打包整理

离线打包准备 下载Android studio 1.准备资源hbuilder 2.准备离线SDK 最新android平台SDK下载最新android平台SDK下载 3.离线打包key申请 4.直接导入HBuilder-Integrate-AS工程,直接运行simpleDemo项目即可 5.安装java 1.8 jdk-8u151-windows-x64 6.遇到这个报错报错Caus…

什么时间平仓?什么时间反转?只需这个信号,WeTrade1秒找到

知道什么时间平仓?什么时间反转?交易还会有亏损的存在吗?那么怎么找到平仓和反转的信号呢?其实很简单,WeTrade1秒找到。 我们可以用以前的交易方法,在突破蜡烛线的高点或低点设置止损单。初始止盈必须至少是止损长度的两倍。我们用的是趋势交易&…

师如灯塔,照我前行:我在誉天的RHCA认证之旅

时光荏苒,岁月如梭。2022年10月,我踏上了通向RHCA(Red Hat Certified Architect)证书的征程。2023年11月,我成功拿到了RHCA证书,也给这段旅程画上了圆满的句号。 而在这充满挑战和成长的旅程中,…

有刷直流驱动芯片的GC9114 pin to pin替代TC118S,内置过温,低压欠压保护等功能更具性价比,应用于牙刷,电子锁,红外开关等上

GC9114 是一款低压 5V 全桥驱动芯片,为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。 能提供高达 1.3A 的持续输出电流。可以工作在 2~6V 的电源电压上。它具有 PWM(IN/IN)输入接口,与行业…

TensorRT部署--Linux(Ubuntu)环境配置

系列文章目录 TensorRT环境配置–Linux(Ubuntu) 文章目录 系列文章目录前言一、环境配置二、CUDA下载安装三、cuDNN下载安装四、TensorRT下载安装五、模型创建总结 前言 TensorRT部署-Windows环境配置: https://blog.csdn.net/m0_70420861/article/details/135658922?spm100…

Java面试提纲

JDK 1 jdk1.8版本后的新特性有哪些? Java Development Kit (JDK) 1.8(也称为Java 8)在2014年3月发布,引入了许多重要的新特性,以下是其中的一些关键特性: Lambda表达式: Java 8引入了lambda表达式&#x…

给2024年还想要成为网络工程师的朋友的一份学习福利

网工最新薪资情况 据统计,普通网络工程师的工资通常在5000元以上;专业领域的网络工程师,如网络存储或网络安全工程师,以及管理层,收入会更高,他们的年薪可以在15万元左右;网络工程师的薪酬分布…

常用通信总线学习——RS232与RS485

RS232概述 RS-232标准接口(又称EIA RS-232)是常用的串行通信接口标准之一,它是由美国电子工业协会(Electronic Industry Association,EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定,其全…

鸿蒙开发-UI-组件

鸿蒙开发-UI-布局 鸿蒙开发-UI-布局-线性布局 鸿蒙开发-UI-布局-层叠布局 鸿蒙开发-UI-布局-弹性布局 鸿蒙开发-UI-布局-相对布局 鸿蒙开发-UI-布局-格栅布局 鸿蒙开发-UI-布局-列表 ​​​​​​鸿蒙开发-UI-布局-网格 鸿蒙开发-UI-布局-轮播 文章目录 前言 一、按钮 1.创建…

【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题

记录了使用AndroidStudio2022.3 Giraffe版本在搭建环境时遇到的问题,包括连接超时,gradle无法读取等。 如果只看如何正确的配置,直接跳转第3节 配置汇总 1 连接超时 项目一开始会自动下载gardle文件来加载项目 1.1 Connect timed out 基…