UML图:特征、图表和类型

⚡ 智能摘要

UML图提供了一种标准化的可视化语言,用于对软件系统进行建模,ping 开发团队会在实施开始前记录面向对象的设计,清晰地沟通复杂的架构决策,并协调所有项目利益相关者。

  • 📐 核心定义: 统一建模语言 (UML) 是 ISO 认可的标准,它使用图形图表来表示软件系统的面向对象设计、结构和行为。
  • 🏛️ 两类: UML 图分为结构图(组件的静态视图)和行为图(交互和工作流程的动态视图)。
  • 🗂️ 结构图: 类图、对象图、包图、组件图和部署图表示系统元素之间的静态架构和关系。
  • 行为图: 活动图、用例图和状态机图可以捕捉系统流程、用户交互以及状态随时间的变化。
  • 🛠️ 工具与人工智能: 诸如 StarUMLVisio 和 Lucidchart 以可视化的方式生成 UML 图;人工智能工具现在可以从纯文本描述或源代码自动生成准确的图表。
  • 📅 版本记录: UML 从 1.1 版(1997 年)发展到 2.5.1 版(2017 年),每个版本都增加了图表类型,改进了语义,简化了规范。

UML图

软件系统发展迅速且复杂,如果团队无法将架构可视化,就很难沟通设计决策。UML 提供了一种在编写任何代码之前即可共享的可视化符号。

为什么要使用 UML?完整历史

1990 世纪 XNUMX 年代是面向对象语言发展的时代,例如 C++. 这些面向对象的语言用于创建复杂但引人注目的系统。

由于所开发的系统复杂、难以理解,导致系统部署后面临设计和分析问题,很难向其他人解释该系统。

UML 一经推出,便有许多改变游戏规则的实验和方法被提出来,用于简化系统分析等困难的任务。

UML 是一种面向对象的统一建模语言。它是由 Rational 软件公司的杰出软件工程师 Grady Booch、Ivar Jacobson 和 James Rumbaugh 在 1994 年至 1995 年间发明的。它一直处于开发阶段,直到 1996 年。

UML 的三位发明者,即 Grady Booch、Ivar Jacobson 和 James Rumbaugh,都曾有过设计一种能够降低复杂性的语言的绝妙想法。

  • Booch 的方法在物体的设计和构造过程中非常灵活。
  • Jacobson 的方法提供了一种很好的解决用例问题的方法。它还提供了一种强大的高级设计方法。
  • 事实证明,Rumbaugh 的方法在处理敏感系统时非常有用。

Later 随后,David Harel 发明的 UML 中引入了行为模型和状态图。

UML 于 1997 年被对象管理组织 (OMG) 认可为标准。自从 UML 被采用为标准以来,对象管理组织就负责管理它。

2005年,国际标准化组织批准UML成为ISO标准。它被各行各业用来创建面向对象的模型。

最新的 UML 版本是 2.5.1,于 2017 年 XNUMX 月发布。

UML 版本

日期 版本 关于我们
1997 年 11 月 1.1 UML 被对象管理组织采用。这是 UML 的第一个版本。
2000 年 3 月 1.3 对现有模型进行了小幅升级,语义发生了显著变化, 符号,以及UML的元模型。
2001 年 9 月 1.4 这是 UML 的主要更新时期。它通过提供各种扩展来扩展 UML。在图表中引入了可见性、工件、构造型。
2003 年 3 月 1.5 程序、数据流机制等特征被添加到UML中。
2005 年 1 月 1.4.2 UML 被 ISO 接受为标准。
2005 年 8 月 2.0 UML 中增加了对象、包、时序、交互等新图表。活动图和序列图增加了新功能。协作图更名为通信图。现有图表中引入了多项功能和变化。
2006 年 4 月 2.1 对 UML 2.0 进行了修正。
2007 年 2 月 2.1.1 Upgrade是在 UML 2.1 中引入的。
2007 年 11 月 2.1.2 UML 2.1.1 被重新定义。
2009 年 2 月 2.2 UML 2.1.2 错误已修复。
2010 年 5 月 2.3 UML 2.2 进行了修订,对组件图做了微小的修改。
2011 年 8 月 2.4.1 类、包和原型都发生了变化。UML 2.3 经过修订,具有增强功能。
2015 年 6 月 2.5 UML 2.4.1 进行了修订,改动不大。UML 比以前更加简洁。引入了快速运行和更高效模型生成功能。过时的功能被移除。模型和模板作为辅助结构也被取消。

UML的特点

  1. 它是一种通用建模语言。
  2. 它不同于以下软件编程语言: Python, C, C++等等。
  3. 它是一种图形语言,可以用来生成强大的建模元素。
  4. 它与面向对象的设计和分析相关。
  5. 它甚至在软件行业之外也有无限的应用。它可以用来可视化工厂的工作流程。

概念模型

在开始了解 UML 概念之前,必须了解概念模型的基础知识。

概念模型由相互关联的概念组成。它帮助我们理解

  • 什么是物体?
  • 如何发生交互来执行一个过程?

UML 需要概念模型。在实际建模系统之前,您必须了解实体及其之间的关系。

开始使用 UML 需要以下面向对象的概念:

  • 摆件它是现实世界中的实体。单个系统中存在多个对象。它是 UML 的基本组成部分。
  • 增益级类只不过是一个容器,用于维护对象及其关系。
  • ABStracTION:它是一种表示实体而不显示实现细节的机制。它用于可视化对象的行为。
  • 遗产:它是一种扩展现有类来创建新类的机制。
  • 多态性:它是一种表示具有多种形式以用于不同目的的对象的机制。
  • 封装:这是一种将对象和数据绑定为一个单元的方法。它确保对象和数据之间的紧密耦合。

以上也称为 基本构建块 UML。

什么是 UML 图?

UML图 是统一建模语言的输出。它是类、对象及其之间关系的图形表示。UML 图是描述系统一部分的模型。它用于定义系统的功能或设计。图表必须清晰简洁,以便查看者能够轻松理解。

UML 图分为三个不同的类别,例如,

  • 结构图
  • 行为图
  • 交互图

UML 中的结构图

结构图用于表示系统的静态视图。它表示构成系统结构的系统的一部分。结构图显示系统内的各种对象。

以下是UML中的各种结构图:

  • 类图
  • 对象图
  • 封装图
  • 组件图
  • 部署图

UML 中的行为图

任何现实世界的系统都可以用静态或动态形式来表示。如果系统既能用静态方式表达,又能用动态方式表达,则该系统是完整的。行为图表示系统的功能。

处理系统静态部分的 UML 图称为结构图。处理系统移动或动态部分的 UML 图称为行为图。

以下是UML中的各种行为图:

  • 活动图
  • 用例图
  • 状态机图

UML 中的交互图

交互图不过是行为图的一个子集。它用于可视化系统各个用例元素之间的流程。交互图用于显示两个实体之间的交互以及数据在它们内部的流动方式。

以下是UML中的各种交互图:

  • 时序图
  • 时序图
  • 协作图

上述图表的详细解释将在后续教程中说明。

结构型与行为型 UML 图

下表对比了两种 UML 图类型,以帮助团队选择合适的类型。

属性 结构图 行为图
查看 静止 动态
专注 组成部分及其关系 系统动作和交互
例子 类、对象、包、组件、部署 活动、用例、状态机
主要用途 Archi结构和数据库设计 工作流程、用户旅程、状态转换
创建于 预先定义系统结构 对运行时行为和业务逻辑进行建模

UML 工具

市场上有许多工具可用于生成 UML 图。有些是基于桌面的,而有些则可以在线使用。以下是可用于创建 UML 模型的工具的精选列表:

我们将使用 StarUML 用于生成 UML 图的应用程序。

安装步骤:打开链接: http://staruml.io/download

根据您的 PC 规格。下载任意版本的应用程序。这里我们将选择 Windows 选项。

StarUML 安装

应用程序下载完成后,请使用所有默认选项进行安装。安装完成后,启动应用程序。 StarUML 您电脑上的应用程序。

您将看到以下窗口,

StarUML 安装

您现在可以开始创建 UML 图。

常见问题

📊 UML 2.x 定义了 14 种官方图表类型,分为两大类:7 种结构图(类、对象、组件、部署、包、复合结构、配置文件)和 7 种行为图(用例、活动、状态机、序列、通信、计时、交互概述)。

🗄️ UML 图用于对面向对象的软件系统进行建模,涵盖结构和行为两方面。实体关系 (ER) 图则专门关注数据库模式以及数据实体之间的关系。UML 类图可以表示数据库表,但它包含 ER 图所缺乏的额外面向对象语义。

是的。UML 在企业架构、嵌入式系统以及金融和医疗保健等受监管行业中仍然被广泛使用。敏捷团队通常使用较轻量的子集——最常见的是类图和序列图——而完整的 UML 套件在大型系统设计和政府项目中仍然很常见。

🤖 是的。像 ChatGPT 和 GitHub Copilot 这样的 AI 模型可以生成 PlantUML 或者从纯文本描述或源代码生成 Mermaid 语法。类似这样的工具 Lucidchart Visio 现在嵌入了 AI 助手,可以根据自然语言提示在几秒钟内绘制类图、序列图和用例图。

🛠️领先的AI驱动型UML工具包括 Lucidchart的AI图表生成器, Microsoft Visio Copilot、Eraser.io 和 Draw.io 搭配 ChatGPT 插件。 PlantUML 结合任何大型语言模型,开发者可以将图表编写成代码,而 GitLab 和 GitHub Copilot 可以从现有存储库中逆向工程类图。

⭐ 类图和序列图是应用最广泛的两种图式。类图用于建模静态结构和代码架构,而序列图则用于描述对象随时间推移的交互方式,因此两者都常用于敏捷团队和企业团队的设计文档。

🔍 类图定义了系统的蓝图——包括类、属性、方法和关系。对象图则展示了这些类的实际实例在特定时刻的快照,并带有真实值,从而展现了运行时结构的真实面貌。

🎓 不。UML 是一种可视化建模符号,而不是编程语言,所以初学者无需任何编程技能即可学习。理解对象、类和关系等基本的面向对象概念就足以开始创建简单的 UML 图。

总结一下这篇文章: