“创新”何太急-评张逸的“业务服务”(一)

2023-10-13 05:32

本文主要是介绍“创新”何太急-评张逸的“业务服务”(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

张逸发了新文《业务服务的价值在哪里》(https://mp.weixin.qq.com/s/mb3-WHXziNy-KAa0caUlYg),讲述了他的“创新”:业务服务。

图片

图1 摘自张逸《业务服务的价值在哪里》(2021)

评点一、关于业务用例

张逸原文

如果站在整个企业的角度去思考用例的定义,就应以待开发的目标系统为边界,探讨参与者与目标系统之间的行为,从而形成业务用例

*******

“站在整个企业的角度”,怎么就转到了“以待开发的目标系统为边界”?

这个陈述和我之前批评过的“状态和事件本质是相同的”(参见《DDD话语批评之一:评张逸的“状态和事件本质相同”》)类似,连基本的概念都表达不清楚,根本不值得一驳。

奈何,互吹互捧的“圈子文化”威力实在太强,充满着错误的文章可能会流传甚广,我只能耐心地写文章一点点来解释和普及知识。

业务用例是什么

业务用例是组织为其他组织提供的价值。

组织可以是人群、机构,机构可以是企业、政府、非营利组织、家庭……。

*上面张逸说的“站在整个企业的角度”是不严谨的,可以说“站在整个组织的角度”。当然,这是小问题,图2中,Ivar Jacobson也是这样说的。不过,Ivar是1995年说的,现在是2021年。

用例是Ivar Jacobson提出的,本来是用于描述系统的需求。在"The Object Advantage"(1995)中,Ivar Jacobson开始将用例和面向对象思想用于描述业务流程,把业务流程看作是一系列业务对象之间为了完成业务用例而进行的协作,如图2。

图片

图2 摘自Ivar Jacobson的"The Object Advantage"(1995)

RUP(Rational Unified Process)的描述更清晰一些,如图3。

图片

图3 摘自Kruchten P. 的The Rational Unified Process: An Introduction (2nd Edition)(2000)

图3中,组织(这里应该是银行)为顾客(人群)提供“现金交易”的价值(业务用例),但顾客没有直接和某个信息系统交互,而是由柜员(Clerk)和贷款专员(Loan Specialist)来使用某个或某些信息系统提供的价值(系统用例,价值小一些)来做到。

张逸文中提到的“参与者和目标系统之间的行为”,实际上是图3的最下面一格,系统用例。

*当然,图3也存在问题。中间一格,Clerk和Account、Loan等直接关联,这是不恰当的,详情可参见我的《答疑:不同的方法对业务实体的定义多少有些差异》一文。

图4是我画的更清晰的图。

图片

图4 从组织到系统的转换

对业务用例的误解

很多人对业务用例的误解出在“业务”两个字上,觉得:我在说用例时没有谈到“技术”嘛,所以用例自然就是“业务”的了!

其实这里的“业务”是“组织”的意思。

关于“业务”一词的更详细解读,我在《CTO也糊涂的常用术语:功能模块、业务架构、用户需求、文档、过度设计……》一文中,用了一定的篇幅来叙述。如果您阅读完《CTO也糊涂……》这篇文章,可以试试看下面这句话中有多少乱用的术语。

在设计用户的业务需求分析模型文档时,要注意写清楚业务系统的各个业务架构功能模块。

******

我从2005年开始使用业务用例和业务序列图做业务建模,也指导很多团队做了大量的业务建模工作。通过大量的实践不断调整和加深对业务建模的认识,我认为许多先行者没有考虑过或者考虑不周到的问题,我已经考虑过了。

*之所以写"从2005年开始",是因为在这之前业务建模的业务流程部分我用的是活动图。

以下资料,如果读者能耐心看完做完,相信您对业务用例的困惑会消失。当然,在此基础上可能会带来新的困惑,那么这些困惑可能对我是有价值的,有时间的话不妨告诉我,共同提高。

*资料一:

我写的《软件方法(上):业务建模和需求,第2版》第3章:业务建模之业务用例图,并把第3章自测题做到全对。微信读书有此书。

《软件方法》勘误

http://umlchina.com/book/errata2ed.html

《软件方法》书中自测题16套111题

https://mp.weixin.qq.com/s/Xj9YoZzuR-4loMXwBubEag

*资料二:

不想看书的,也可以看以下压缩包中的第三个幻灯片。

《软件需求设计方法学全程实例剖析》幻灯片01-09打包下载地址

https://pan.baidu.com/s/1su8FdMqyDQF-tJ1mgcMMYQ,提取码:umlc

同样,把《软件方法(上):业务建模和需求,第2版》第3章自测题做到全对

*资料三:

阅读UMLChina答疑记录的“业务建模”部分

http://www.umlchina.com/qa/Index1.html#bm

图片

这是我在2005-2021年的各种答疑精选(目前共990个问题),也可以在该页面按关键词搜“业务用例”。如果还有兴趣,可以继续阅读下面的需求部分(系统用例)。

*资料四:

如果感兴趣,这里还有更难的题:

*UMLChina建模竞赛题分卷自测(11套110题)

https://mp.weixin.qq.com/s/GDfIMgdZ8VWWmrNF-axmsw

(待续……)


后续文章:

评点二、关于用例的“客观标准”

……

没有“标准答案”,也不应该期望有什么“标准答案”。

只有推导“最佳答案”的思考方法,而这些思考方法是非常严肃而且客观的,但是思考起来并不容易

或者可以这样说,给出不用思考的“标准答案”的,基本可以认为是骗子。

……

评点三、关于需求到设计的“转化成本”

……

如果有人不愿意面对这些复杂性,也不愿意学习这些复杂思考方法,反而从中看到机会,“发明”一种一一对应,不用思考的“方法学”,宣称现在的方法太难了,我这里有“成本低”、“一一对应”、“标准客观”的做法,向同样不愿意面对这些复杂性,也不愿意学习这些复杂思考方法的开发人员宣传。这就不应该了。

……

评点四、“不可视”不等于“深入系统内部”

评点五、关于“用户”和“用户需求”

评点六、关于“业务服务规约”


已发表的相关文章:

DDD话语批评之一:评张逸的“状态和事件本质相同”

DDD话语评价之二:“值对象”是DDD的创新吗

针对张逸观点的一些评点

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

猴子掰玉米?比较不同版《领域驱动设计》说“不变式”和“聚合”



这篇关于“创新”何太急-评张逸的“业务服务”(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/201107

相关文章

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Golang服务平滑重启

与重载配置相同的是我们也需要通过信号来通知server重启,但关键在于平滑重启,如果只是简单的重启,只需要kill掉,然后再拉起即可。平滑重启意味着server升级的时候可以不用停止业务。 我们先来看下Github上有没有相应的库解决这个问题,然后找到了如下三个库: facebookgo/grace - Graceful restart & zero downtime deploy for G

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建