当前位置: 首页 > news >正文

《软件方法》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(静态随机存储器&#xff0…...

【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 过程中&#xff0c;可能会遇到一些常见问题和需要注意的事项&#xff1a; 1. USB 调试 要使用 ADB&#xff0c;你需要在设备上启用 USB 调试模式。这通常在设备的开发者选项中设置。如果你不能看到开发者选项&#xff0c;可以在设…...

TCP/IP五元组

什么是五元组规则&#xff1f; 五元组是通信术语&#xff0c;英文名称为five-tuple,或5-tuple&#xff0c;五元组包括源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 堆栈的默认安全设置 解决也很简单&#xff0c;将ssl安全等级降下来就行&#xff0c;例如&#xff1a; import ssl import aiohttp ctx ssl.cr…...

分析RPA流程自动化的挑战和解决方案

随着数字化工具和自动化解决方案的日益成熟&#xff0c;各行各业发掘到RPA机器人流程自动化技术的先进性&#xff0c;逐渐规模化部署RPA。 为了更好地推进RPA的实施&#xff0c;金智维在这里分享一些运用这项技术时面临的共同挑战&#xff0c;并给出针对性的解决方案。 组织架构…...

我试图扯掉这条 SQL 的底裤。只能扯一点点,不能扯多了

之前不是写分页嘛,分页肯定就要说到 limit 关键字嘛。 然后我啪的一下扔了一个链接出来: https://dev.mysql.com/doc/refman/8.0/en/limit-optimization.html 这个链接就是 MySQL 官方文档,这一章节叫做“对 Limit 查询的优化”,针对 limit 和 order by 组合的场景进行了较…...

LeNet(pytorch实现

LeNet 本文编写了一个简单易懂的LeNet网络&#xff0c;并在F-MNIST数据集上进行测试&#xff0c;允许使用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获取维基百科的消息盒&#xff0c;同样可以通过Spider获取网站内容&#xff0c;最近学习了SeleniumPhantomjs后&#xff0c;准备利用它们获取百度百科的旅游景点消息盒&#xff08;InfoBox&#xff09;&#xff0c;这也是毕业设计实体对齐和属…...

springcloud笔记 (8) -网关 Gateway

网关 出国需要过海关 网关&#xff1a;网络的关卡 网关的作用 1&#xff1a;路由转发 2&#xff1a;安全控制 保护每个服务&#xff0c;不需要将每个暴露出去 3&#xff1a;负载均衡 1.没有网关&#xff1a;客户端直接访问我们的微服务&#xff0c;会需要在客户端配置很多…...

【C++编程语言】STL常用算法 算术生成和集合算法

1.算术生成算法概念 算法简介&#xff1a; accumlate 计算容器元素累计总和fill 向容器中添加元素 注意&#xff1a;算术生成算法属于小型算法 使用时包含头文件为#include<numeric> 2.accumulate /*函数原型&#xff1a;int accumulate(iterator beg ,iterator end…...

解放双手:VMLogin自动化工具的高效便捷

在现代工作环境中&#xff0c;时间和效率是我们追求的关键。幸运的是&#xff0c;随着技术的发展&#xff0c;自动化工具为我们提供了解放双手的机会。其中&#xff0c;防关联浏览器的自动化就是一种强大的工具&#xff0c;能够简化我们的工作流程并提升效率。本文将探讨浏览器…...

深度解析网络代理技术及其在网络安全和爬虫应用中的关键作用

在当今数字化时代&#xff0c;网络代理技术在维护网络安全、保护隐私以及实现高效数据获取方面发挥着不可或缺的作用。本文将全面解析Socks5代理、IP代理等关键技术&#xff0c;并探讨其在网络安全和爬虫开发中的重要作用。 1. Socks5代理与SK5代理&#xff1a;多功能代理协议…...

寻找二叉树的最低公共祖先节点

两个节点沿二叉树向上找&#xff0c;找到的第一个公共的节点 例&#xff1a;D和F之间的最低公共节点&#xff1a;B D → B&#xff1b; F → E → B&#xff1b; E和G最低公共节点&#xff1a;A E → B → A&#xff1b; G → C → A&#xff1b; B和F最低公共节点&#xff…...

python网络爬虫(二)基本库的使用urllib/requests

使用urllib 了解一下 urllib 库&#xff0c;它是 Python 内置的 HTTP 请求库&#xff0c;也就是说不需要额外安装即可使用。它包含如下 4 个模块。 request&#xff1a;它是最基本的 HTTP 请求模块&#xff0c;可以用来模拟发送请求。就像在浏览器里输入网址然后回车一样&…...

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特训营》

作者简介&#xff1a; 懒大王敲代码&#xff0c;正在学习嵌入式方向有关课程stm32&#xff0c;网络编程&#xff0c;数据结构C/C等 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 《AWD特训营》 前言 内容简介 读者对象 本书目录 前言…...

从零开始 Spring Cloud 15:多级缓存

从零开始 Spring Cloud 15&#xff1a;多级缓存 多级缓存架构 传统的缓存使用 Redis&#xff0c;大致架构如下&#xff1a; 这个架构存在一些问题&#xff1a; 请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0c;会对数据库产生冲…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...