《软件方法》2023版第1章(11)1.4.3 具体工作步骤
DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
1.4 应用UML的建模工作流
1.4.3 使用UML建模的工作流步骤
图1-17中“工件形式”一列所列出的图就是本书推荐的在建模工作流ABCD中的UML用法,我用活动图进一步表示建模的步骤如图1-20。本书的内容就是按照图1-20的顺序讲述。

图1-20 使用UML的ABCD建模工作流步骤
从图1-17和图1-20可以看出,本书重点使用的UML图形只有4种:用例图、类图、序列图和状态机图。
图1-21列出了其他可选的用法。

图1-21 可选和推荐的建模元素用法(●表示推荐使用,√表示可以使用 )
从图1-17和图1-21可以看出,设计工作流的建模,推荐做法是不用UML表达,而是用相应实现平台的表示法表达,即所谓的“源代码”(目前大多是文本形式)。考虑了具体平台实现的类图、序列图、状态机图等,其中包含的信息和“源代码”差不多,没有必要花费精力去画设计工作流的UML图再编码,因为这样做没有带来任何增值。
建模过程中,我们写的每一个字,画的每一张图,都应该能带来增值,否则就没有必要写它或者画它。这一点,本书后面还会不断提到。
更合理的做法是,做好分析工作流,把领域逻辑放进分析模型中,然后再结合实现平台的特点,选定一条分析和设计之间有规律的映射套路,通过建模工具或者人力搬砖把分析按照套路映射到设计。
这时,即使要画设计的类图、序列图等,也只需要挑选典型的类、典型的用例来展示映射的套路,不需要把分析模型的内容都结合实现平台画一遍。
像Rhapsody(全名IBM Engineering Systems Design Rhapsody)这样的建模工具,可以和各种开发环境集成,配置好后就可以通过正向工程从类图、状态机图生成可执行的代码。开发人员甚至可以做到只需要编辑和调试UML模型,不需要在编码环境中编辑和调试。图1-22是用Rhapsody工具绘制的某个模型(洗碗机)的运行时状态机图,粉红色标出了当前的状态。类图和状态机图的背后有真实的C++代码。

图1-22 Rhapsody下的运行时状态机图
同样,如果需要设计工作流的UML图来搞形式主义充场面,可以通过建模工具对源代码或数据库做逆向工程,生成设计工作流的各种UML图。如图1-23,就是用建模工具UModel对某个C#类的某个操作做逆向工程生成的序列图。可以看到,这张序列图涉及到很多类的协作。图的右侧放大了一个小片段,勉强让读者能够阅读。

图1-23 从代码逆向工程得到的UML序列图
以上提到的选择映射套路、正向逆向工程等内容,本书在设计工作流的章节再详述。
相关文章:
《软件方法》2023版第1章(11)1.4.3 具体工作步骤
DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.3 使用UML建模的工作流步骤 图1-17中“工件形式”一列所列出的图就是本书推荐的在建模工作流ABCD中的UML用法,我用活动图进一步表示建模的步…...
git将当前分支A强制推送远程分支pro上
前言 开发中基于线上分支pro创建了A分支,开发完成之后。又基于线上分支pro创建了B分支,都以此合并到测试分支,两个分支更改中都动用部分共同的文件,这就导致后续开发合并代码越来越乱,这时你想把本地开发的分支强推到…...
【计算机基础】存储器
目录 一.概念二.分类1.按存储介质分类2.按存储方式分类3.按存储器的读写功能分类4.按信息的可保存性分类5.按在计算机系统中的作用分类 三.主存区分SRAM、DRAM、Flash、DDR1.SRAM(静态随机存储器࿰…...
【LCR 159. 库存管理 III】
目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int getrandom(int left,int right,vector<int>& stock){return stock[rand()%(right-left1)left];}void qsort(int l,int r,vector<int>& s…...
Android ADB 常见问题和注意事项
Android ADB 常见问题和注意事项 在使用 ADB 过程中,可能会遇到一些常见问题和需要注意的事项: 1. USB 调试 要使用 ADB,你需要在设备上启用 USB 调试模式。这通常在设备的开发者选项中设置。如果你不能看到开发者选项,可以在设…...
TCP/IP五元组
什么是五元组规则? 五元组是通信术语,英文名称为five-tuple,或5-tuple,五元组包括源IP地址(source IP)、源端口(source port)、目的IP地址(destination IP)、目的端口(destination port) 和 传输层协议(the layer 4 protocol)的五个量集合。…...
aiohttp ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] 错误处理
这个问题原因吧其实就是3.10 开始官网更新了TLS 堆栈默认安全设置 感兴趣的可以看下链接 python官网叙述: Python 3.10 增加了 TLS 堆栈的默认安全设置 解决也很简单,将ssl安全等级降下来就行,例如: import ssl import aiohttp ctx ssl.cr…...
分析RPA流程自动化的挑战和解决方案
随着数字化工具和自动化解决方案的日益成熟,各行各业发掘到RPA机器人流程自动化技术的先进性,逐渐规模化部署RPA。 为了更好地推进RPA的实施,金智维在这里分享一些运用这项技术时面临的共同挑战,并给出针对性的解决方案。 组织架构…...
我试图扯掉这条 SQL 的底裤。只能扯一点点,不能扯多了
之前不是写分页嘛,分页肯定就要说到 limit 关键字嘛。 然后我啪的一下扔了一个链接出来: https://dev.mysql.com/doc/refman/8.0/en/limit-optimization.html 这个链接就是 MySQL 官方文档,这一章节叫做“对 Limit 查询的优化”,针对 limit 和 order by 组合的场景进行了较…...
LeNet(pytorch实现
LeNet 本文编写了一个简单易懂的LeNet网络,并在F-MNIST数据集上进行测试,允许使用GPU计算 在这里插入代码片 import torch from torch import nn, optim import d2lzh_pytorch as d2ldevice torch.device(cuda if torch.cuda.is_available() else cp…...
Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了SeleniumPhantomjs后,准备利用它们获取百度百科的旅游景点消息盒(InfoBox),这也是毕业设计实体对齐和属…...
springcloud笔记 (8) -网关 Gateway
网关 出国需要过海关 网关:网络的关卡 网关的作用 1:路由转发 2:安全控制 保护每个服务,不需要将每个暴露出去 3:负载均衡 1.没有网关:客户端直接访问我们的微服务,会需要在客户端配置很多…...
【C++编程语言】STL常用算法 算术生成和集合算法
1.算术生成算法概念 算法简介: accumlate 计算容器元素累计总和fill 向容器中添加元素 注意:算术生成算法属于小型算法 使用时包含头文件为#include<numeric> 2.accumulate /*函数原型:int accumulate(iterator beg ,iterator end…...
解放双手:VMLogin自动化工具的高效便捷
在现代工作环境中,时间和效率是我们追求的关键。幸运的是,随着技术的发展,自动化工具为我们提供了解放双手的机会。其中,防关联浏览器的自动化就是一种强大的工具,能够简化我们的工作流程并提升效率。本文将探讨浏览器…...
深度解析网络代理技术及其在网络安全和爬虫应用中的关键作用
在当今数字化时代,网络代理技术在维护网络安全、保护隐私以及实现高效数据获取方面发挥着不可或缺的作用。本文将全面解析Socks5代理、IP代理等关键技术,并探讨其在网络安全和爬虫开发中的重要作用。 1. Socks5代理与SK5代理:多功能代理协议…...
寻找二叉树的最低公共祖先节点
两个节点沿二叉树向上找,找到的第一个公共的节点 例:D和F之间的最低公共节点:B D → B; F → E → B; E和G最低公共节点:A E → B → A; G → C → A; B和F最低公共节点ÿ…...
python网络爬虫(二)基本库的使用urllib/requests
使用urllib 了解一下 urllib 库,它是 Python 内置的 HTTP 请求库,也就是说不需要额外安装即可使用。它包含如下 4 个模块。 request:它是最基本的 HTTP 请求模块,可以用来模拟发送请求。就像在浏览器里输入网址然后回车一样&…...
Kafka快速入门(最新版3.6.0)
文章目录 一、初识MQ1.1 什么是MQ1.2 同步和异步通讯1.1.1 同步通讯1.1.2 异步通讯 1.3 技术对比1.4 MQ的两种模式 二、初识Kafka2.1 Kafka的使用场景2.2 Kafka基本概念2.3 Topic与Partition 三、Kafka基本使用3.1 部署前的准备3.2 启动kafka服务器3.3 Kafka核心概念之Topic3.4…...
CTF/AWD竞赛标准参考书+实战指南:《AWD特训营》
作者简介: 懒大王敲代码,正在学习嵌入式方向有关课程stm32,网络编程,数据结构C/C等 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 《AWD特训营》 前言 内容简介 读者对象 本书目录 前言…...
从零开始 Spring Cloud 15:多级缓存
从零开始 Spring Cloud 15:多级缓存 多级缓存架构 传统的缓存使用 Redis,大致架构如下: 这个架构存在一些问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时,会对数据库产生冲…...
手把手教你用Qwen3-TTS:10种语言语音合成,开箱即用
手把手教你用Qwen3-TTS:10种语言语音合成,开箱即用 1. 为什么选择Qwen3-TTS? 想象一下,你正在开发一个多语言智能客服系统,需要为不同国家的用户提供自然流畅的语音服务。传统方案可能需要部署多个语音合成引擎&…...
三分钟快速部署!DOL游戏汉化美化整合包完全指南
三分钟快速部署!DOL游戏汉化美化整合包完全指南 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 还在为英文游戏界面烦恼吗?想要为游戏角色换上精美立绘却不知从何下手&#x…...
PyCharm中玩转Phi-4-mini-reasoning:插件开发与交互式Python调试
PyCharm中玩转Phi-4-mini-reasoning:插件开发与交互式Python调试 1. 引言:当PyCharm遇上Phi-4-mini-reasoning 作为Python开发者,PyCharm几乎是我们每天都要打交道的开发环境。而Phi-4-mini-reasoning作为一款轻量级推理模型,在…...
云原生 DevOps 实践与优化:构建高效的持续交付系统
云原生 DevOps 实践与优化:构建高效的持续交付系统 前言 作为一个在数据深渊里捞了十几年 Bug 的女码农,我深知云原生 DevOps 在现代企业中的重要性。随着云技术的快速发展,传统的 DevOps 实践已经难以满足云原生环境的需求。今天,…...
手把手教程:基于Qwen2.5-VL的Chord视觉定位模型,快速部署与实战体验
手把手教程:基于Qwen2.5-VL的Chord视觉定位模型,快速部署与实战体验 1. 项目概述 Chord视觉定位模型是基于Qwen2.5-VL多模态大模型构建的智能视觉定位服务。它能理解自然语言描述,在图像中精确定位目标对象并返回边界框坐标,无需…...
微软Phi-3轻量模型保姆级教程:快速部署,一键开启智能问答与文本改写
微软Phi-3轻量模型保姆级教程:快速部署,一键开启智能问答与文本改写 1. 为什么选择Phi-3-mini-4k-instruct-gguf Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型,特别适合日常办公和内容创作场景。相比其他大模型,…...
Ostrakon-VL多模态模型效果展示:商品全扫描结果终端打印动态演示
Ostrakon-VL多模态模型效果展示:商品全扫描结果终端打印动态演示 1. 像素特工终端介绍 这是一个基于Ostrakon-VL-8B多模态大模型开发的Web交互终端,专门针对零售与餐饮场景进行了优化。与传统工业级UI不同,我们采用了高饱和度的像素艺术风格…...
Python:深入理解set_seed——确保机器学习实验的可重复性
1. 为什么我们需要set_seed? 做机器学习实验时,最让人头疼的就是结果不可复现。昨天跑出来的准确率是92%,今天同样的代码跑出来变成了89%。这种"薛定谔的准确率"让很多开发者抓狂。我在实际项目中就遇到过这种情况:在调…...
ESP8266驱动1.44英寸ST7735 TFT屏的实战指南与图像显示优化
1. ESP8266与ST7735屏的硬件连接实战 第一次用ESP8266驱动1.44寸ST7735屏时,最让我头疼的就是引脚接线问题。不同厂商的屏幕引脚定义可能略有差异,但核心信号线基本一致。我手头这块屏采用8针SPI接口,实际测试发现用NodeMCU开发板连接最方便。…...
【AI原生医疗系统落地实战】:SITS2026项目中3大架构决策、2次范式跃迁与1套可复用合规开发框架
第一章:SITS2026案例:AI原生医疗系统开发 2026奇点智能技术大会(https://ml-summit.org) 系统架构设计原则 SITS2026项目摒弃传统“AI医疗系统”的叠加模式,采用AI原生(AI-Native)范式——将大语言模型、多模态推理与…...
