统一建模语言 (UML) 简介

统一建模语言 (UML)是一种可用于任何目的的建模语言。UML的主要目标是建立可视化系统设计的标准。它看起来很像其他工程分支中的设计。

UML 是一种视觉语言,而不是一种编程语言。UML 图用于描述系统的行为和结构。UML 是一种建模、设计和分析工具,适用于软件工程师、业务人员和系统架构师。统一建模语言于 1997 年被对象管理组 (OMG)批准为标准。从那时起,OMG 一直负责它。2005 年,国际标准化组织 (ISO) 接受 UML 作为标准。UML 一直在更新,并定期进行检查。

什么是 UML?

统一建模语言 (UML) 的开发旨在为大型软件系统的结构和行为的架构、设计和实现建立通用的可视化建模语言。UML 具有软件开发之外的应用程序,例如工业流程。

它由多种类型的图表组成,类似于其他领域中使用的蓝图。一般而言,UML 图描述了系统的边界、结构和行为,以及其中包含的对象。

尽管 UML 不是一种编程语言,但存在使用 UML 图以多种语言生成代码的工具。

UML 的历史

UML 源于围绕软件开发和文档的困惑。在整个 1990 年代,有多种技术可以表示和记录软件系统。结果,三位 Rational Software 软件开发人员在 1994-1996 年间创建了 UML。它后来在 1997 年被公认为标准,从那时起一直保持不变,只做了很小的修改。

UML 真的有必要吗?

  • 复杂的应用程序需要各个团队的协作和规划,这需要他们之间的清晰和直接的沟通方式。
  • 业务人员不理解代码。因此,UML 对于非程序员了解系统的基本需求、功能和操作变得必不可少。
  • 当团队可以可视化流程、用户交互和系统的静态结构时,他们可以节省大量时间。

面向对象的设计和分析与 UML 相关联。为了创建图表,UML 获取项目并在它们之间创建关联。以下是 UML 图的一些示例。

  • 结构图描述了系统的静态特征或结构。显示了结构图。组件图、对象图、类图和部署图都是软件开发中使用的图的示例。
  • 行为图描述了系统的动态特征或行为。包括行为图。用例图、状态图、活动图和交互图帮助您可视化您的想法。

根据 UML 的示意图层次结构如下图所示。

UML 中的关键面向对象概念

面向对象 (OO) 分析和设计已被 UML 取代。

对象由数据和控制它的方法组成。数据代表对象的当前状态。类是一种具有层次结构的对象,可用于模拟现实世界的系统。层次通过继承表示,类可以根据需要以多种方式链接。

对象是存在于我们周围的真实世界实体,UML 可以代表抽象、封装、继承和多态等基本原则。

UML 能够表示面向对象分析和设计中的所有概念。

在 UML 图中仅表示面向对象的概念。因此,在学习 UML 之前,彻底了解 OO 概念至关重要。

  • :类定义蓝图,即对象的结构和功能,并在UML 中使用。
  • 对象:对象帮助我们分解和模块化复杂的系统。模块化使我们能够将系统分解为易于理解的组件,从而使我们能够逐个创建它。系统的基本单元(构建块)是对象,用于描述实体。
  • 继承:一种允许子类继承其父类属性的机制。
  • 抽象:一种保护用户不受实现细节影响的方法。
  • 封装:将数据放在一起并保护其免受外界影响的过程。
  • 多态性:一种允许函数或实体以多个版本存在的方法。

UML 中的补充:

  • 增加了原始 UML 定义的范围,并添加了敏捷等软件开发方法。
  • 最初,UML 需要九个图表。UML 2.x 中的图表数量从 9 个增加到 13 个。时序图、通信图、交互概览图和复合结构图是四个新的图表。状态图在 UML 2.x 中被重命名为状态机图。
  • 现在可以使用 UML 2.x 将软件系统分解为组件和子组件。

UML 结构图

类图——类图是使用最广泛的 UML 图。它是所有面向对象软件系统的基础。类图用于通过显示系统的类、方法和属性来描述系统的静态结构。类图还帮助我们确定各种类或对象之间的联系。

复合结构图——复合结构图用于说明一个类的内部结构以及它与系统其他组件的交互点。片段及其配置之间的链接决定了分类器(类、组件或部署节点)的行为方式。部件、端口和连接用于说明结构化分类器的内部结构。我们还可以使用复合结构图来建模合作。它们类似于类图,但它们不是表示完整的类,而是深入显示特定元素。

对象图– 对象图可以称为系统中实例的屏幕截图以及它们之间存在的关系。由于对象图描述了对象在实例化后的行为,因此我们能够研究系统在特定时刻的行为。对象图类似于类图,不同之处在于它显示了系统中类的实例。我们使用类图来描述实际的分类器及其关系。另一方面,对象图表示类的特定实例以及它们在某个时间点之间的关系。

组件图——组件图用于显示系统的物理组件是如何连接的。它们用于模拟实现细节。组件图显示了软件系统各部分之间的结构关系,可以帮助我们确定计划的开发是否满足了所有的功能需求。在设计和构建复杂系统时,组件图是必不可少的。系统的许多组件通过接口相互通信。

部署图– 部署图是描述系统硬件和软件的图表。它告诉我们那里的硬件组件以及在它们上执行的软件组件。系统软件生成的信息称为工件。当软件在具有各种配置的众多设备上使用、分发或部署时,它们最常被使用。

包图– 包图用于显示包及其组件的排列方式。包图简单地描述了不同包的相互依赖关系以及包的内部结构。包有助于将 UML 图组织成有意义的组和对图的理解。它们主要用于保持类图和用例图的组织。

UML 行为图

状态机图——用于描绘系统或系统部分在特定时间点的状态。这是一个行为图,其中行为由有限数量的状态转换表示。状态机和状态图是状态图的其他名称。这些术语经常互换。简而言之,状态图是类对时间和不断变化的外部输入的反应的动态行为的可视化表示。

活动图——我们使用活动图来展示系统的控制流是如何工作的。活动图也可以用来指代执行用例所涉及的阶段。活动图用于表示顺序和并发的活动。因此,活动图用于直观地描述工作流。流的情况和它们发生的顺序是活动图的重点。活动图用于表示或描述导致特定事件的事件。

用例图用于描述系统或系统组件的功能。它们经常用于描述系统的功能需求以及与外部代理(参与者)的交互。用例是描述可以应用系统的各种上下文的图表。用例图为我们提供了系统或系统元素执行的高级概述,而无需深入了解实现的细节。

序列图简单地描述了一系列项目之间的交互,即这些交互发生的顺序。序列图也可以称为事件图或事件场景。序列图显示了系统的组件如何以及以何种顺序协同工作。商务人士和软件工程师经常使用这些图表来记录和理解新系统和当前系统的需求。

通信图 (在 UML 1.x 中也称为协作图)用于描述对象之间信息的顺序传输。对象及其关系是通信图的重点。序列图可以用来描述类似的信息,但通信图表示的是自然状态下的对象和链接。

时序图 ——时序图是一种时序图,它描述了对象在一段时间内的行为。它们用于描述控制对象状态和行为变化的时间和持续时间约束。

交互概览图——交互概览图是一系列事件的模型,可用于将复杂的交互分解为更简单的事件。它是活动和序列图之间的交叉。

UML 词汇表

  • 抽象类 ——永远不会被实例化的类。这个类的实例永远不会存在。
  • 参与者 ——启动系统所涉及的事件的对象或人。
  • 活动:活动图中的步骤或动作。表示系统或演员采取的行动。
  • 活动图:一个美化的流程图,显示流程中的步骤和决策以及并行操作,例如算法或业务流程。
  • 聚合 ——是另一个类的一部分。在图表中包含类旁边显示有一个空心菱形。
  • 工件 ——描述设计过程中步骤输出的文档。描述是图形的、文本的或某种组合。
  • 关联 – 模型的两个元素之间的连接。这可能表示代码中的成员变量,或人事记录与其所代表的人之间的关联,或两类工人之间的关系,或任何类似的关系。默认情况下,关联中的两个元素是相等的,并且通过关联相互了解。一个关联也可以是一个可导航的关联,这意味着关联的源端知道目标端,但反之则不然。
  • 关联类:代表两个其他类之间的关联并向其添加信息的类。
  • 属性 ——对象的特征,可用于引用其他对象或保存对象状态信息。
  • 基类:定义由子类通过泛化关系继承的属性和操作的类。
  • 分支:活动图中的决策点。分支中出现多个转换,每个转换都有一个保护条件。当控制到达 Branch 时,恰好有一个 Guard Condition 为真;并且控制遵循相应的转换。
  • :类似对象的类别,都由相同的属性和操作描述,并且所有分配兼容。
  • 类图 ——显示系统类和它们之间的关系。
  • 分类器:具有属性和操作的 UML 元素。具体来说,Actors、Classes 和 Interfaces。
  • 协作:通信图中两个对象之间的关系,表明消息可以在对象之间来回传递。
  • 通信图 ——显示操作如何完成的图表,同时强调对象的角色。
  • 组件:系统内可部署的代码单元。
  • 组件图:显示各种组件和接口之间关系的图表。
  • 概念 ——要包含在领域模型中的名词或抽象概念。
  • 构建阶段 ——Rational Unified Process 的第三阶段,在此阶段,功能的多次迭代被构建到正在构建的系统中。这是主要工作完成的地方。
  • 依赖关系:表示一个分类器知道另一个分类器的属性和操作,但不直接连接到第二个分类器的任何实例的关系。
  • 部署图:显示各种处理器之间关系的图表。
  •  – 系统所涉及的宇宙的一部分。
  • 细化阶段 ——Rational Unified Process 的第二阶段,允许额外的项目规划,包括构建阶段的迭代。
  • 元素:出现在模型中的任何项目。
  • 封装 ——对象中的数据是私有的。
  • 泛化 ——表示一个类是另一个类(超类)的子类。一个空心箭头指向超类。
  • 事件:在状态图中,这表示导致系统采取行动或切换状态的信号或事件或输入。
  • 最终状态:在状态图或活动图中,这表示图完成的点。
  • Fork:活动图中多个并行控制线程开始的点。
  • 泛化:一种继承关系,其中子类继承并添加到基类的属性和操作。
  • GoF  – 四组设计模式。
  • 高内聚性 ——一种 GRASP 评估模式,确保类不会太复杂,执行不相关的功能。
  • 低耦合 ——一种 GRASP 评估模式,用于衡量一个类对另一个类的依赖程度或与另一个类的连接程度。
  • 初始阶段 ——Rational Unified Process 的第一个阶段,处理最初的概念化和项目的开始。
  • 继承 ——子类继承其父(超类)类的属性或特征。这些属性可以在子类中被覆盖。
  • 初始状态:在状态图或活动图中,这表示图开始的点。
  • 实例 – 类像模板一样用于创建对象。这个对象被称为类的一个实例。可以创建任意数量的类实例。
  • 接口:定义形成行为契约的属性和操作的分类器。提供者类或组件可以选择实现接口(即实现其属性和操作)。然后,客户端类或组件可以依赖于接口,从而使用提供者,而不需要提供者的真实类的任何细节。
  • 迭代 – 一个小型项目部分,在此期间将一些小功能添加到项目中。包括分析、设计和编码的开发循环。
  • 加入:活动图中的一个点,多个并行控制线程同步并重新加入。
  • 成员:分类器中的属性或操作。
  • 合并:活动图中不同控制路径汇集在一起​​的点。
  • 消息 ——从一个对象到另一个对象的请求,要求接收消息的对象做某事。这基本上是对接收对象中的方法的调用。
  • 方法 ——对象中的函数或过程。
  • 模型 ——核心 UML 工件。由按包以层次结构排列的各种元素组成,以及元素之间的关系。
  • 多重性 ——显示在领域模型中并在概念框外表示,它表示对象数量与其他对象的分位数的关系。
  • 可导航性:指示关系的哪一端知道另一端。关系可以具有双向可导航性(每一端都知道另一端)或单向可导航性(一端知道另一端,但反之则不然)。
  • Notation  – 带有用于创建分析和设计方法的规则的图形文档。
  • 注意:添加到图表中的文本注释以更详细地解释图表。
  • 对象 ——对象:在活动图中,从活动接收信息或向活动提供信息的对象。在协作图或序列图中,参与图中描述的场景的对象。通常:给定分类器(Actor、Class 或 Interface)的一个实例或示例。
  •  ——逻辑上应该组合在一起的一组 UML 元素。
  • 包图:一个类图,其中所有元素都是包和依赖项。
  • 模式 ——用于确定交互对象职责分配的解决方案。它是成功解决众所周知的常见问题的名称。
  • 参数:操作的参数。
  • 多态性 ——相同的信息,不同的方法。也用作图案。
  • Private:应用于属性或操作的可见性级别,指示只有包含该成员的分类器的代码才能访问该成员。
  • 处理器:在部署图中,这表示可以部署代码的计算机或其他可编程设备。
  • 受保护:应用于属性或操作的可见性级别,指示只有包含该成员的分类器或其子类的代码才能访问该成员。
  • Public:应用于属性或操作的可见性级别,表示任何代码都可以访问该成员。
  • 阅读方向箭头 – 指示领域模型中关系的方向。
  • 实现:表示组件或类提供给定接口。
  • 角色 ——在领域模型中使用,它是关于参与者角色的可选描述。
  • 序列图:显示对象随时间存在的图表,以及随时间在这些对象之间传递以执行某些行为的消息。状态图——显示所有可能的对象状态的图。
  • 状态:在状态图中,这表示系统或子系统的一种状态:它在某个时间点正在做什么,以及它的数据值。
  • 状态图:显示系统或子系统的状态、状态之间的转换以及导致转换的事件的图。
  • 静态:属性的修饰符,指示在分类器的所有实例之间共享的属性只有一个副本。操作的修饰符,表示该操作独立存在并且不对分类器的一个特定实例进行操作。
  • Stereotype:应用于模型元素的修饰符,表明它通常不能在 UML 中表达。本质上,Stereotypes 允许您定义自己的 UML“方言”。
  • 子类:继承由子类通过泛化关系定义的属性和操作的类。
  • 泳道:活动图的一个元素,指示系统或域的哪些部分执行特定的活动。Swimlane 中的所有活动都是由 Swimlane 表示的对象、组件或 Actor 的责任。
  • 时间拳击 ——每次迭代都会有一个带有特定目标的时间限制。
  • 过渡:在活动图中,表示从一个活动或分支或合并或分叉或连接到另一个的控制流。在状态图中,表示从一个状态到另一个状态的变化。
  • 过渡阶段 ——Rational Unified Process 的最后一个阶段,在此阶段用户接受培训以了解如何使用新系统,并且系统可供用户使用。
  • UML  – 统一建模语言利用文本和图形文档通过允许对象之间更紧密的关系来增强软件项目的分析和设计。
  • 用例:在用例图中,表示系统为响应来自参与者的某些请求而采取的行动。
  • 用例图:显示参与者和用例之间关系的图表。
  • 可见性:属性或操作的修饰符,指示哪些代码可以访问该成员。可见性级别包括公共、受保护和私有。
  • 工作流 ——产生某些特定结果的一组活动。

UML 资源和参考

Leave a Reply

您的电子邮箱地址不会被公开。