简介
统一建模语言(UML,Unified Modeling Language)是一种标准化的建模语言,由一组集成的图表组成,旨在帮助系统和软件开发人员指定、可视化、构建和记录软件系统的工件,以及用于业务建模和其他非软件系统。UML 代表了在大型复杂系统建模方面已被证明成功的最佳工程实践集合。
作为面向对象软件开发和软件开发过程的重要组成部分,UML 主要使用图形符号来表达软件项目的设计。使用 UML 有助于项目团队进行沟通、探索潜在设计并验证软件的架构设计。本文将为您提供关于 UML 的详细信息,包括其历史、每种 UML 图表类型的描述以及实际示例。

UML 的起源
UML 的目标是提供一种所有面向对象方法都可以使用的标准符号,并选择和集成 precursor 符号的最佳元素。UML 专为广泛的应用而设计,因此为广泛的系统和活动提供了构造(例如分布式系统、分析、系统设计和部署)。
UML 是由以下三种主要方法的统一而产生的符号:
-
对象建模技术 OMT [James Rumbaugh 1991] – 最适合分析和数据密集型信息系统。
-
Booch 方法 [Grady Booch 1994] – 在设计 and 实现方面表现出色。Grady Booch 广泛使用 Ada 语言,并且是该语言面向对象技术开发的主要参与者。虽然 Booch 方法很强,但其符号不太受欢迎(他的模型中充满了云状形状——不太整洁)。
-
OOSE(面向对象软件工程) [Ivar Jacobson 1992] – 特色是用例模型。用例是理解整个系统行为的强大技术(这是 OO 传统上较弱的领域)。
1994 年,OMT 的创建者 Jim Rumbaugh 离开通用电气加入 Rational Corp 的 Grady Booch,震惊了软件界。合作伙伴关系的目标是将他们的想法合并为单一的统方法(该方法的暂定标题确实是”统一方法”)。
到 1995 年,OOSE 的创建者 Ivar Jacobson 也加入了 Rational,他的想法(特别是”用例”的概念)被纳入新的统一方法——现在称为统一建模语言。Rumbaugh、Booch 和 Jacobson 团队亲切地被称为”三友”(Three Amigos)。

UML 还受到其他面向对象符号的影响:
-
Mellor 和 Shlaer [1998]
-
Coad 和 Yourdon [1995]
-
Wirfs-Brock [1990]
-
Martin 和 Odell [1992]
UML 还包括当时其他主要方法中不存在的新概念,如扩展机制和约束语言。
UML 的历史
-
1996 年期间,对象管理组 (OMG) 发布的第一个提案请求 (RFP) 为这些组织联合起来围绕产生联合 RFP 响应提供了催化剂。
-
Rational 与几个愿意投入资源以致力于强大的 UML 1.0 定义的组织建立了 UML 合作伙伴联盟。对 UML 1.0 定义贡献最大的包括:
-
Digital Equipment Corp
-
HP
-
i-Logix
-
IntelliCorp
-
IBM
-
ICON Computing
-
MCI Systemhouse
-
Microsoft
-
Oracle
-
Rational Software
-
TI
-
Unisys
-
-
这种合作产生了 UML 1.0,这是一种定义良好、表达力强、功能强大且普遍适用的建模语言。这于 1997 年 1 月作为初始 RFP 响应提交给 OMG。
-
1997 年 1 月,IBM、ObjecTime、Platinum Technology、Ptech、Taskon、Reich Technologies 和 Softeam 也向 OMG 提交了单独的 RFP 响应。这些公司加入了 UML 合作伙伴,贡献他们的想法,合作伙伴共同制作了修订后的 UML 1.1 响应。UML 1.1 版本的重点是提高 UML 1.0 语义的清晰度,并纳入新合作伙伴的贡献。它于 1997 年秋季提交给 OMG 考虑并被采纳,并从 1.1 增强到 1.5,随后到 2001 年至 2006 年的 UML 2.1(现在 UML 当前版本是 2.5)。
为什么需要 UML
随着软件对许多公司的战略价值增加,行业寻求自动化软件生产、提高质量、降低成本和缩短上市时间的技术。这些技术包括组件技术、可视化编程、模式和框架。企业还寻求管理系统复杂性随范围和规模增加的技术。特别是,他们认识到需要解决反复出现的架构问题,如物理分布、并发、复制、安全性、负载平衡和容错。此外,万维网的开发虽然使某些事情变得更简单,但也加剧了这些架构问题。统一建模语言 (UML) 正是为了响应这些需求而设计的。
Page-Jones 在《UML 中的基本面向对象设计》中总结了 UML 设计的主要目标:
-
为用户提供即用型、表达性强的可视化建模语言,以便他们可以开发和交换有意义的模型。
-
提供可扩展性和专业化机制以扩展核心概念。
-
独立于特定的编程语言和开发过程。
-
为理解建模语言提供正式基础。
-
鼓励 OO 工具市场的增长。
-
支持更高级别的开发概念,如协作、框架、模式和组件。
-
整合最佳实践。
AI 驱动的 UML 建模:下一代进化
虽然 UML 为系统设计提供了标准符号,但我们构建这些模型的方式正在发生变化。Visual Paradigm 集成了尖端的 AI 图表生成 功能,帮助您在几秒钟内从概念转化为复杂架构。
简化您的设计工作流程:
-
AI 图表聊天机器人: 只需使用纯英语描述您的系统需求,即可即时生成 UML 图表。您甚至可以提出后续问题来完善逻辑。
-
桌面 AI 生成器: 直接在 Visual Paradigm Desktop 环境中访问强大的 UML 生成功能,进行专业级建模。
-
OpenDocs 知识管理: 将 AI 生成的图表无缝嵌入到您的文档中,以保持技术知识库和视觉模型的完美同步。
探索完整的 AI 建模范生态系统:
查看 AI 图表生成指南 →
UML 概述
在开始研究 UML 理论之前,我们将简要介绍 UML 的一些主要概念。
关于 UML 首先要注意的是有很多不同的图表(模型)需要习惯。原因是可以从许多不同的角度看待系统。软件开发将有多个利益相关者参与,例如:
-
分析师
-
设计师
-
编码员
-
测试人员
-
QA
-
客户
-
技术作者
所有这些人都对系统的不同方面感兴趣,每个人都需要不同级别的细节。例如,编码员需要了解系统设计并能够将设计转换为低级代码。相比之下,技术作家对系统整体的行为感兴趣,需要了解产品的功能。UML 试图提供一种如此富有表现力的语言,使所有利益相关者都能从至少一个 UML 图表中受益。
以下是 UML 2 图表结构中显示的 13 种图表的快速浏览:
结构图表显示系统及其部分在不同抽象和实现级别上的静态结构以及它们之间的关系。结构图表中的元素代表系统中有意义的概念,可能包括抽象、现实世界和实现概念,有以下七种类型的结构图表:
行为图表显示系统中对象的动态行为,可以描述为系统随时间的一系列变化,有以下七种类型的行为图表:

什么是类图?
类图是一种贯穿几乎所有面向对象方法的核心建模技术。该图表描述了系统中的对象类型以及它们之间存在的各种静态关系。
关系
有三种重要的主要关系类型:
-
关联 – 表示类型实例之间的关系(一个人在公司工作,公司有多个办公室)。
-
继承 – 用于 OO 的 ER 图最明显的补充。它与 OO 设计中的继承有直接对应关系。
-
聚合 – 面向对象设计中对象组合的一种形式。
类图示例

有关类图的更多详细信息,请阅读文章什么是类图?
什么是组件图?
在统一建模语言中,组件图描绘了组件如何连接在一起形成更大的组件或软件系统。它说明了软件组件的架构以及它们之间的依赖关系。那些软件组件包括运行时组件、可执行组件以及源代码组件。
组件图示例

有关组件图的更多详细信息,请阅读文章什么是组件图?
什么是部署图?
部署图有助于模拟面向对象软件系统的物理方面。它是一种结构图,显示系统架构作为软件工件到部署目标的部署(分布)。工件代表开发过程产生的物理世界中的具体元素。它在静态视图中模拟运行时配置,并可视化应用程序中工件的分布。在大多数情况下,它涉及对硬件配置以及驻留其上的软件组件进行建模。
部署图示例

有关部署图的更多详细信息,请阅读文章什么是部署图?
什么是对象图?
对象图是实例的图形,包括对象和数据值。静态对象图是类图的实例;它显示系统在某一时刻的详细状态快照。区别在于类图表示由类及其关系组成的抽象模型。然而,对象图表示特定时刻的实例,本质上是具体的。对象图的使用相当有限,即显示数据结构的示例。
类图与对象图 – 示例
有些人可能难以理解 UML 类图和 UML 对象图之间的区别,因为它们都由命名的”矩形块”组成,其中包含属性,并且之间有链接,这使得两个 UML 图表看起来相似。有些人甚至认为它们是相同的,因为在他们使用的 UML 工具中,类图和对象图的符号都放在同一个图表编辑器 – 类图中。
但实际上,类图和对象图代表代码库的两个不同方面。在本文中,我们将为您提供一些关于这两个 UML 图表的想法,它们是什么,它们的区别是什么以及何时使用它们。
类图和对象图之间的关系
当您编程时创建”类”。例如,在网上银行系统中,您可能创建像’User’、’Account’、’Transaction’等类。在课堂管理系统中,您可能创建像’Teacher’、’Student’、’Assignment’等类。在每个类中,都有表示类特征和行为的属性和操作。类图是一个 UML 图表,您可以在其中可视化这些类,以及它们的属性、操作和相互关系。
UML 对象图显示系统中的对象实例在特定状态下如何相互作用。它还表示该状态下这些数据值。换句话说,UML 对象图可以看作是在特定状态下如何使用类(在 UML 类图中绘制)的表示。
如果您不喜欢那些定义性的东西,请看下面的 UML 图表示例。我相信您会在几秒钟内理解它们的区别。
类图示例
以下类图示例表示两个类 – User 和 Attachment。用户可以上传多个附件,因此这两个类通过关联连接,Attachment 侧的多重性为 0..*。

对象图示例
以下对象图示例向您展示了当 Peter(即用户)尝试上传两个附件时,User 和 Attachment 类的对象实例”看起来像什么”。因此,有两个要上传的附件对象的实例规范。

有关对象图的更多详细信息,请阅读文章什么是对象图?
什么是包图?
包图是显示包和包之间依赖关系的 UML 结构图。模型图允许显示系统的不同视图,例如,作为多层(也称为多层)应用程序 – 多层应用程序模型。
包图示例

有关包图的更多详细信息,请阅读文章什么是包图?
什么是复合结构图?
复合结构图是添加到 UML 2.0 的新工件之一。复合结构图类似于类图,是一种主要用于从微观角度建模系统的组件图,但它描绘的是单个部分而不是整个类。它是一种静态结构图,显示类的内部结构以及此结构使可能的协作。
该图表可以包括内部部分、部件通过这些部分相互交互或通过其实例与部件和外部世界交互的端口,以及部件或端口之间的连接器。复合结构是一组在运行时协作以实现某些目的的互连元素。每个元素在协作中都有某些定义的角色。
复合结构图示例

有关复合结构图的更多详细信息,请阅读文章什么是复合结构图?
什么是配置文件图?
配置文件图使您能够创建域和平台特定的刻板印象并定义它们之间的关系。您可以通过以资源为中心的界面绘制刻板印象形状并通过组合或泛化将它们相关联来创建刻板印象。您还可以定义和可视化刻板印象的标记值。
配置文件图示例

有关配置文件图的更多详细信息,请阅读文章UML 中的配置文件图是什么?
什么用例图?
用例模型在用例方面描述系统的功能需求。它是系统预期功能(用例)及其环境(参与者)的模型。用例使您能够将您对系统的需求与系统如何满足这些需求联系起来。
将用例模型想象成菜单,就像您在餐厅找到的菜单一样。通过查看菜单,您知道可供您选择的内容, individual dishes 以及它们的价格。您还知道餐厅提供哪种美食:意大利菜、墨西哥菜、中餐等等。通过查看菜单,您可以对在那家餐厅等待您的用餐体验有一个总体印象。菜单实际上”模拟”了餐厅的行为。
因为它是一个非常强大的规划工具,用例模型通常由所有团队成员在开发周期的所有阶段使用。
用例图示例

有关用例图的更多详细信息,请阅读文章什么是用例图?
什么是活动图?
活动图是逐步活动和动作的工作流的图形表示,支持选择、迭代和并发。它描述目标系统的控制流,例如探索复杂的业务规则和操作,描述用例以及业务流程。在统一建模语言中,活动图旨在模拟计算和组织过程(即工作流)。
活动图示例

有关活动图的更多详细信息,请阅读文章什么是活动图?
什么是状态机图?
状态图是 UML 中用于描述基于 David Harel 状态图概念的系统行为的一种图表。状态图描绘了允许的状态和转换以及影响这些转换的事件。它有助于可视化对象的整个生命周期,从而有助于更好地理解基于状态的系统。
状态机图示例

有关状态机图的更多详细信息,请阅读文章什么是状态机图?
什么是序列图?
序列图基于时间序列模拟对象的协作。它显示对象在用例的特定场景中如何与其他对象交互。凭借先进的视觉建模能力,您可以在几次点击中创建复杂的序列图。此外,一些建模工具如 Visual Paradigm 可以从您在用例描述中定义的事件流生成序列图。
序列图示例

有关序列图的更多详细信息,请阅读文章什么是序列图?
什么是通信图?
与序列图类似,通信图也用于模拟用例的动态行为。与序列图相比,通信图更侧重于显示对象的协作而不是时间序列。它们在语义上是等价的,因此一些建模工具如 Visual Paradigm 允许您从一个生成另一个。
通信图示例

有关通信图的更多详细信息,请阅读文章什么是通信图?
什么是交互概述图?
交互概述图侧重于交互的控制流概述。它是活动图的变体,其中节点是交互或交互出现。交互概述图描述了隐藏消息和生命线的交互。您可以在交互概述图中链接”真实”图表,并在图表内部实现高度的可导航性。
交互概述图示例

有关交互概述图的更多详细信息,请阅读文章什么是交互概述图?
什么是时序图?
时序图显示给定时间段内对象的行为。时序图是序列图的特殊形式。时序图和序列图之间的区别是轴是反转的,因此时间从左到右增加,生命线显示在垂直排列的单独隔间中。
时序图示例

有关时序图的更多详细信息,请阅读文章什么是时序图?
关键概念总结
结构图表 vs 行为图表
结构图表关注系统的静态方面:
-
显示系统的组成部分
-
描述组件之间的关系
-
在特定时间点捕获系统状态
行为图表关注系统的动态方面:
-
显示系统随时间的变化
-
描述对象之间的交互
-
模拟工作流程和状态转换
常用 UML 术语
-
抽象类 – 永远不会被实例化的类。
-
参与者 – 启动系统涉及的事件的对象或人。
-
活动 – 活动图中的步骤或动作。
-
聚合 – 是另一个类的一部分。在图表中与包含类相邻的空心菱形显示。
-
关联 – 模型中两个元素之间的连接。
-
类 – 相似对象的类别,所有对象都由相同的属性和操作描述。
-
泛化 – 指示一个类是另一个类(超类)的子类。空心箭头指向超类。
-
继承 – 子类继承其父类(超类)的属性或特征。
-
实例 – 类用作创建对象的模板。此对象称为类的实例。
-
接口 – 定义形成行为合同的属性和操作的分类器。
-
消息 – 从一个对象到另一个对象的请求,要求接收消息的对象执行某些操作。
-
多态性 – 相同消息,不同方法。
-
用例 – 在用例图中,表示系统响应来自参与者的某些请求而采取的动作。
学习 UML 的工具推荐
想要更快、更轻松、更快速地学习 UML 吗?Visual Paradigm Community Edition 是一款支持所有 UML 图表类型的 UML 软件。它是国际获奖的 UML 建模器,同时易于使用、直观且完全免费。
热门 UML 书籍推荐
以下是一些您可以阅读以学习 UML 的最畅销 UML 书籍:
-
UML Distilled: A Brief Guide to the Standard Object Modeling Language
-
UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design
-
UML 2 Certification Guide: Fundamental and Intermediate Exams
结论
统一建模语言 (UML) 是软件工程和系统设计中不可或缺的工具。通过提供标准化的图形符号,UML 使开发团队能够有效沟通、设计复杂系统并记录软件架构。从类图到用例图,从序列图到部署图,每种 UML 图表类型都为理解系统的不同方面提供了独特的视角。
随着 AI 技术的集成,如 Visual Paradigm 提供的 AI 图表生成功能,UML 建模变得更加高效和直观。无论您是初学者还是经验丰富的开发人员,掌握 UML 都将显著提升您的系统设计和沟通能力。
通过结合传统 UML 方法和现代 AI 辅助工具,您可以更快地从概念转化为实现,确保软件项目的成功交付。
Visual Paradigm 相关文章推荐
- 掌握序列图建模:使用 Visual Paradigm 的实用方法:通过“下单”等五个渐进式示例,系统学习序列图的基本交互、条件行为、循环、异常处理和并行流程建模
- 通过 Visual Paradigm 革新您的 Mac UML 建模:专为 Mac 用户设计的 UML 建模解决方案,涵盖 UML 2.x 支持、模型可追溯性、代码工程及 Scrum 集成等企业级功能
- 实践 3:结构实现——从类图到部署图:以图书馆管理系统为案例,演示如何从领域类图出发,逐步构建组件图和部署图的结构化建模流程
- 敏捷代码工程:正向、反向与往返工程:详述 UML 模型与源代码之间的三种同步策略,包含电商微服务、银行遗留系统重构等七个真实项目案例
- Create UML Diagrams with Confidence:从“意图优先”原则出发,指导如何选择正确的 UML 图表类型,并利用 Visual Paradigm 模板加速建模过程
- 通过 Visual Paradigm 社区版释放您的 UML 建模潜能:介绍免费社区版的安装量与功能范围,以酒店预订系统为例说明序列图在实际用例场景中的应用价值
- AI 时代的 UML:Visual Paradigm 生态系统的智能化演进(2025):探讨 AI 驱动的自然语言转 UML、代码反向工程及聊天机器人辅助设计等新功能,附金融服务公司设计效率提升 70% 的案例
- UML 建模基础:模型、原则与图表生态:系统阐述建模的四项核心目标与原则,概览 UML 2.2 的 14 种图表类型及其对应的利益相关者视角
- 架构清晰之道:UML 构建块综合案例研究:以 ShopSphere 电商平台为完整案例,展示事物、关系与图表三大构建块如何协同工作以建模复杂系统
- UML 环境配置成功指南:讲解项目结构划分、命名规范、版本控制集成等建模环境设置的最佳实践,避免团队协作中的常见陷阱
- Visual Paradigm for UML 快速入门:官方入门指南,涵盖界面布局、项目保存加载、图表创建与元素连接的基本操作流程
- UML 构建块:初学者必备指南:从类、对象和关系的基本概念入手,帮助新手建立“先阅读、后绘制”的 UML 认知习惯
