这才是业务用例,别再搞错了!

简介: 这才是业务用例,别再搞错了!

大家好,我是飘渺。

前几天在做架构评审时发现一个现象:不少架构师在做业务建模时都将业务用例画错了,要么画的粒度很细,要么完全是将业务用例当成了系统用例来画。

归根结底,其实是没理解业务建模的本质,没有抓住业务用例的精髓。而要理解业务用例的精髓,咱们得先知道什么是组织,理解了组织,业务建模的核心我们就掌握了一半。


组织


业务建模的目的是从 组织 的角度来定位系统应该提供的价值。

组织开发系统的目的一般是为了优化业务流程,使得业务运转的更加高效、经济。而我们研究组织用例是因为我们想要把系统的价值和组织的价值挂上钩,给组织一个购买(开发)系统的理由。

很多时候我们把自己开发的系统想的太重了,感觉没有我们开发的系统,组织就玩不转了。其实,我们那牛X哄哄的系统也只是组织的一个零件,和组织厕所里的马桶,清洁的阿姨没有本质区别。

为什么需求经常 “容易变化” ? 根源之一是它们的来路不正,一开始的时候是拍脑袋得来的,没有把系统当作一个零件放在组织中来看,得到的系统当然和组织的其他零件格格不入,系统上线磨合后发现问题,自然要改。

“需求变化剧烈”只是一个假象,许多需求的变化是假的变化,真正的需求并没有变,只不过开发人员一开始捕获的需求是假的。如果能正确运用业务建模技能,大多数假的需求变化会消于无形。遗憾的是,不少开发团队在改进的时候给自己开错了药方,以为应该通过提升设计的弹性来应变。

设计是应对真正需求变化的手段,假的需求变化应该通过改进业务建模来应对。

如果东西拿到客户面前,客户说“好呀,正是我想要的!”,过了半年,客户又说“形势变了,这个东西要改一下。”这是需求变了。如果东西拿到客户面前,客户说“这不是我想要的!”,这时硬要说“需求变了”,脸皮有点厚了。

业务建模既然是研究组织,那么研究哪个组织呢?

最佳的研究范围就是项目愿景波及的、需要改进的组织,它可能是一个公司、一个部门、一间办公室、一个家庭、一群人。

有个简单的办法可以帮助我们确定需要研究的组织:本次开发系统上线后负责运营的单位,可以选定为我们研究的组织。


业务用例


了解了组织的概念后我们再来看业务用例的定义:业务用例是指 业务执行者 希望通过和 组织 交互达到的,而且 组织 能提供的价值。

那何谓 业务执行者?

业务执行者

业务执行者的定义是:在组织之外和组织交互的人群或组织,也可以理解成使用组织所提供的业务的人或单位。

以一家商业银行(组织)为研究对象,谁在外面和它打交道?储户来存钱,企业来贷款,人民银行要对它作监管…。这些就是该商业银行的执行者。

业务执行者的图标是一个小人,头上有一道斜杠,这个带斜杠的小人实际上是一个执行者的构造型<<Business Actor>>的图形表示,如果您使用的UML工具没有这个图形,可以用执行者的小人图标加上文本构造型<<Business Actor>>取代,或者不加构造型也无所谓,因为系统边界框已经表明了研究对象是一个组织,它的执行者自然是业务执行者。


业务工人和业务实体

在寻找业务执行者时,有时会和组织内的人混淆,例如银行里面的营业员。营业员在组织里面,不是业务执行者,我们称其为业务工人(Business Worker),有时候也戏称为人肉系统

业务执行者和业务工人的区别是:一个在组织外面,一个在组织里面,一个是组织不可替换的,一个是组织可以替换的零件。

业务工人可能会被新的业务工人替换,但更多的可能是被新的业务实体(Business Entity) 替换。业务实体就是组织中的非人系统,例如银行的取款机、点钞机、营业系统。

以一个餐厅作为研究对象,顾客在外面和它打交道,属于业务执行者;领位员,点餐员,厨师等组织内的 “人肉系统” 属于业务工人;开发的餐厅管理系统属于 业务实体

餐厅业务对象

业务工人、业务实体的图标上也需要带一道斜杠,或者通过<<Business Worker>><<Business Entity>>文本构造型取代。当然,如果你选择的UML工具没有这些图形也没关系,只要系统边界框确定了组织,其他几个角色就很明显了。

很多时候开发系统的目的是想通过新的业务实体来优化某些业务流程,提高业务工人的工作效率。拿上面的点餐系统为例,在未开发点餐系统之前,客人进入餐厅,点餐员需要带着菜单跑到顾客边上帮其点菜,开发系统后顾客只需要通过手机自己点餐,除非有特殊情况才需要点餐员帮助。

这时候点餐员变得轻松了,不过遗憾的是,组织也不再需要那么多点餐员了。


业务用例图


搞清楚了上面几个概念以后,我们回过头再看看业务用例的定义。业务用例是指 业务执行者 希望通过和 组织 交互达到的,而且 组织 能提供的价值。

以上面提到的商业银行为例,我们可以这样思考,储户到银行的目的是什么?可能是存款、取款、转账,得到银行针对储户的用例如下:

再比如以餐厅为例,顾客到餐厅的目的主要是点餐,用餐,结账,所以餐厅对于顾客的业务用例如下:

业务工人和业务实体不在业务用例图中出现,因为它们不是组织的价值,而是成本。


业务用例 vs 系统用例


回到开头的那个问题,很多人在画业务用例图的时候经常把业务用例画成了系统用例,两者之间的区别其实很明显,主要体现在两个方面:

(1)属于不同阶段的产物

业务用例是业务分析阶段的产物,理论上是由专门的业务分析师完成;系统用例是需求分析阶段的产物,理论上是由专门的需求/系统分析师完成

只不过在很多企业,这些都是需要由架构师来完成的。

(2)考察的对象不一样

上面已经讲过业务用例是描述组织对外提供的能力,而系统用例是描述系统对外提供的能力

系统用例是业务用例相应流程中对系统的一个操作。


总结


业务用例是组织的、而不是组织内某个系统的用例。业务用例不是思考系统提供什么“功能”,而是思考组织购买了这个系统,对组织本来就有的哪些“功能”会带来一点点帮助。

一个组织,甚至组织的一条流程都涉及许许多多的系统。在开发不同的系统时,研究业务用例和业务流程,发现得到的结果和开发另一个系统时的研究结果差不多,这是很正常的。开发人员不必因此感到惊慌,更不要因为“业务用例太少”、“业务用例太简单了”不自觉地改变研究对象,把待开发系统的用例搬上来。

目录
相关文章
|
前端开发 安全 Java
类加载器原理
一、类加载 二、链接 三、初始化
类加载器原理
|
Arthas 监控 Java
Java 诊断利器 Arthas使用
Java 诊断利器 Arthas使用
3636 0
|
消息中间件 IDE Java
阿里云spring脚手架
阿里云spring脚手架
4780 1
|
2月前
|
存储 安全 API
Typora介绍、安装、图床设置和使用
Typora是一款简洁高效的Markdown编辑器,支持实时预览、数学公式编辑、表格制作与多格式导出,适用于写作、学术与技术文档。本文详细介绍其安装、激活、主题设置、图床配置(PicGo+SM.MS/COS/OSS)及常用功能使用,助你高效搭建写作环境。
614 3
Typora介绍、安装、图床设置和使用
|
7月前
|
安全 API UED
A2A(Agent2Agent) 简介
本文主要介绍Google于2025年4月9日发布的Agent2Agent Protocol(简称“A2A”),这是一个旨在促进不同类型智能体(Agent)之间高效沟通与协作的开放协议。
4196 74
A2A(Agent2Agent) 简介
|
监控 Linux Python
python自研流星监控系统meteor_monitor(第二篇)
该文介绍了替代流星监控软件UFOcaptureHD2的新方案,强调了原软件的性能消耗大和收费问题。文中提供了一个GitHub链接以获取最新代码。推荐使用配备Windows 10/11、2.4GHz四核CPU的主机,搭配索尼MX291摄像头进行监控。程序基于ffmpeg,支持不同编码器,如mjpeg、h264_qsv等,具体编码器选择取决于硬件环境。安装涉及创建虚拟环境、安装Python 3.10+及依赖项,并提供了Windows和Linux的详细步骤。此外,程序通过帧差法进行运动检测,然后过滤掉非流星目标,最后使用ffmpeg对原始视频切片并存储。
python自研流星监控系统meteor_monitor(第二篇)
|
测试技术 uml 开发者
使用UML进行系统建模:深入解析与实践指南
【8月更文挑战第19天】UML作为一种强大的建模语言,为系统建模提供了全面的支持。通过合理使用UML,可以显著提高软件开发的效率和质量,促进团队成员之间的有效沟通。然而,UML并非万能,它需要根据项目的具体情况进行灵活应用和调整。希望本文能为你在使用UML进行系统建模时提供一些有益的参考和指导。
|
11月前
|
IDE 开发工具
【开发IDE升级】如何对IDEA版本进行升级
本文介绍了如何将 IntelliJ IDEA Ultimate 从 2020.2.2 版本升级到 2022.3.2 版本。主要内容包括准备工作、卸载旧版本和安装新版本的步骤。首先,从官网下载所需版本并备份旧版配置;接着,通过 Uninstall.exe 卸载旧版,保留配置和插件;最后,安装新版并完成激活。详细的操作步骤和截图帮助用户顺利完成升级过程。
12226 1
【开发IDE升级】如何对IDEA版本进行升级
|
开发者
如何画业务架构图
如何快速上手画业务架构图
11311 2
|
自然语言处理 测试技术
测试驱动开发(TDD)与行为驱动开发(BDD)的比较与选择
在软件开发中,测试驱动开发(TDD)与行为驱动开发(BDD)是两种常见的开发方法。虽然它们都强调测试在开发过程中的重要性,但是两者之间存在一些差异。本文将对TDD和BDD进行比较,分析它们各自的优点和缺点,以及在实际开发中如何选择最适合的方法。