《软件方法》2023版第1章(10)应用UML的建模工作流-大图
DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
1.4 应用UML的建模工作流
1.4.1 概念
我用类图表示建模工作流相关概念如图1-16。

图1-16 建模工作流相关概念
图1-16左侧灰色部分定义了“游戏规则”,右侧则是在“游戏规则”上“玩游戏”的结果。
显然,只是看这个类图不能很好理解相关概念。我用对象图展示本书推荐的“游戏规则”如图1-17。

图1-17 建模工作流相关概念的对象图(图形较大,点开看或访问原图http://www.umlchina.com/book/1pics/fig1_017.png)
图1-17中,除了最左侧的“工作流类型”之外,都是可以变化的。
可以替换“表示元素”。例如,系统用例规约改为用活动图表达,则图1-17的相应部分可以改为图1-18。

图1-18 系统用例规约改为用活动图表达
可以替换“表示法”。例如,把UML换成其他表示法或自创的表示法,那么图1-17左起3到5列都要修改。
可以替换“方法学”,例如,受“少林功夫+唱歌跳舞”启发,创造出“浑元形意太极+革命性创造划时代洞见领域驱动设计敏捷精益方法学”,但仍然使用UML表示法,那么图1-17左起2、3列需要修改。
1.4.2 工具箱
从图1-17可以看出,本书重点使用的UML图形只有4种:用例图、类图、序列图和状态机图。
UML 2.5包含的图形一共有14种,如图1-19所示的树上的叶结点。

图1-19 UML图形(根据UML2.5规范绘制)
经常会有人有意无意地误导,让人以为使用UML建模需要画这么多图,顺势攻击“UML笨重”。其实,应该把UML看作一个工具箱。工具箱里面有各种工具,建模人员只需要根据当前所开发系统的特点,从这个工具箱中选择合适的工具就可以,并不需要“完整地”使用UML。
这和编程语言类似。很多人说“我用Java”,其实只是用Java的一小部分,而且很长时间内也只会用这一小部分。
经常有学员问:潘老师,能不能给一个案例,完完整整地实施了整套UML?这是一种误解,这样的案例不应该有。这相当于问:有没有一本经典的小说,把字典里所有的单词都用上了?有一些建模工具自带的案例模型会造成误解,一个模型里把所有的UML图都给用上了,但这是工具厂商出于展示其工具建模能力的目的而提供的,不可当真。
相关文章:
《软件方法》2023版第1章(10)应用UML的建模工作流-大图
DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.1 概念 我用类图表示建模工作流相关概念如图1-16。 图1-16 建模工作流相关概念 图1-16左侧灰色部分定义了“游戏规则”,右侧则是在“游戏规…...
The given SOAPAction http__xxxxx_xx does not match an operation
这是在客户端调用服务端接口时报出的错误,主要是客户端在调用时设置了SOAPAction,参考如下: 解决方案 在注解WebMethod() 中加上action注解,设置上一模一样的SOAPAction即可,如下: WebMethod(action &qu…...
【java零基础入门到就业】第二天:jdk的下载安装和第一个HelloWorld程序
1、java内容概述 java前半部分学习内容主要如下: 1、Java基础语法2、面向对象3、API4、字符串5、集合6、拼图游戏 1.1、 java基础语法 java基础语法主要包括以下内容: Java入门小概念Idea和运算符判断和循环方法数组课后练习题 Java是什么…...
C++数据结构X篇_15_求二叉树叶子数与高度(递归方法)
本篇参考求二叉树叶子数与高度(C)进行整理。 文章目录 1. 二叉树中叶子数与高度2. 求二叉树叶子数与高度的实现代码 1. 二叉树中叶子数与高度 我们首先来看一看二叉树中叶子数与高度的定义: 叶子数:对于一个二叉树的节点&#x…...
MySQL锁学习笔记
锁 事务的隔离性由锁来实现。 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我…...
如何将前后端分离项目部署到本地的Docker Desktop容器运行并且访问
文章目录 前言 完成了客户的一个前后端分离项目,要求部署到客户电脑上去展示,那肯定不能直接把代码弄上去跑呀~~~,于是我就想把他们都打包部署到本地的docker容器里面,方便运行和访问,so,以下内容就详细介…...
前端开发中的try...catch
首先try...catch 结构可以用来处理 Promise 中的异常。在 JavaScript 中,Promise 提供了一种处理异步操作的机制,并且可以通过 .catch() 方法捕获并处理异步操作中抛出的异常。 async function someAsyncFunction() {try {const result await someProm…...
数据加密中,采用密钥管理系统相比加密机的好处
密钥管理系统与加密机都能提供数据加解密,那么针对具体的应用加密,采用密钥管理系统比单纯使用加密机有哪些优点,列表如下: 集中化管理:密钥管理系统可以对加密算法和密钥进行集中化管理,使得企业可以对加…...
Elasticsearch:什么是大语言模型 (LLMs)?
假设你想参加流行的游戏节目 Jeopardy(这是一个美国电视游戏节目,参赛者将获得答案并必须猜测问题)。 要参加演出,你需要了解任何事情的一切。 所以你决定在接下来的三年里每天都花时间阅读互联网上的所有内容。 你很快就会意识到…...
神奇的python的生成器
函数生成器代码 def num():print("message 1")yield 1print("message 2")yield 2print("message 3")yield 3f num() x next(f) # message 1 print(x) # 输出1x next(f) # message 2 print(x) # 输出2x next(f) # message 3 print(x) …...
【来点小剧场--项目测试报告】个人博客项目自动化测试
前述 针对个人博客项目进行测试,个人博客主要由七个页面构成:注册页、登录页、个人博客列表页、博客发布页、博客修改页、博客列表页、博客详情页,主要功能包括:注册、登录、编辑并发布博客、修改已发布的博客、查看详情、删除博…...
【安卓环境搭建报错的解决】
安卓环境搭建报错的解决 问题描述解决方法 问题描述 电脑中新安装的 Android Studio Giraffe | 2022.3.1 Patch ,运行 studio 系统工程,提示如下错误 Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.…...
Pruning Pre-trained Language Models Without Fine-Tuning
本文是LLM系列文章,针对《Pruning Pre-trained Language Models Without Fine-Tuning》的翻译。 修剪未微调的预训练语言模型 摘要1 引言2 相关工作3 背景4 静态模型剪枝5 实验6 分析7 结论8 局限性 摘要 为了克服预训练语言模型(PLMs)中的过度参数化问题…...
Java内存模型-Java Memory Model(JMM)-可见性、原子性、有序性
5. Java内存模型之JMM 5.1 先从大场面试开始 你知道什么是Java内存模型JMM吗? JMM和volatile他们两个之间的关系? JMM没有那些特征或者它的三大特征是什么? 为什么要有JMM,它为什么出现?作用和功能是什么…...
基于Springboot实现在线答疑平台系统项目【项目源码+论文说明】
基于Springboot实现在线答疑平台系统演示 摘要 社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大师生的喜爱,也逐渐进入了每个学生的使用。互联网具有便利性,速度快,效率高,成本…...
前端工程化知识系列(1)
目录 1. 什么是前端工程化,以及它为前端开发带来了哪些好处?2. 你使用过哪些版本控制系统?描述一下你在团队中如何处理代码合并和冲突解决的经验。3. 什么是Git,它的工作原理是什么?可以解释一下常用的Git命令吗&#…...
xml文件报错 ORA-00907: 缺失右括号
原来的sql 更改之后 加一个select * from ()...
VScode platformio的使用
一、platformio 工程创建 打开vscode界面你会发现左下多了个家的小图标,点击这里就可以进入platformio。 在右侧Quick Access栏中,有4个选项。可以看得出来,我们这里直接点击创建一个新的工程。 点击New Project打开project配置界面&#x…...
transformer_01
一、传统RNN存在的问题 1.序列前序太长,每个xi要记住前面的特征,而且一直在学,没有忘记,可能特征不能学的太好 2.串行,层越多越慢,难以堆叠很多层; 3.只能看到过去,不能看到未来 搞…...
JavaSE入门---认识方法
文章目录 什么是方法?方法定义实参和形参的关系没有返回值的方法 方法重载方法签名 什么是方法? 在编程中某段功能的代码可能频繁使用到,如果在每个位置都重新实现一遍,会有一些缺点,比如: 使程序变得繁琐…...
Activiti7实战指南:从流程实例到任务分配的全流程解析
1. Activiti7流程引擎核心概念解析 Activiti7作为当前最流行的开源工作流引擎之一,在企业级业务流程管理中扮演着重要角色。我第一次接触Activiti是在2014年参与某金融项目的审批系统开发时,当时就被它优雅的设计理念所吸引。经过多年实战,我…...
风光负荷不同鲁棒性对系统总成本的影响研究(考虑上下备用容量)(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
光刻胶选型避坑指南:从正胶负胶到配套试剂的全流程解析
光刻胶选型避坑指南:从正胶负胶到配套试剂的全流程解析 在半导体制造领域,光刻工艺的质量直接决定了芯片的性能和良率。而光刻胶作为光刻工艺的核心材料,其选型往往成为工艺工程师最头疼的问题之一。我曾亲眼见过一个团队因为选错光刻胶类型&…...
Go - Zerolog使用入门
特点高性能:零分配设计,极高的写入速度,对 GC 几乎无压力。结构化日志:默认输出 JSON 格式,便于日志系统(如 ELK、Loki)解析和检索。支持 context:可以在请求链路中传递和追加日志字…...
OpenBMC实战:phosphor-bmc-code-mgmt仓库代码逻辑全解析(附避坑指南)
OpenBMC实战:phosphor-bmc-code-mgmt仓库代码逻辑全解析(附避坑指南) 在嵌入式系统开发领域,BMC(Baseboard Management Controller)固件的可靠更新机制是确保服务器稳定运行的关键环节。作为OpenBMC项目的核…...
旋转ReDet目标检测环境配置、旋转ReDet目标检测模型代跑训练、旋转ReDet目标检测模型改进创新旋转ReDet目标检测环境配置:Windows、Ubuntu、Centos、Macos等系统
旋转ReDet目标检测环境配置、 旋转ReDet目标检测模型代跑训练、 旋转ReDet目标检测模型改进创新 旋转ReDet目标检测环境配置:Windows、Ubuntu、Centos、Macos等系统环境,如果电脑拥有显卡,可配置GPU版本的ReDet环境。 旋转ReDet目标检测模型代…...
Kubernetes集群的监控与告警方案
Kubernetes集群的监控与告警方案 引言:监控与告警的重要性 哥们,别整那些花里胡哨的!作为一个前端开发兼摇滚鼓手,我最烦的就是系统出问题还不知道。在云原生时代,Kubernetes集群的监控与告警是确保系统稳定运行的关…...
抖音视频批量下载工具全攻略:从效率提升到合规应用
抖音视频批量下载工具全攻略:从效率提升到合规应用 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...
从Kaggle到落地:Albumentations在医学影像分割和目标检测中的实战配置指南
从Kaggle到落地:Albumentations在医学影像分割和目标检测中的实战配置指南 医学影像分析和自动驾驶领域的数据增强,远不止是简单地对图像进行旋转或翻转。当处理MRI扫描中的肿瘤分割或CT影像中的器官定位时,每个像素的位移都可能影响诊断结果…...
雷赛HBS86闭环步进驱动方案代码功能说明
某雷赛86闭环步进驱动方案 HBS86H 86闭环电机驱动器/混合伺服驱动器。原理图PCB代码。整体方案打包。代码无错误无警告。一、方案概述 雷赛HBS86闭环步进驱动方案基于TI的DSP2803x系列芯片构建,该方案整合了原理图、PCB设计以及配套代码,形成一套完整的…...
