Skip to content
难度基础(★)
建议时长45分钟

10.4.1 UML知识点概述

UML(Unified Modeling Language,统一建模语言)不是编程语言,也不是某一种开发方法。它更像软件工程里的“工程图纸语言”:用一组统一的图形符号,把面向对象系统的结构、行为、交互、部署环境表达出来,方便分析人员、设计人员、开发人员和测试人员沟通。

这一节在考试里通常有两种价值:上午题会直接考“某个描述对应哪一种 UML 图”;下午 UML 建模题会把这些图当作填类名、填关系、填用例的基础语言。

UML为什么重要

软件系统不能只靠代码来理解。代码描述“机器如何执行”,UML 更强调“人如何理解系统”。

学习角度UML解决的问题典型例子
需求分析系统要为谁提供哪些功能用例图:用户、管理员、支付系统分别参与哪些用例
静态设计系统有哪些类、接口、部件,它们怎样组织类图、对象图、包图、构件图
动态行为业务如何流转,状态如何变化活动图、状态图
对象协作对象之间按什么顺序发消息顺序图、通信图
物理部署软件构件部署到哪些硬件节点上部署图

所以,学 UML 时不要把它背成一串图名,而要问:这张图回答的是系统的哪一个问题?

UML 2.0图的总体分类

课程里把 UML 图分成“结构/静态”和“行为/动态”两大类。实际考试不用死背全部 14 种图,但要能根据关键词认出常考图。

mermaid
flowchart TB
  UML["UML图"]
  UML --> S["结构图:系统有什么"]
  UML --> B["行为图:系统怎么动"]
  S --> C["类图"]
  S --> O["对象图"]
  S --> P["包图"]
  S --> Comp["构件图"]
  S --> D["部署图"]
  S --> Art["制品图"]
  S --> CS["组合结构图"]
  B --> UC["用例图"]
  B --> A["活动图"]
  B --> ST["状态图"]
  B --> I["交互图"]
  I --> Seq["顺序图/序列图"]
  I --> Com["通信图/协作图"]
  I --> T["定时图"]
  I --> IO["交互概览图"]

结构图回答“系统由哪些静态元素组成”。类、接口、对象、包、构件、部署节点都属于这种视角。

行为图回答“系统运行时发生什么”。用例描述外部可见功能,活动图描述流程,状态图描述对象状态迁移,交互图描述对象之间的消息。

常考图的识别地图

UML图题干常见关键词它真正表达的内容容易混淆点
类图类、接口、属性、方法、泛化、关联一组类、接口、协作以及它们之间的关系类图是静态视图,不描述某一次运行过程
对象图对象名、某一时刻、快照、实例类图在某一时刻的实例快照对象图看的是对象,不是类定义本身
用例图参与者、系统功能、用例、include、extend外部角色与系统功能之间的关系用例图不是流程图,不描述算法步骤
顺序图/序列图时间顺序、生命线、消息先后对象交互按时间展开强调“先后顺序”
通信图/协作图组织结构、对象连接、消息编号对象如何连接并协作强调“对象之间的组织关系”
状态图状态、事件、迁移、状态机一个对象在生命周期中的状态变化适合有明显状态的对象,如订单、设备
活动图活动、分支、并发、流程业务过程或算法流程类似流程图,但能表达并行
构件图构件、接口、依赖软件构件及其依赖关系构件粒度通常大于类
部署图节点、服务器、PC、硬件、物理关系软件构件与硬件节点的映射看到“物理”“硬件”“节点”优先想到部署图
包图包、分组、包之间依赖类或其他模型元素如何组织成包主要体现组织结构,不是运行流程

识图的三个层次

上午题常把 UML 考得很“关键词化”,但下午题会把这些知识用在建模中。可以按三个层次学习:

  1. 先识别图:看到“物理节点”知道是部署图;看到“时间顺序”知道是顺序图。
  2. 再识别元素:类图里有类名、属性、方法;用例图里有参与者和椭圆;状态图里有状态和迁移。
  3. 最后识别关系:类图中的关联、依赖、泛化、实现、聚合、组合;用例图中的包含、扩展、泛化。

一个简单的对照例子

假设要描述“在线课程系统”,不同 UML 图会从不同角度看同一个系统:

想表达的问题应选UML图可能出现的内容
学员能做哪些事情用例图学习课程、课程测试、课程注册
课程、学员、订单有什么结构关系类图Student、Course、Order 及关联
学员购买课程时对象如何发消息顺序图学员界面、订单服务、支付服务之间的消息顺序
订单从创建到支付成功怎样变化状态图已创建、待支付、已支付、已取消
课程学习和测试的业务步骤活动图检查权限、播放课程、提交测试
系统部署在哪些机器上部署图Web服务器、数据库服务器、客户端

同一系统需要多种图,是因为一个图不可能同时清晰表达“功能边界、静态结构、运行过程、物理部署”。

考试抓分提示

  • 问“交付系统中软件组件与硬件之间的物理关系”时,选部署图。
  • 问“对象交互的时间顺序”时,选顺序图/序列图。
  • 问“对象之间的组织结构和通信关系”时,选通信图/协作图。
  • 问“构件及构件之间依赖关系”时,选构件图。
  • 问“类、接口、协作及其关系”时,选类图。

例题

单选
在 UML 图中,用于展示交付系统中软件构件以及硬件之间物理关系的图是:
单选
如果题干强调对象之间消息传递的时间先后顺序,最适合使用:

自查要点

  1. UML 为什么不是编程语言?
  2. 结构图和行为图分别回答什么问题?
  3. 顺序图和通信图都属于交互图,它们的侧重点有什么不同?
  4. 为什么看到“硬件节点、物理部署”要优先想到部署图?