10.4.10 部署图
部署图描述系统运行时的物理部署结构:有哪些处理节点,节点之间如何通信,软件构件或制品部署在哪些节点上。
课程里反复强调:部署图是 UML 中典型描述物理分布关系的图。看到“硬件”“物理”“节点”“服务器”“PC 客户端”,要优先想到部署图。
部署图描述什么
| 元素 | 含义 | 例子 |
|---|---|---|
| 节点 | 运行软件的硬件或执行环境 | Web服务器、数据库服务器、PC客户端、容器运行环境 |
| 构件/制品 | 部署到节点上的软件单元 | Web应用、数据库脚本、服务组件 |
| 通信路径 | 节点之间的连接 | TCP/IP、HTTP、局域网连接 |
| 部署关系 | 软件单元配置到节点上 | 应用部署在应用服务器上 |
mermaid
flowchart LR
Client["PC客户端\n<<device>>"]
Web["Web服务器\n<<node>>\nWebApp构件"]
DB["数据库服务器\n<<node>>\nDatabase制品"]
Client -- "HTTP/TCP-IP" --> Web
Web -- "JDBC/TCP-IP" --> DB实际 UML 部署图中,节点常画成立方体。节点内部可以包含构件或制品,节点之间可以标注通信协议。
节点是部署图的识别核心
部署图看起来有时会和构件图相似,因为节点里也可能放构件。但它的核心不是“构件依赖”,而是“构件部署到哪里”。
| 题干线索 | 判断 |
|---|---|
| 处理节点、服务器、客户端、设备 | 部署图 |
| 软件组件与硬件之间的物理关系 | 部署图 |
| 节点之间通过 TCP/IP 通信 | 部署图 |
| 构件之间的组织和依赖关系 | 构件图 |
| 类、接口、协作及其关系 | 类图 |
如果题目问“所交付系统中软件组件以及硬件之间的物理关系”,答案就是部署图。
部署图与构件图的关系
构件图回答“软件由哪些构件组成”,部署图回答“这些构件运行在哪些节点上”。二者有联系,但视角不同。
| 对比项 | 构件图 | 部署图 |
|---|---|---|
| 主要对象 | 构件、接口、依赖 | 节点、构件/制品、通信路径 |
| 是否强调物理 | 不强调 | 强调 |
| 典型图形 | 构件标记、供需接口 | 立方体节点 |
| 常见词 | 组件、接口、依赖 | 服务器、PC、节点、协议、部署 |
部署图在下午 UML 建模题中出现较少,但上午题会通过图形或定义直接考识别。
一个部署视角例子
以图书系统为例:
| 节点 | 部署内容 | 通信 |
|---|---|---|
| PC客户端 | 浏览器或客户端程序 | 通过 HTTP 访问 Web 服务器 |
| Web服务器 | 图书管理 Web 应用 | 调用数据库服务器 |
| 数据库服务器 | 图书库、借阅记录表 | 接收 SQL/JDBC 请求 |
这个表表达的不是类之间关系,也不是业务流程,而是软件在运行环境中的配置关系。
例题
描述应用服务器、数据库服务器和客户端之间部署关系,适合使用:
部署图最核心的表达内容是:
自查要点
- 部署图中的节点通常表示什么?
- 为什么看到“服务器、PC、TCP/IP”要想到部署图?
- 构件图和部署图分别回答什么问题?
- 部署图为什么不等同于业务流程图?