UML
本文最后更新于 2025年8月29日 上午
什么是UML?
UML(Unified Modeling Language,统一建模语言)是一种标准化的、可视化的建模语言,用于对软件系统进行说明、构造、可视化和文档化。
UML特性
统一
UML由国际对象管理组织(OMG)制定和维护,是全球软件行业公认的标准。一种统一的表达方法,让(产品经理、架构师、开发者、测试人员)能方便地交流。
建模
UML是一种通用的可视化建模语言,它有标准的图形符号和文字来对系统进行建模用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。
语言
UML是一种语言,它有自己的标准表示规则,又不像编程语言,例如:Java、C#,而是一种分析设计语言。UML专注于建模,不依赖于任何特定的编程语言。
为什么要使用UML?
在没有可视化模型的情况下:
- 沟通成本高:仅靠口头或文字描述复杂系统,容易产生误解。
- 设计缺陷发现晚:代码写完后才发现结构性问题,修改成本巨大。
- 文档缺失或过时:软件完成后缺乏有效文档,后期维护和新人上手极其困难。
UML通过提供一套标准的图形符号,让所有相关人员(产品经理、架构师、开发者、测试人员)都能在同一张“地图” 上讨论同一个系统,确保大家对系统的理解是一致的,从而极大地提高软件开发的效率和质量。
UML主要图表类型
结构图(静态图)- 描述系统的静态结构
这类图描述系统中有哪些元素,以及它们之间的静态关系,不涉及随时间变化的行为。
类图(Class Diagram)
最常用、最核心的图。
描述系统内的类、类的属性、方法以及类与类之间的关系(如关联、继承、依赖等)。它是面向对象分析和设计的核心。
- 好比建筑的结构图,标明了有哪些房间、房间里的设施以及房间之间的连接关系。
对象图(Object Diagram)
类图的一个实例,展示在某一时刻系统内对象的具体状态和关系。
- 好比一栋楼在某个特定时刻的住户快照。
组件图(Component Diagram)
描述系统的物理组件(如库、文件、可执行程序)及其之间的依赖关系。用于规划和构建系统。
- 好比汽车的零部件图,显示了发动机、变速箱、车轮等组件如何装配。
部署图(Deployment Diagram)
描述软件组件如何部署到硬件节点(如服务器、计算机)上,以及节点之间的连接。
- 好比部署蓝图,标明了哪台服务器运行哪个软件,服务器之间如何联网。
复合结构图(Composite Structure Diagram)
展示类或组件的内部结构。
包图(Package Diagram)
用于对模型元素进行分组,管理大型系统的复杂度,类似于文件系统中的文件夹。
行为图(动态图)- 描述系统的动态行为
这类图描述系统中元素如何协作和互动,以及随时间变化的行为。
用例图(Use Case Diagram)
从用户视角描述系统功能。展示系统外的参与者(Actor)与系统提供的用例(Use Case)之间的关系。常用于需求分析阶段。
- 好比系统的功能菜单,描述了用户能用它来做什么。
活动图(Activity Diagram)
描述业务或操作的工作流程,类似于流程图,展示了活动的顺序流和并行流。
- 好比公司的业务流程手册,一步步说明了请假、报销等流程如何推进。
状态机图(State Machine Diagram)
描述一个对象在其生命周期内所经历的状态序列,以及如何响应各种事件从而发生状态变迁。
- 好比描述一个“订单”对象的状态:从“已下单”到“已付款”再到“已发货”、“已完成”。
顺序图(Sequence Diagram)
最常用的交互图。强调消息的时间顺序,展示对象之间如何在一段时间内进行交互。
- 好比一场对话的记录,清楚地显示了谁在什么时候对谁说了什么。
通信图(Communication Diagram)
强调对象之间的组织结构及其之间的链接上的消息流,是顺序图的另一种表现形式。
时序图(Timing Diagram)
一种特殊的交互图,专注于状态变化的具体时间约束。
交互概览图(Interaction Overview Diagram)
活动图和顺序图的混合体,用于概述交互流程。