UML
uml图的种类:
图表类型 | 描述 |
---|
用例图 | 由参与者(Actor)、用例(Use Case)、边界以及它们之间的关系构成的用于描述系统功能的视图。用例之间的关系有包含、扩展、泛化。 |
类图 | 展现了一组对象、接口、协作和它们之间的关系。类之间的关系有关联、依赖、实现、泛化。 |
对象图 | 描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。 |
构件图 | 描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。 |
组合结构图 | 用于画出结构化类的内部内容。 |
顺序图(序列图) | 由一组对象或参与者以及它们之间可能发送的信息构成。强调消息的时间次序的交互图。 |
通信图 | 强调收发消息的对象或参与者的结构组织。强调的是对象之间的组织结构(关系)。 |
定时图 | 强调消息跨越不同对象或参与者的实际时间,而不仅仅只是关心消息的相对顺序。 |
状态图 | 用来描述一个特定的对象所有可能的状态,以及由于各种事件的发生而引起的状态之间的转移和变化。 |
活动图 | 将进程或其他计算的结构展示为计算内部一步步的控制流和数据流。可并行。 |
部署图 | 软件和硬件组件之间的物理关系以及处理节点的组件分布情况。 |
制品图 | 描述计算机中一个系统的物理结构通常与部署图一起使用。 |
包图 | 描述由模型本身分解而成的组织单元,以及它们之间的依赖关系。 |
交互概览图 | 是活动图和顺序图的混合物。 |
常用的UML 图类型
类图
类图是面向架构设计中最重要的图之一,在面向对象的架构中一般包括三种类:实体类、控制类(控制用例工作)和边界类(系统内部和外部的交互)。
一个类包含三个部分:类的名字、类的属性列表和类的方法列表。
类之间有 6 种静态关系:关联、依赖、组合、聚合、继承、泛化。

在项目不同阶段的作用:
项目阶段 | |
---|
需求分析 | 一般将领域模型对象用类图表示,主要关注领域对象的识别及其关系,一般只画出类名、关系。 |
软件详细设计 | 一般会画出核心类、有代表性的类、有难度的类图。可以让开发人员的代码更加规范、统一。 |
组件图
组件图展现了一组构件之间的组织和依赖。组件是比类粒度更大的设计元素,一个组件中通常包含很多个类。组件图有的时候和包图的用途比较接近,在实践中,进行模块设计的时候更多的是用组件图。

在项目不同阶段的作用:
项目阶段 | |
---|
软件概要设计 | 通常用以描述和设计软件的模块及其之间的关系 |
用例图
用例图展现了一组用例、参与者以及它们之间的关系。
用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作,用例之间的关系有扩展、包含、泛化。

用例之间的关系:

在项目不同阶段的作用:
项目阶段 | |
---|
需求分析 | 通过反映用户和软件系统的交互,描述系统的功能需求。有时还需要对用例图配以文字说明,形成需求文档。 |
状态图
状态图用来展示单个对象生命周期的状态变迁。
图中方框代表状态,箭头上的代表触发事件,实心圆点为起点和终点。

在项目不同阶段的作用:
项目阶段 | |
---|
需求分析 | 描述状态变迁的逻辑关系,配以文字描述 |
软件详细设计 | 此阶段中,状态要用枚举值表示,以指导具体的开发。 |
序列图
序列图,用来描述参与者之间在时间序列中的动态调用关系。(每个参与者有一条垂直向下的生命线,参与者之间的消息从上到下表示其调用的前后顺序关系)
有三种消息类型:
同步消息(进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息,用实心三角箭头表示)
异步消息(发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,由空心箭头表示)
返回消息(由从右到左的虚线箭头表示)

在项目不同阶段的作用:
项目阶段 | |
---|
需求分析 | 采用较大的对象粒度 |
软件详细设计 | 采用较小的对象粒度 |
活动图
动态图,是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程。活动的分岔和汇合线是一条水平粗线。牢记下图中并发分岔、并发汇合、监护表达式、分支、流等名词及含义。每个分岔的分支数代表了可同时运行的线程数。活动图中能够并行执行的是在一个分岔粗线下的分支上的活动。
活动图可以根据活动的范围,将活动根据领域、系统和角色等划分到不同的泳道中,使流程边界更加清晰。

在项目不同阶段的作用:
项目阶段 | |
---|
需求分析 | 描述业务流程 |
概要设计阶段 | 描述子系统和组件的交互 |
软件详细设计 | 描述一个类方法内部的计算流程 |
部署图
部署图是软件系统最终物理呈现的蓝图,可以清晰的让相关者了解到软件最终在硬件或者服务器上的分布。

在项目不同阶段的作用:
项目阶段 | |
---|
软件概要设计 | 在设计早期就需要画出来,根据部署图各方可以讨论对这个方案是否认可。只有对部署图达成共识,才能继续后面的细节设计。 |
UML 图在不同架构风格中的使用
架构风格 | 常用UML图 | 应用场景描述 |
---|
面向对象架构 | 类图(Class Diagram) | 描述系统的静态结构,包括类、属性、方法以及类之间的关系(如继承、关联、聚合等)。 |
| 对象图(Object Diagram) | 展示特定时刻系统中对象的实例和它们之间的关系。 |
| 顺序图(Sequence Diagram) | 描述对象之间的交互顺序,通常用于描述用例的实现过程。 |
| 协作图(Collaboration Diagram) | 强调对象之间的协作关系,类似于顺序图。 |
| 状态图(State Diagram) | 描述对象或系统的状态变化。 |
| 用例图(Use Case Diagram) | 描述系统的功能和用户(参与者)之间的交互。 |
组件架构 | 组件图(Component Diagram) | 描述系统的组件及其之间的依赖关系,适用于模块、库、服务等。 |
| 部署图(Deployment Diagram) | 描述系统的物理部署结构,包括节点(如服务器、设备)、部署在节点上的组件等。 |
数据流架构 | 活动图(Activity Diagram) | 描述系统的业务流程或数据流,表示数据的处理过程和流转路径。 |
| 状态图(State Diagram) | 描述数据处理状态的变化。 |
事件驱动架构 | 顺序图(Sequence Diagram) | 描述事件的处理顺序和对象之间的交互。 |
| 协作图(Collaboration Diagram) | 描述事件发布者和订阅者之间的交互。 |
| 活动图(Activity Diagram) | 描述事件的处理流程,包括事件的触发、处理和结果。 |
微服务架构 | 组件图(Component Diagram) | 描述微服务之间的依赖关系。 |
| 部署图(Deployment Diagram) | 描述微服务的部署方式,例如容器化部署、服务之间的网络拓扑结构等。 |
层次架构 | 类图(Class Diagram) | 描述层次结构中的类和接口,以及它们之间的继承和依赖关系。 |
| 顺序图(Sequence Diagram) | 描述不同层次之间调用的顺序和交互。 |
管道与过滤器架构 | 活动图(Activity Diagram) | 描述数据在管道中的流动和过滤器的处理过程。 |
| 组件图(Component Diagram) | 描述管道和过滤器组件之间的连接和数据流向。 |
C/S架构 | 顺序图(Sequence Diagram) | 描述客户端和服务器之间的交互过程。 |
| 部署图(Deployment Diagram) | 描述客户端和服务器的物理部署结构。 |
P2P架构 | 顺序图(Sequence Diagram) | 描述对等节点之间的交互过程。 |
| 部署图(Deployment Diagram) | 描述对等节点的物理部署结构和网络拓扑。 |