【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)
🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光
目录
1. 前言
2. UML概述
2.1 UML的分类与功能
2.2 UML的语法与各图关系
3. 四种图的概述
3.1 状态图
3.2 活动图(Activity Diagram)
3.3 构件图(Component Diagram)
3.4 部署图(Deployment Diagram)
4. 状态图
4.1 状态图概要
4.2 状态图中的事物及解释
4.3 状态的可选活动表
4.4 实例
(1)网上银行登录系统
5. 活动图
5.1 活动图概要
5.2 活动图和状态图的关系
5.3 活动图事物编辑
5.4 活动图关系
5.5 实例
编辑
6. 构件图
6.1 构件图概要
6.2 构件图中的事物及解释
6.3 构件图中的关系及解释
6.4 实例
实例1
实例2
7. 部署图
7.1 部署图概要
7.2 部署图中的事物及解释编辑
7.3 部署图中的关系及解释
7.4 实例
实例1
实例2
7.5 部署图与构件图的关系
8. 总结
1. 前言
2. UML概述
所谓UML(Unified Modeling Language,统一建模语言),一种用来对软件密集系统进行可视化建模的语言。
这样的概念大概解释了UML是什么,不过还不够直观。
我们可以换个问题,UML做到了什么,让人们愿意为之喝彩?
答案就是,它统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。它是一种通用的建模语言,可以为许多面向对象建模方法的用户广泛使用。
如此一来,UML的本质也就呼之欲出了。UML的本质就是为了交流。
一句话:一个UML就能完成整个软件开发中的交流需要
2.1 UML的分类与功能
UML2.0一共有12种图形(UML1.5定义了9种,2.0增加了3种)。
分别是:用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图9种,包图、组合结构图、交互概览图3种。
“UML无用论”在很多年前就被提了出来,更是引发了业内不少争议。有用户将它捧上天,甚至“封神”,也有人斥之为垃圾,甚至称其“反人类”。
那么问题来了,UML 真的无用吗?或者用题主的话来说,UML 还有用吗?
我想先说自己的判断:UML 依然有用。
之所以这么判断,主要基于以下三点事实:
第一,图比代码更清晰
在复杂需求中,UML图是非常必要的。
用例图描述系统的外部交互、序列图描述系统的内部交互、状态图描述系统的动态特性、部署图描述系统的物理节点、类图与对象图描述依赖关系......
所有的图都是协助团队策划稿能源更高效地厘清问题,掌握知识,高效解决问题的。
试问下,在敏捷开发中,如果没有流程图、序列图、状态图进行辅助,你如何在代码过程中保证业务流程、系统前后端、多个系统切换开发做到敏捷高效?
在敏捷开发时,面对稍复杂点的需求,如果要求团队提前用UML图厘清问题,后续填坑可以少很多。
第二,“假敏捷开发”太多
正如@萝魏紫 所言,中国假敏捷太多了,以敏捷为借口少写甚至不写文档,以至于大量项目在本不应出问题的沟通层面出现大量问题,没有统一的标准,沟通不出问题才怪。
UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。
不过,我们也必须注意到,UML不是万能的,但是在系统研发中的沟通作用,效果还是比较好的。
第三,UML 在业界依然在被应用
UML的实际应用例子,大家在这个问答中可以找到不少:
比如,@Milo Yip 表示,“腾讯没有统一、从上而下的软件工程方法论,毕竟业务差异很大。但在各种文档及简报中也经常以 UML 图来呈现一些信息,算是一种辅助沟通的方法。”另外,“我在面试时会让候选人做一些简单设计,用 UML 最好,不会的也可用他熟悉的编程语言表示。”
@fantiny 也举了自己前公司产品ExchangeUSE的例子,据介绍,当时UML在前期需求分析和架构设计阶段起到一定的作用,包括需求分析与共通化整理,系统模块化分析工具,架构设计的交流工具,实现合理性的分析工具。
2.2 UML的语法与各图关系
各图关系:
UML语法描述:
3. 四种图的概述
这一部分先对 状态图、活动图、构件图和部署图 做一个简单的概述。
3.1 状态图
状态图是一个类对象所可能经历的所有历程的模型图。状态图由对象的各个状态和连接这些状态的转换组成。
状态图描述对象:一个类对象
状态图组成:一个类对象的各种状态、状态转化动作
3.2 活动图(Activity Diagram)
- 活动图是状态图的一个变体,用来描述执行算法的工作流程中涉及的活动
- 活动图描述了一组顺序的或并发的活动
状态图和活动图:
1、状态图针对每一个类
2、活动图针对整合算法系统
3.3 构件图(Component Diagram)
构件图为系统的构件建模型—构件即构造应用的软件单元—还包括各构件之间的依赖关系,以便通过这些依赖关系来估计对系统构件的修改给系统可能带来的影响。
构件图(Component Diagram) 是 UML(统一建模语言)中用于描述系统物理构件及其相互关系的图。它展示了系统中各个“构件”(如可执行程序、库、模块等)之间的关系,以及它们如何通过接口进行交互。构件图通常用于描述系统的静态结构,尤其是关注系统的物理实现层次。
构件图的主要元素:
构件(Component):表示系统中的一个物理模块或部件,它是一个可执行的或可部署的单位。构件可以是程序文件、库文件、Web 服务、数据库、或者任何其他具有独立功能的部分。
- 符号:构件通常用一个矩形表示,矩形的右上角有一个小的折角。
接口(Interface):构件之间的交互通常通过接口完成。接口定义了构件提供的服务或其所需的服务。
- 符号:接口通常是一个小圆圈或带有名字的“半圆”。
依赖关系(Dependency):构件图中,构件之间可能有依赖关系,这表示一个构件依赖于另一个构件的功能或服务。
- 符号:依赖关系通常用带箭头的虚线表示,箭头指向被依赖的构件。
端口(Port):端口是构件和外界进行交互的地方,通常用来定义通过接口暴露的功能。
- 符号:端口通常表示为构件矩形的一部分,形状如小小的矩形或圆圈。
3.4 部署图(Deployment Diagram)
部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如计算机、设备或存储器。这个视图允许评估分配结果和资源分配。
4. 状态图
4.1 状态图概要
- 说明对象在它的生命期中响应事件所经历的状态序列,以及它们对那些事件的响应。
- 揭示Actor、类、子系统和组件的复杂特性。 为实时系统建模。
- 对象的状态是指在这个对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动,或等待某些事件。
- 转移是由一种状态到另一种状态的迁移。这种转移由被建模实体内部或外部事件触发。
- 对一个类来说,转移通常是调用了一个可以引起状态发生重要变化的操作的结果。
4.2 状态图中的事物及解释
4.3 状态的可选活动表
4.4 实例
(1)网上银行登录系统
5. 活动图
5.1 活动图概要
- 描述系统的动态行为。
- 包含活动状态(ActionState),活动状态是指业务用例的一个执行步骤或一个操作,不是普通对象的状态。
- 活动图适合描述在没有外部事件触发的情况下的系统内部的逻辑执行过程;否则,状态图更容易描述。
- 类似于传统意义上的流程图。
- 活动图主要用于:
+ 业务建模时,用于详述业务用例,描述一项业务的执行过程;
+ 设计时,描述操作的流程。
5.2 活动图和状态图的关系
- 活动图和状态图都体现状态在活动中变化。
- 状态图是一个类对象在活动中状态发生变化。
- 活动图是整个系统在活动中状态发生变化。
5.3 活动图事物
5.4 活动图关系
5.5 实例
-
本活动图描述一个处理订单的用例执行过
(1)执行setup order
(2)根据order的类型是执行不同的分支:
- single order:执行assign seat、charge credit card
- subscription:同时执行assignseats、debit account或 award bonus
- single order与subscription两步可同时进行(3) 最后mail packet。
6. 构件图
6.1 构件图概要
- 构件图用于静态建模,是表示构件类型的组织以及各种构件之间依赖关系的图。
- 构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。
6.2 构件图中的事物及解释
- 可替换的物理部分包括软件代码、脚本或命令行文件,也可以表示运行时的对象,文档,数据库等。
- 节点(node)是运行时的物理对象,代表一个计算机资源。具体请参见教程“部署图(deployment diagram)”部分。
6.3 构件图中的关系及解释
6.4 实例
实例1
- 图中的构件名称是Dictionary字典。
- 该构件向外提供两个接口,即两个服务Spell-check拼写检查、Synonyms同义词。
实例2
- 图中“Planner计划者”构件向外提供一个“update更新”接口服务。
- 同时,该构件要求外部接口提供一个“Reservations预定”服务。
7. 部署图
7.1 部署图概要
- 部署图用于静态建模,是表示运行时过程节点结构、构件实例及其对象结构的图。
- 如果含有依赖关系的构件实例放置在不同节点上,部署视图可以展示出执行过程中的瓶颈。
- 部署图的两种表现形式:实例层部署图和描述层部署图(会在后面的实例中给出)。
7.2 部署图中的事物及解释
7.3 部署图中的关系及解释
7.4 实例
实例1
- 实例层部署图描述各节点和它们之间的连接。
- 本图中的信息与上张描述层部署图中的内容是相互对应的。
- 图中的关系是各个节点之间存在的通信关系。
实例2
- 描述层部署图表示了系统中的各节点和每个节点包含的构件。
- 图中包括的各种关系如下:
- 通信链关系(不带箭头的直线)
- TicketServe票服务器与Kiosk信息厅之间存在一对多的通信关联;与SalesTerminal售票终端也存在一对多的通信关联;
- 依赖关系(带箭头的虚线)
- TicketSeller售票构件依赖CreditCardCharges信用卡付款构件和TicketDB票数据库构件提供的服务。
- 通信链关系(不带箭头的直线)
7.5 部署图与构件图的关系
部署图(Deployment Diagram) 和 构件图(Component Diagram) 都是 UML 中用于描述系统的静态结构,但它们关注的层次不同,功能上也有所区别。
-
构件图 主要关注系统的逻辑结构和软件层面,描述系统中的各个构件(如模块、库、服务等)及其相互关系,强调模块间的依赖、接口和交互。
-
部署图 主要关注系统的物理部署和硬件层面,展示节点(如服务器、工作站、设备等)之间的关系,并标明哪些构件部署到哪些节点上。
关系:
- 构件图 描述的是系统的软件组件及其内部结构,而 部署图 描述的是这些组件如何在物理硬件上部署和运行。
- 构件图 中的构件通常会在 部署图 中被映射到一个或多个节点上,显示它们的实际部署情况。
- 例如,构件图中的业务逻辑组件可能会被部署到一个服务器节点上,而数据库组件则可能被部署到另一台数据库服务器节点。
8. 总结
本文到这里就结束啦~~
目前已经完成:
【软件工程】一篇入门UML建模图(类图)_uml图教程-CSDN博客
【软件工程】一篇入门UML建模图(用例图、对象图、顺序图与协作图)-CSDN博客
本篇讲述:状态图、活动图、构件图、部署图
如果觉得对你有帮助,友友们可以点个赞,收个藏呀~
相关文章:

【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…...

AI智能导航站HTML5自适应源码帝国cms7.5模板
源码名称:AI导航站HTML5自适应源码帝国cms7.5模板 开发环境:帝国cms 7.5 安装环境:phpmysql var code "4d33ef8e-9e38-43b9-b37b-38f75944ecc9" 带软件采集,可以挂着自动采集发布,无需人工操作࿰…...

Redis 发布订阅模式详解:实现高效的消息通信
目录 引言 1. 什么是 Redis 发布订阅模式? 1.1 定义 1.2 核心概念 2. Redis 发布订阅的工作原理 2.1 基本流程 2.2 示例 2.3 频道与模式订阅 3. Redis 发布订阅的使用场景 3.1 实时消息通知 3.2 事件驱动架构 3.3 日志收集与分发 3.4 分布式锁与协调 4…...

ES的预置分词器
Elasticsearch(简称 ES)提供了多种预置的分词器(Analyzer),用于对文本进行分词处理。分词器通常由字符过滤器(Character Filters)、分词器(Tokenizer)和词元过滤器&#…...

MPPT与PWM充电原理及区别详解
MPPT(最大功率点跟踪)和PWM(脉宽调制)是太阳能充电控制器中常用的两种技术,它们在原理、效率和适用场景上有显著区别。以下是两者的详细对比: 1. 工作原理 PWM(脉宽调制) 核心机制…...

【AGI】通往AGI的复兴号:模型工具演进与技术路径优化
通往AGI的复兴号:模型工具演进与技术路径优化 一、核心模型与工具技术指标及场景分析1. 边缘计算标杆:GLM-PC(2024年11月)2. 长文本处理王者:DeepSeek R1(2025年1月)3. 轻量化开源代表ÿ…...

java2025年常见设计模式面试题
1. 请解释建造者模式(Builder Pattern)及其应用场景。 答案: 建造者模式用于创建一个复杂的对象,同时允许用户只通过指定复杂对象的类型和内容就能构建它们,隐藏了复杂的构建逻辑。 示例: public class C…...

探索CAMEL:揭开多智能体系统的神秘面纱
在人工智能领域,多智能体系统(Multi-Agent Systems, MAS)一直是一个充满活力和潜力的研究方向。随着大语言模型(LLM)的快速发展,智能体之间的协作与交互变得更加复杂和智能。今天,我们要介绍的是一个名为CAMEL(Communicative Agents for “Mind” Exploration of Large…...

el-pagination的使用说明
<el-paginationv-model:current-page"pageNo" //当前第几页v-model:page-size"pageSize" //每页显示多少条数据:page-sizes"[10, 20, 30]" //控制每页显示的条数:small"true" //控制分页器大小:disabled&quo…...

UniApp 运行的微信小程序如何进行深度优化
UniApp 运行的微信小程序如何进行深度优化 目录 引言性能优化 1. 减少包体积2. 优化页面加载速度3. 减少 setData 调用4. 使用分包加载 代码优化 1. 减少不必要的代码2. 使用条件编译3. 优化图片资源 用户体验优化 1. 优化交互体验2. 预加载数据3. 使用骨架屏 调试与监控 1. …...

Web Worker如何在本地使用
首先了解一下什么是Web Worker Web Worker 是一种在后台线程中运行 JavaScript 的机制,允许你在不阻塞主线程的情况下执行耗时的任务。这对于保持网页的响应性和流畅性非常重要,特别是在需要进行复杂计算或大量数据处理时。 主要特点 多线程࿱…...

[原创](Modern C++)现代C++的关键性概念: 改掉new习惯, 尽情地使用智能分配内存
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...

C/C++中使用CopyFile、CopyFileEx原理、用法、区别及分别在哪些场景使用
文章目录 1. CopyFile原理函数原型返回值用法示例适用场景 2. CopyFileEx原理函数原型返回值用法示例适用场景 3. 核心区别4. 选择建议5. 常见问题6.区别 在Windows系统编程中,CopyFile和CopyFileEx是用于文件复制的两个API函数。它们的核心区别在于功能扩展性和控制…...

android studio开发文档
android基本样式 1.文本 2.设置文本大小 3.字体颜色 背景 资源文件 xml’引用资源文件 4.视图宽高 5.间距 6.对齐方式 常用布局 1.linearLayout线性布局 2.相对布局 RelativeLayout 3.网格布局GridLayout 4.scrollview滚动视图 Button 点击事件与长按事件 长按 按钮禁用与…...

计算机网络笔记(二)——1.2互联网概述
1.2.1网络的网络 起源于美国的互联网现已发展成为世界上最大的覆盖全球的计算机网络。 下面,我们先来看看关于网络、互连网、互联网(因特网)的一些基本概念。为了方便,后面我们所称呼的"网络"往往就是"计算机网络",而不是电信网或有…...

Ubuntu 24.04.2 允许 root 登录桌面、 ssh 远程、允许 Ubuntu 客户机与主机拖拽传递文件
允许 root 登录桌面 修改 /etc/pam.d/gdm-autologin , /etc/pam.d/gdm-password 加 # 以注释掉 auth required pam_succeed_if.so user ! root quiet_success 允许 root 通过 ssh 登录 修改 /etc/ssh/sshd_config ... #PermitRootLogin prohibit-password PermitRootLogin …...

day18-后端Web开发——Maven高级
目录 Maven高级1. 分模块设计与开发1.1 介绍1.2 实践1.2.1 分析1.2.2 实现 1.3 总结 2. 继承与聚合2.1 继承2.1.1 继承关系2.1.1.1 思路分析2.1.1.2 实现2.1.2 版本锁定2.1.2.1 场景2.1.2.2 介绍2.1.2.3 实现2.1.2.4 属性配置 2.2 聚合2.2.1 介绍2.2.2 实现 2.3 继承与聚合对比…...

华为hcia——Datacom实验指南——三层交换和ARP的工作原理
什么是三层交换 三层交换是指连接在同一台三层交换机上,不同vlan用户,不同网段ip,通过vlanif接口进行数据交换。 什么是ARP协议 通过网络层的ip地址解析成数据链路层的mac地址。 说白了就是通过目标ip地址去问他对应的mac地址是多少。 A…...

重构谷粒商城09:人人开源框架的快速入门
谷粒商城09——人人开源框架的快速入门 前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶…...

用友 U8出入库查询SQL 连接UNION ALL
-- 销售出库单查询 SELECT 销售出库单 AS 单据类型, a.cCode AS 单号, a.dDate AS 日期, a.cMaker AS 制单人, a.cHandler AS 审核人, a.dVeriDate AS 审核日期, b.cInvCode AS 存货编码, b.iQuantity AS 数量, b.cBatch AS 批号, c.…...

【大模型】WPS 接入 DeepSeek-R1详解,打造全能AI办公助手
目录 一、前言 二、WPS接入AI工具优势 三、WPS接入AI工具两种方式 3.1 手动配置的方式 3.2 Office AI助手 四、WPS手动配置方式接入AI大模型 4.1 安装VBA插件 4.1.1 下载VBA插件并安装 4.2 配置WPS 4.3 WPS集成VB 4.4 AI助手效果测试 4.5 配置模板文…...

Neo4j 数据库备份
将包括系统数据库在内的所有数据库的最近备份存储在一个安全的位置是非常重要的。这确保了在发生数据丢失或损坏时,能够迅速恢复数据库到最近的状态,减少可能的业务影响。对于不同的数据库环境(开发、测试或生产),根据…...

配置 Thunderbird 以使用 QQ 邮箱
配置 Thunderbird 以使用 QQ 邮箱 本片文章的操作系统为 windws 10 ,thunder bird 客户端版本为 128.7.1esr(64位)。注意到其他文章的图片中 thunder bird 的 ui 界面和我这个不一样,导致看起来不太方便,所以这里写一篇博客。不同版本的 thu…...

Hadoop安装文件解压报错:无法创建符号链接。。。
您可能需要管理员身份运行winRAR; 客户端没有所需的特权; cmd进入该目录下,输入命令(本地解压):start winrar x -y hadoop-2.10.1.tar.gz...

C++蓝桥杯皮亚诺曲线距离求解
C蓝桥杯皮亚诺曲线距离求解 一、题目概述二、解题分析2.1解题思路2.2k值范围限制 三、实现代码四、代码测试4.1蓝桥杯测试平台4.2直接传入原始输入的k值4.3限制k值大小4.4pow函数求整数高次幂存在误差4.5满分代码 附录error: ‘long long int y1’ redeclared as different kin…...

【语料数据爬虫】Python爬虫|批量采集工作报告数据(1)
前言 本文是该专栏的第4篇,后面会持续分享Python爬虫采集各种语料数据的的干货知识,值得关注。 在本文中,笔者将主要来介绍基于Python,来实现批量采集“工作报告”数据。同时,本文也是采集“工作报告”数据系列的第1篇。 采集相关数据的具体细节部分以及详细思路逻辑,笔…...

【音视频】ffmpeg命令提取像素格式
1、提取YUV数据 提取yuv数据,并保持分辨率与原视频一致 使用-pix_fmt或-pixel_format指定yuv格式提取数据,并保持原来的分辨率 ffmpeg -i music.mp4 -t "01:00" -pixel_format yuv420p music.yuv提取成功后,可以使用ffplay指定y…...

6-langchang多模态输入和自定义输出
6-langchang多模态输入和自定义输出 多模态数据输入urlbase64url list工具调用自定义输出: JSON, XML, YAML如何解析 JSON 输出json如何解析xmlYAML解析器多模态数据输入 这里我们演示如何将多模态输入直接传递给模型。我们目前期望所有输入都以与OpenAI 期望的格式相同的格式…...

STM32上跑SimpleFOC,电流环、速度环、位置环、棘轮软硬件全开源
引入 我之前写过不少SVPWM、FOC的介绍文章,比如: SVPWM算法原理及详解 从电机本质到park变换再到SVPWM,SVPWM代码实现 电机FOC算法的解释 FOC和SVPWM的C语言代码实现 simple foc可以看成是他们的简化版本。本来simple foc是跑在arduino上的…...

智慧锂电:开启能源新时代的钥匙
在科技日新月异的今天,智慧锂电正以其独特的魅力,引领着能源领域的新变革。智慧锂电不仅革新了传统电池技术,更以其智能化、高效化的特性,成为推动能源管理现代化的重要力量。 智慧锂电项目:点亮绿色转型之路 智慧锂电…...