news 2026/5/7 19:18:31

UML分析与设计 - 软考备战(五十四)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UML分析与设计 - 软考备战(五十四)

UML分析与设计

参考资料:

九种常见UML图(分类+图解) - HZX↑ - 博客园

UML科普文,一篇文章掌握14种UML图 - 知乎

『这就是UML!』系列内容第8讲:协作图 - ProcessOn知识社区

『这就是UML!』系列内容第6讲:类图 - ProcessOn知识社区

『这就是UML!』系列内容第10讲:活动图 - ProcessOn知识社区

『这就是UML!』系列内容第4讲:用例图 - ProcessOn知识社区

『这就是UML!』系列内容第9讲:状态图 - ProcessOn知识社区

『这就是UML!』系列内容第7讲:时序图 - ProcessOn知识社区

UML学习文档(一)_uml文档-CSDN博客

UML学习文档(二)_uml 语法文档-CSDN博客

一、 UML核心速记

1.1 “4+1”视图(架构设计的灵魂)

UML并不是随便画图的,它是用来描述软件架构的。

业界公认的“4+1”视图模型,你需要知道每个视图用什么图来表达:

用例视图(+1,核心驱动)

从外部用户的角度看系统。

代表图:用例图。

它驱动了其他四个视图的开发。

逻辑视图(系统内部结构)

系统的静态结构和动态行为。

代表图:类图、对象图、状态图、顺序图。

实现视图/开发视图(程序员视角)

系统的物理代码结构。

代表图:构件图。

进程视图(并发与性能)

关注系统的并发性、同步、性能。

代表图:活动图(带泳道和分叉时)、顺序图。

部署视图/物理视图(运维视角)

软件到硬件的映射。

代表图:部署图。

1.2 UML图与开发阶段的映射关系

需求阶段

用例图(捕捉用户需求,这是唯一的产出)。

分析/设计阶段

类图(静态结构)、顺序图/通信图(对象间交互)、状态图(单个对象生命周期)、活动图(业务流程/算法流程)。

实现阶段

构件图(代码打包成组件)、包图(代码模块划分)。

部署阶段

部署图(服务器、网络拓扑)。

二、 静态结构建模

静态图描述的是系统的“骨架”,不随时间变化。

2.1 类图与对象图

对象图

类图在某一时刻的“快照”(实例化)。

类图有类名,对象图的名字下面必须带下划线(如 张三: Person)。

类图

类的四大核心关系

这四种关系的耦合度从弱到强依次为:

依赖 ➡️ 关联 ➡️ 泛化 ➡️ 实现。

依赖—— 虚线箭头 - - - ->

语义:临时用了一下,用完就散了。

代码体现:方法的参数、局部变量。

例子:人过河,依赖船。Person 类的方法 crossRiver(Boat b),人就依赖了船。

关联—— 实线箭头 ——> (双向则无箭头)

语义:长期的拥有关系,通常作为类的属性存在。

代码体现:类的成员变量。

例子:学生和课程。学生选了课,这个关系要存起来,所以学生类里有 List<Course> 属性。

关联多重性

在连线两端写数字。

1(只有一个)

0..1(可选)

或 0..(零到多个)

1..(一到多个)。

比如:一个学生可以选 0.. 门课,一门课可以被 1.. 个学生选。

泛化/继承—— 实线空心三角箭头 ——▷ (箭头指向父类)

语义:is-a 关系。

例子:鸟和燕子,燕子指向鸟。

实现—— 虚线空心三角箭头 - - -▷ (箭头指向接口)

语义:实现接口里的方法。

例子:飞行接口和燕子,燕子实现飞行接口,燕子指向飞行接口。

聚合——空心菱形指向整体

语义:整体与部分的关系,且部分可以离开整体而单独存在。

聚合关系是关联关系的一种,是强的关联关系。

组合——实心菱形指向整体

语义:一种整体与部分的关系,但部分不能离开整体而单独存在。

组合关系是关联关系的一种,是比聚合关系还要强的关系。

2.2 包图(管理复杂度)

作用

像Windows的文件夹一样,把相关的类、接口打包装进一个包里。

依赖原则

如果包A里的类用到了包B里的类,就说A依赖B。

要尽量避免循环依赖(A依赖B,B又依赖A)。

导入与访问
import(导入)

不仅看到,还把里面的名字引入到当前命名空间(可以直接用类名)。

access(访问)

只能看到,不能用简名,必须带包名路径(类似Java的完全限定名)。

2.3 构件图(代码级别的物理模块)

提供接口

构件旁边画一条实线,顶端连着一个小圆圈(lollipop,棒棒糖)。表示“我能给别人提供什么服务”。

请求接口

构件旁边画一条实线,顶端连着一个半圆(socket,插座)。表示“我需要别人给我提供什么服务”。

2.4 部署图(软硬件映射)

节点

立体的长方体(代表服务器、电脑、打印机等硬件)。

制品

节点里面画的普通矩形(代表部署在上面的.jar、.exe文件、数据库等)。

通信关联

节点之间的实线,表示网络连接(可以写上协议,如 TCP/IP、HTTP)。

三、 动态行为建模

动态图描述的是系统的“动作”,随时间发生变化。

3.1 用例图

用例图由三部分组成:

-系统边界(大方框)

-参与者(小人)

-用例(椭圆)

包含与扩展

这两个关系长得极像,都是虚线箭头,箭头上分别写着<<include>>和<<extend>>。

核心区别在于:谁是主导?箭头往哪指?

包含关系 <<include>>

语义:基础用例必须用到被包含用例。被包含用例是基础用例的“必经之路”或“公共子流程”。

箭头方向:从基础用例 指向 被包含用例

例题套路:

“用户登录时,必须包含身份验证”。

箭头:[用户登录] - - -> [身份验证]。

扩展关系 <<extend>>

语义:基础用例在特定条件下,可选地触发扩展用例。扩展用例通常是处理“异常分支”或“可选高级功能”。

箭头方向:从扩展用例 指向 基础用例!

(千万别记反了!因为扩展用例是“寄生”在基础用例上的,它要去“依附”基础用例)。

例题套路:

“在支付用例中,如果余额不足,则扩展出【提示充值】用例”。

箭头:[提示充值] - - -> [支付]。

泛化关系

用例之间也可以有继承。

比如“线上支付”和“线下支付”泛化出“支付”。

实线空心三角指向“支付”。

3.2 交互图(描述对象之间发消息)

交互图分为两种,它们表达的信息完全一样,只是侧重点不同。

1. 顺序图/时序图

顶部一排对象(:ObjectA),每个对象下面垂下一根虚线(生命线)。

生命线上的细长矩形叫激活期(表示对象正在执行代码,没激活就是空闲)。

同步消息

实心箭头 ▶。

表示调用者发消息后,停在那里等,必须等接收者干完活返回后,调用者才继续往下走。(类似打电话,必须等对方接听)。

异步消息

开放式箭头 > (只有线,没有实心三角)。

表示调用者发完消息就接着干自己的事了,不管接收者死活。(类似发微信)。

返回消息

虚线开放式箭头 > (虚线)。

表示接收者处理完毕,把结果还给调用者。

2. 通信图(原协作图)

一堆对象散落在纸上,对象之间有实线连接(链接),连线上画箭头写消息,旁边标上序号(1, 1.1, 1.2)表示顺序。

它不画生命线,看不出谁先谁后的直观时间感,但能清楚看出哪些对象之间有物理连接(空间结构)。

3.3 状态图(状态机图)

适用场景

当一个对象在不同条件下会有多种状态,且状态之间会来回切换时。

比如:订单(待支付、已支付、已发货、已签收)、电梯(开门、关门、上行、下行)。

基本元素

初始状态:实心圆点 ●。

结束状态:圆圈套实心点 ◎。

状态:圆角矩形。

状态转移线的语法

转移线上必须写:事件 [条件] / 动作

发生了什么“事件”,在什么“条件”下,执行了什么“动作”,然后切换到下一个状态。

例子:

[密码正确] / 开门。

这里没有写事件,说明是系统内部判断。

如果是读卡 / [密码正确] / 开门,读卡就是事件。

3.4 活动图(流程图升级版)

本质:它就是带了泳道的流程图。

状态图看“状态”,活动图看“动作”。

与流程图的区别:活动图有并发的表示方法。

分叉与汇合(粗黑线)

一条粗黑线进入,分出多条箭头出去,叫分叉,表示后面的动作可以同时并发执行。

多条箭头汇聚到一条粗黑线,再出去一条箭头,叫汇合,表示必须等待所有并发分支都执行完,才继续往下走。

避坑:

分叉和汇合必须成对出现!

且分叉出去几条,汇合就必须收几条。

这和流程图里简单的菱形判断框完全不同。

泳道

把活动图用竖线或横线切成几块,每块写上部门或角色名,用来明确“这个动作具体是谁干的”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 19:11:28

无线网络安全--实验 规避WLAN验证之发现隐藏的SSID

前面的步骤和无线网络安全--实验 Wireshark的简单使用-CSDN博客内容类似&#xff0c;前四个步骤一样 步骤一&#xff1a; 安装及配置无线路由器&#xff0c;并让同组的笔记本电脑连接到该无线路由器。 过程&#xff08;略&#xff09;&#xff0c;相关方法请参考前面的相关实…

作者头像 李华
网站建设 2026/5/7 19:07:10

持续写入、宽温、断电:天硕G40如何回应工业SSD的寿命挑战

SSD寿命的终极天花板不在主控&#xff0c;而在NAND闪存单元的物理结构。每完成一次编程与擦除&#xff0c;存储电子的氧化层就磨损一点。氧化层薄到困不住电子&#xff0c;这个单元便宣告退役。不同NAND类型&#xff0c;天花板高度差出一个数量级&#xff1a;NAND类型每单元存储…

作者头像 李华
网站建设 2026/5/7 19:03:28

AI智能体与地理空间分析融合:eGEOagents框架解析与实践

1. 项目概述&#xff1a;当AI智能体遇见地理空间分析最近在GitHub上看到一个挺有意思的项目&#xff0c;叫mverab/eGEOagents。光看这个名字&#xff0c;可能有点抽象&#xff0c;但如果你对地理信息系统&#xff08;GIS&#xff09;、空间数据分析&#xff0c;或者最近火热的A…

作者头像 李华
网站建设 2026/5/7 19:01:55

Pytorch图像去噪实战(五十):完整项目封装实战,把训练、推理、评估整理成可复用工程模板

Pytorch图像去噪实战(五十):完整项目封装实战,把训练、推理、评估整理成可复用工程模板 一、问题场景:代码越写越多,最后项目乱成一团 做图像去噪系列实验时,最开始可能只有几个文件: model.py train.py test.py但随着模型越来越多,很快会变成: 多个模型 多个数据集…

作者头像 李华