news 2026/5/22 16:19:01

软考中级-软件设计师:UML建模完整笔记(OpenClaw生成)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软考中级-软件设计师:UML建模完整笔记(OpenClaw生成)

前排提醒:全文内容皆为OpenClaw生成,没有喂其他材料,内容准确性仅供参考。

软考中级-软件设计师:UML建模完整笔记

基于软考软件设计师考试大纲整理,含13种UML图详解


一、UML概述

UML(统一建模语言):用于面向对象软件系统的可视化建模语言,与程序设计语言无关。

三个要素

  1. UML的基本构造块(事物、关系、图)

  2. 支配这些构造块如何放置在一起的规则

  3. 运用与整个语言的一些公共机制

基本构造块

类型说明示例
事务对模型中最具代表性成分的抽象类、接口、用例、构件
关系把事务结合到一起依赖、关联、泛化、实现
聚集了相关的事物类图、用例图、序列图

四种事务

事务类型说明包含内容
结构事物模型的静态部分类、接口、用例、构件、节点、构件
行为事物模型的动态部分交互、活动、状态机
分组事物模型的组织部分
注释事物模型的解释部分依附于元素进行约束或解释的符号

二、UML关系

六种关系(重要)

关系类型符号说明强度排序
依赖---→一个事物变化影响另一个事物最弱
关联表示对象之间的连接
聚合整体与部分的关系,可分离中强
组合整体与部分的关系,不可分离最强
泛化继承关系(子类继承父类,父类泛化子类)
实现接口与类的实现关系

强度排序

依赖 < 关联 < 聚合 < 组合 < 泛化 = 实现 ​ 记忆口诀:用 < 认识 < 可以拆 < 分不开 < 继承

此处原本生成的符号无法辨别虚实线,修改为图片

通俗易懂解释版:

关系1:依赖(uses a)—— 最弱

什么意思:我用你一下,但不是"拥有"你生活类比:你打车,用了出租车,但你不是出租车的主人

乘客 ────使用────→ 出租车 ​ 代码表现: class 乘客 { void 出行() { 出租车 t = new 出租车(); // 只是临时用一下 } }

考试记忆:依赖 = "用一下" = 虚线箭头


关系2:关联(has a)—— 中等

什么意思:你"认识"某个人,长期关系,但不一定"拥有"生活类比:老师认识学生,但老师不是学生的"主人"

老师 ────────── 学生 ​ 代码表现: class 老师 { 学生 s; // 老师"关联"学生 }

考试记忆:关联 = "认识" = 实线


关系3:聚合(has a,可分离)—— 中强

什么意思:你是整体的一部分,但这个部分可以独立存在生活类比:车队由汽车组成,但汽车可以离开车队

◇ 车队 ────── 汽车 ​ 解读:车队"拥有"汽车,但汽车可以离开车队去别的地方

考试记忆:聚合 = "可以拆开" = 空心菱形


关系4:组合(has a,不可分离)—— 最强

什么意思:你是整体的一部分,而且这个部分不能独立存在生活类比:人由心脏、大脑等器官组成,少了心脏人就活不了

◆ 人 ────── 心脏 ​ 解读:心脏是人的一部分,心脏不能独立存在

考试记忆:组合 = "分不开" = 实心菱形


关系5:泛化(is a)—— 继承

什么意思:是...的一种生活类比:狗是动物的一种

△ │ 动物 ────── 狗 ​ 解读:狗"是"动物的一种

考试记忆:泛化 = "是...一种" = 空心三角箭头


关系6:实现(can do)—— 接口

什么意思:承诺能做某事生活类比:只要承诺"会飞",不管是鸟还是飞机都能飞

△ │ 会飞 ◁────── 飞机 ​ 解读:飞机实现了"会飞"这个接口

考试记忆:实现 = "承诺能做到" = 虚线三角箭头


三、结构图(静态图)

1. 类图(Class Diagram)

定义:展示系统中的类以及类之间的关系。

主要关系

  • 依赖

  • 关联(含聚合、组合)

  • 泛化(继承)

  • 实现

类图的三个隔间

+-------------------+ | 类名 | +-------------------+ | 属性(-/+/#) | +-------------------+ | 方法(-/+/#) | +-------------------+ ​ - private + public # protected

常见类图关系示例

△继承 ┌────────────┐ ┌────────────┐ │ Animal │ │ Interface │ └──────┬─────┘ └──────┬─────┘ │ │ ▼ │实现 ┌────────────┐ │ │ Dog │ │ └────────────┘ ▼

2. 对象图(Object Diagram)

定义:表示某一时点系统中对象的快照。

特点

  • 是类图的实例

  • 展示对象和对象之间的链

  • 对象名下有下划线

student1:Student ←→ course1:Course (具体的对象) (具体的对象)

3. 构件图(Component Diagram)

定义:展示构件之间的组织及依赖关系。

用途

  • 展示代码构件的结构

  • 反映系统的物理结构

  • 支持构件的复用

┌─────────────┐ 接口 ┌─────────────┐ │ 构件A │──────────→│ 构件B │ └─────────────┘ └─────────────┘

4. 部署图(Deployment Diagram)

定义:展示硬件结点以及软件构件的部署。

组成

  • 结点:硬件设备(如服务器、工作站)

  • 连接:结点之间的通信路径

┌─────────────────┐ │ 服务器结点 │ │ ┌───────────┐ │ │ │ 构件组件 │ │ │ └───────────┘ │ └───────┬─────────┘ │ ▼ ┌─────────────────┐ │ 客户端结点 │ └─────────────────┘

四、行为图(动态图)

5. 用例图(Use Case Diagram)

定义:展示系统功能的外部视图,描述用户与系统交互。

六个要素

要素符号说明
参与者(Actor)🧑系统外部的人/系统
用例(Use Case)系统提供的功能
关系Actor与Use Case的交互
系统边界[ ]界定系统范围
关联关系───Actor参与Use Case
扩展/包含<<extend>>/<<include>>用例之间的关系
include和extend的区别
  • include(包含)—— 必定执行

  • 生活类比:你去银行存款,必定要验证身份

取款 ────包含────→ 验证身份 转账 ────包含────→ 验证身份 ​ 解读:无论取款还是转账,都要先验证身份!
  • extend(扩展)—— 条件触发

  • 生活类比:你取钱的时候,如果"需要"才打印凭条

取款 ────扩展────→ 打印凭条 ↑ 仅在用户需要时触发

记忆口诀

  • include = 包含 = 必须 = 子功能复用

  • extend = 扩展 = 可选 = 额外功能

示例

┌──────────────────────────┐ │ 银行系统边界 │ │ │ │ ┌────────┐ ┌──────┐ │ │ │ 取款 │ │ 查询 │ │ │ └────────┘ └──────┘ │ │ │ │ │ │ ▼ ▼ │ └───────┼──────────────┼────┘ │ │ ┌────┴──┐ ┌───┴──┐ │ 🧑客户 │ │ 🧑客户 │ └────┬──┘ └───┬──┘

6. 序列图(Sequence Diagram / 时序图)

定义:描述对象之间按时间顺序的消息交互。

组成

  • 对象:矩形的顶部

  • 生命线:虚线向下

  • 激活条:窄矩形(对象执行时)

  • 消息:箭头(有同步/异步之分)

消息类型

消息类型符号说明
同步消息──→发送者等待接收者返回
异步消息──⇒发送者不等待继续执行
返回消息←──返回值

示例

客户 系统 银行 │ │ │ │──登录请求──→│ │ │ │──验证请求──→│ │ │←──验证结果──│ │←─登录成功──│ │

7. 通信图(Communication Diagram)

定义:强调对象之间的组织结构和消息传递。

与序列图的区别

  • 序列图强调时间顺序

  • 通信图强调对象之间的链接关系

示例

┌─────┐ 1: 发起请求 ┌─────┐ │对象1│──────────────────────────→│对象2│ └──┬──┘←─────────────────────────│──┬──┘ │ 2: 返回结果 │ │←────────────────────────────────┘

8. 状态图(State Diagram)

定义:描述对象的状态变化以及触发事件。

组成

  • 状态:圆角矩形

  • 初始状态:实心圆●

  • 终止状态:实心圆外加圈◉

  • 转换:带箭头的线(标注触发事件)

状态图的要素

事件/动作 ┌───────────┐ │ 状态 │ └───────────┘ │ ▼ (转换到下一状态)

示例(订单状态):

●──→[下单]──→[支付中]──→[已支付]──→[发货中]──→[已完成]──→◉ │ ▼ [取消]

9. 活动图(Activity Diagram)

定义:描述活动的执行流程,类似于流程图。

与状态图的区别

  • 状态图:描述对象的状态

  • 活动图:描述活动的流程

组成

  • 活动:圆角矩形

  • 决策节点:菱形(分支判断)

  • 并行:分叉/汇合(fork/join)

  • 泳道:分区域(区分不同责任)

示例

┌─────────┐ ┌─────────┐ ┌─────────┐ │ 开始 │──→│ 处理1 │──→│ 决策 │ └─────────┘ └─────────┘ └────┬────┘ │ ┌─────────┴─────────┐ │ │ [是] [否] ▼ ▼ ┌───────────┐ ┌───────────┐ │ 处理2 │ │ 结束 │ └─────┬─────┘ └───────────┘ │ ▼ ┌───────────┐ │ 结束 │ └───────────┘

五、UML图分类汇总

结构图(静态图)

图名说明用途
类图展示类及类之间的关系系统静态结构
对象图类图的实例某时刻的对象快照
构件图展示构件及依赖物理代码构件
部署图展示硬件部署系统硬件结构

行为图(动态图)

图名说明用途
用例图展示系统功能外部视图、需求分析
序列图按时间顺序描述消息对象交互时间顺序
通信图强调对象链接对象交互组织结构
状态图描述状态变化对象状态行为
活动图描述活动流程业务流程、并行活动

六、软考常考知识点

1. 九种图的关系

UML 2.0 定义了13种图: 结构图(4种): ├── 类图 ★★★ ├── 对象图 ★★ ├── 构件图 ★★ └── 部署图 ★★ 行为图(9种): ├── 用例图 ★★★ ├── 序列图 ★★★ ├── 通信图 ★★ ├── 状态图 ★★ ├── 活动图 ★★ ├── 计时图 ├── 交互概览图 ├── 复合结构图 └── 包图

2. 类图关系判断技巧

题目常见考法

  • 给出类图,问属于哪种关系

  • 问聚合和组合的区别

  • 问多重度(如 1..* 表示多少)

多重度标记

标记含义
0..1零或一
1恰好一
0..*零或多
1..*一或多
*任意多

3. 用例图关系判断

包含(include)

  • Base用例 → 包含 Target用例

  • 执行Base时,必定执行Target

扩展(extend)

  • Base用例 ← 扩展 Target用例

  • 在特定条件下扩展Base

4. 序列图 vs 通信图

序列图通信图
强调时间顺序强调对象链接
有激活条无激活条
生命线+消息对象+链+消息

七、真题考点速记

必背知识点

  1. UML三个要素:基本构造块、规则、公共机制

  2. 四种事务

    • 结构事物(静态)

    • 行为事物(动态)

    • 分组事物(包)

    • 注释事物(解释)

  3. 六种关系强度:依赖 < 关联 < 聚合 < 组合

  4. 聚合 vs 组合:聚合可分离,组合不可分离

  5. 类图三隔间:类名、属性、方法

  6. 用例图三要素:参与者、用例、系统边界

  7. 序列图消息:同步消息、异步消息、返回消息

  8. 状态图三要素:状态、转换、事件


八、常见题型与解题技巧

题型1:用例图补全

解题步骤

  1. 识别参与者(Actor)

  2. 识别用例(Use Case)

  3. 确定Include/Extend关系

  4. 检查系统边界

题型2:类图关系判断

解题步骤

  1. 看连线箭头方向

  2. 判断是泛化、实现、依赖还是关联

  3. 如果是关联,再判断是普通关联、聚合还是组合

题型3:序列图/通信图

解题步骤

  1. 识别对象

  2. 按时间顺序排列消息

  3. 注意同步/异步消息

题型4:状态图绘制

解题步骤

  1. 识别所有可能状态

  2. 确定初始状态和终止状态

  3. 列出触发状态转换的事件

  4. 绘制状态转换图


整理时间:2026-05-20来源:软考中级-软件设计师考试大纲

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

通过模型广场的直观对比与快速切换找到最适合当前任务的模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过模型广场的直观对比与快速切换找到最适合当前任务的模型 在开发一个需要复杂推理和创意写作混合的项目时&#xff0c;选择合适…

作者头像 李华
网站建设 2026/5/22 16:15:06

Understat:异步Python足球数据引擎如何实现3倍性能提升?

Understat&#xff1a;异步Python足球数据引擎如何实现3倍性能提升&#xff1f; 【免费下载链接】understat An asynchronous Python package for https://understat.com/. 项目地址: https://gitcode.com/gh_mirrors/un/understat 在足球数据分析领域&#xff0c;数据获…

作者头像 李华
网站建设 2026/5/22 16:14:05

多轮对话为什么越聊越慢?FlashAttention 的 KV Cache 优化实践

这是一篇关于 FlashAttention 在多轮对话场景下 KV Cache 优化的深度技术解析文章&#xff0c;结合了生产环境痛点与昇腾 NPU 的适配实践。多轮对话为什么越聊越慢&#xff1f;FlashAttention 的 KV Cache 优化实践 部署 Llama2-70B 做多轮对话&#xff0c;发现一个奇怪的现象&…

作者头像 李华