深入理解UML:软件开发中的可视化建模语言

#Innolight

作为程序猿都最好掌握的一门语言,那就是 UML(Unified Modeling Language),统一建模语言(UML)是软件工程领域中一种通用的开发建模语言,旨在提供一种可视化系统设计的标准方法。是开发人员、系统设计人员交流的有效工具。今天来分享一下 UML 的一些体会,如有错误请帮忙指正。

Note

注:UML 工具有很多,本文描述的基于Enterprise Architect。

UML 前世今生

UML 时间进化线:

Pasted image 20250402113600.png|650

说到 UML 不得不提的三位大神,Grady Booch、Jacobson、James Rumbaugh,三位是 UML 的创始人,均为软件工程界的权威,除了著有多部软件工程方面的著作之外,在对象技术发展上也有诸多杰出贡献,其中包括 Booch 方法、对象建模技术(OMT)和 Objectory(OOSE)过程。三人被合称为“UML 三友”。

**面向对象编程方法以及描述符号进化历史:

Pasted image 20250402113639.png|650

然后逐步发展到 UML2.5 标准。

UML 目前的官方组织是 https://www.uml.org

宏观看 UML

UML 用图去描述一个软件系统,从需求、设计、到部署的方方面面都已经覆盖。那么从总体上先来看看 UML 有哪些图呢?

从描述系统建模目的,UML 图可以分成下面 4 大类:

Pasted image 20250402113731.png|650

从建模的动态视角/静态视角,可以这样去分类:

Pasted image 20250402113744.png|650

微观看 UML

UML 由基本的组成可以从三大块去了解:事物/关系/图

事物(Things)

关系(Relationship)

下面是 UML 的基础 4 大关系:

更为详细的描述,看看下面这些表吧:

Pasted image 20250402114018.png

Pasted image 20250402114025.png

Pasted image 20250402114034.png

Pasted image 20250402114045.png

Pasted image 20250402114053.png

图(Diagram)

用例图

Pasted image 20250402135349.png

用例图在 UML 语言中处于至关重要的位置,所谓 4+1 架构设计,用例图用于描述系统需求,处于核心位置。属于 Use-case drivering 大法的心脏。

Pasted image 20250402135427.png|650

类图/Class Diagram

Pasted image 20250402135451.png|650

这个类图描述一个图像管理系统。

对象图/Object Diagram

Pasted image 20250402135508.png|650

描述一个图书管理系统某时刻对象的快照。

序列图/Sequence Diagram

Pasted image 20250402135519.png|650

此图说明了在交互中满足视图历史用例所需的对象。对象之间的消息流为用户提供了事务历史信息。描述图书管理系统如何查阅历史的操作系列,反应了客户端与各对象间消息传递关系。

时序图/Timing Diagram

这个类似于芯片的时序图概念。下图描述用户在有卡/无卡对系统访问的时间线场景图:

Pasted image 20250402135538.png|650

通讯图/Communication Diagram

Pasted image 20250402135559.png|650

这是一个嵌入式系统的 UML 建模,该图描述一个压力控制系统两个主要用例的实现:

交互概视图/Interaction Overview

Pasted image 20250402135629.png|650

描述了一个图书管理系统如何从订单发起后的所有交互概要图,每个子图上面的 ref 表示引用了一个更详细的图,比如 Add to Shopping Basket 放入购物篮的具体动作:

Pasted image 20250402135645.png

复合结构图/Composite Structure

Pasted image 20250402135700.png|650

状态机图/State Machine Diagram

Pasted image 20250402135712.png|650

这是描述图书订购系统如何登录的状态机图

活动图/Activity Diagram

Pasted image 20250402135731.png|650

Pasted image 20250402135908.png|650

将活动分组,明确该组活动负责的对象,对象负责该组的全部活动

子活动图

Pasted image 20250402135925.png|650

活动图中,某几个活动可以组成一个内聚的子活动。

可中断活动图

Pasted image 20250402140000.png|650

这里的中断并不严谨,本图中表示这个活动事物是可以取消的。

封装图/包图/Package Diagram

Pasted image 20250402140024.png|650

构件图/ Component Diagram

Pasted image 20250402140038.png|650

用以描述构件之间的相互关系。

部署图/Deployment Diagram

Pasted image 20250402140054.png

总结一下

本文走马观花的将 UML 大致梳理了一下,并结合EA的例图,将常见的 UML 图的作用大致描述一遍,供大家参考。对于软件开发人员而言,UML 还是很有必要学习掌握的。