统一建模语言是一种标准化的通用建模语言,现在由对象管理组 (OMG)作为事实上的行业标准进行 管理。UML 包括一组图形符号技术,用于为软件密集型系统创建可视化模型。
在 UML 2.2 中有 14 种类型的 UML 图,分为两类:
- 7种图表类型代表结构信息
- 另外 7 个代表行为建模的通用 UML 图类型,包括代表交互的不同方面的四个。
这些图表可以按层次分类,如下面的 UML 图表所示:
问题:UML 庞大而复杂?
UML 确实是一个巨大的话题。UML 提供了大量图表符号,分为 14 种不同的 UML 图类型,每种都有不同的 UML 模型,服务于不同的目的并解决开发需求的不同方面。
- 14 种 UML 图类型的每个 UML 图都提供了大量的结构和符号,涵盖了大多数软件开发项目的不同需求。
- UML 规范有 700 多页,显然被认为过于复杂,对 UML 的感知和采用有负面影响。
- 通常,用户倾向于只考虑和使用其 UML 图表/结构的一部分。
答案:学习最基本的 UML 图和符号
Grady Booch 是最重要的统一建模语言开发人员之一,他表示“80% 的软件只需要 20% 的 UML”。
什么是 UML 调查* 状态?
我们可以通过假设来解释 UML 调查的结果,如果图表是
- 广泛使用,如果它≥60%的来源
- 如果它是 ≤ 40% 的来源,则几乎不使用
在本文中,我按照上面提到的使用频率的顺序介绍了所有 14 种 UML 图:
例如,类图是使用最广泛的一种,因此将在本节中首先讨论,以此类推……
类图
在软件工程中, 统一建模语言 (UML) 中的类图是 一种静态结构图 ,它通过显示系统的类、它们的属性、操作(或方法)以及对象之间的关系来描述系统的结构。
类图的目的
- 显示系统中分类器的静态结构
- 图为 UML 规定的其他结构图提供了基本的符号
- 对开发人员和其他团队成员也有帮助
- 业务分析师可以使用类图从业务角度对系统进行建模
UML 类图由以下部分组成:
- 一组类和
- 一组类之间的关系
类图——图表工具示例
类图也可能附有类或关系的注释。注释以灰色显示。
在上面的例子中:
我们可以通过阅读以下几点来解释上述类图的含义。
- 形状是一个抽象类。它以斜体显示。
- 形状是一个超类。Circle、Rectangle 和 Polygon 是从 Shape 派生的。换句话说,圆就是形状。这是一种泛化/继承关系。
- DialogBox 和 DataController 之间存在关联。
- 形状是窗口的一部分。这是一种聚合关系。形状可以在没有窗口的情况下存在。
- 点是圆的一部分。这是一种组合关系。没有圆,点就不能存在。
- 窗口依赖于事件。但是,Event 不依赖于 Window。
- Circle 的属性是半径和中心。这是一个实体类。
- Circle 的方法名称是 area()、circ()、setCenter() 和 setRadius()。
- Circle 中的参数 radius 是 float 类型的 in 参数。
- Circle 类的方法 area() 返回一个 double 类型的值。
- Rectangle 的属性和方法名是隐藏的。图中的其他一些类也隐藏了它们的属性和方法名称。
UML 中第二种最流行的图表类型是活动图:
活动图
活动图是 UML 图中另一个重要的行为图,用于描述系统的动态方面。活动图本质上是流程图的高级版本,它对从一个活动到另一个活动的流程进行建模。
何时使用活动图
活动图描述了如何协调活动以提供可以处于不同抽象级别的服务。通常,一个事件需要通过一些操作来实现,特别是在操作旨在实现需要协调的许多不同事物的情况下,或者单个用例中的事件如何相互关联时,特别是活动的用例可能重叠并需要协调。它还适用于建模用例集合如何协调以表示业务工作流
- 通过检查业务工作流程确定候选用例
- 识别用例的前置条件和后置条件(上下文)
- 用例之间/内部的工作流建模
- 对对象操作中的复杂工作流进行建模
- 在高级活动图中详细建模复杂活动
活动图——通过例子学习
一个基本的活动图——流程图
活动图示例 – 流程订单
给定与处理订单的工作流相关的问题描述,让我们使用活动图对描述进行可视化建模:
流程订单 – 问题描述
一旦收到订单,活动就会分成两组平行的活动。一方填写并发送订单,另一方处理账单。
在填写订单方面,交货方式是有条件地决定的。根据情况执行隔夜交割活动或定期交割活动。
最后,并行活动结合起来关闭订单。
下面的活动图示例以图形形式可视化流程。
第三个最广泛使用的 UML 图类型是序列图:
序列图
UML 序列图是详细说明如何执行操作的交互图。它们捕获协作上下文中对象之间的交互。序列图是时间焦点,它们通过使用图表的垂直轴来表示时间,什么消息被发送以及何时发送,从而直观地显示交互的顺序。
序列图示例:酒店系统
序列图是一个交互图,详细说明了操作是如何执行的——发送什么消息以及何时发送。序列图是按时间组织的。随着您向下浏览页面,时间会逐渐增加。操作中涉及的对象按照它们参与消息序列的时间从左到右列出。
下面是进行酒店预订的序列图。启动消息序列的对象是一个预约窗口。
注意:类和对象图是静态模型视图。交互图是动态的。它们描述了对象如何协作。
第四大使用最广泛的 UML 图类型(96%)是:
- 用例图
- 状态机图
用例图
UML用例 图是未开发的新软件程序的系统/软件需求的主要形式。用例指定了预期的行为(什么),而不是实现它的确切方法(如何)。
用例一旦指定,就可以用文本和视觉表示(即用例图)表示。用例建模的一个关键概念是它帮助我们从最终用户的角度设计系统。它是一种通过指定所有外部可见的系统行为来以用户的方式传达系统行为的有效技术。
用例图一览
用统一建模语言定义了标准形式的用例图,如下面的用例图示例所示:
用例图——车辆销售系统
下图显示了车辆系统的用例图示例。如您所见,即使是像汽车销售系统一样大的系统也包含不超过 10 个用例!这就是用例建模的美妙之处。
用例模型还展示了extend 和include 的使用。此外,参与者和用例之间存在关联。
状态图
实体的行为不仅是其输入的直接结果,而且还取决于其先前的状态。实体的过去历史最好用有限状态机图或传统上称为自动机的方式建模。
UML 状态机图(或有时称为状态图、状态机或状态图)显示实体的不同状态。状态机图还可以显示实体如何通过从一种状态更改为另一种状态来响应各种事件。状态机图是用于对系统的动态性质进行建模的 UML 图。
简单状态机图符号
简单状态是没有子结构的状态。具有子状态(嵌套状态)的状态称为复合状态。子状态可以嵌套到任何级别。嵌套状态机最多可以有一个初始状态和一个最终状态。子状态用于通过显示某些状态仅在特定上下文(封闭状态)内才可能来简化复杂的平面状态机。
子状态示例 – 加热器
历史状态
除非另有说明,否则当转换进入复合状态时, 嵌套状态机的操作会从初始状态重新开始 (除非转换直接针对子状态)。历史状态允许状态机 重新进入在离开 复合状态之前处于活动状态的最后一个子状态。下图展示了一个历史状态使用的例子。
根据调查,通信图的使用率为 82%:
通讯图
UML 通信图与 序列图 (一种交互图)一样,显示对象如何交互。通信图是对象图的扩展,它显示了对象以及从一个到另一个传输的消息。除了对象之间的关联之外,通信图还显示了对象相互发送的消息。
通讯图一览
在通信图的符号示例中,对象(用例中的参与者)由矩形表示。在示例中(通用通信图):
- 对象是 Object1、Object2、Object…、ObjectN-1…和 ObjectN。
- 对象之间传递的消息由带标签的箭头表示,箭头以发送对象(参与者)开始,以接收对象结束。
- 对象之间传递的示例消息标记为 1:message1、2:message2、3:message3 等,其中消息名称的数字前缀表示其在序列中的顺序。
- Object1 首先向 Object2 发送消息 message1,Object2 依次向 ObjectN-1 发送消息 message2,以此类推。
- 对象发送给自己的消息被表示为循环(例如,消息 message5)。
通信图与序列图
通信图和时序图类似。它们在语义上是等价的,即呈现相同的信息,您可以将通信转换为序列图,反之亦然。它们之间的主要区别在于,通信图是按空间排列元素,顺序图是按时间排列。
在这两种类型的交互图中,序列图的使用似乎远远超过通信图。那么,为什么要使用通信图呢?首先,它们对于可视化协作执行特定任务的对象之间的关系非常有用。这很难从序列图中确定。此外,通信图还可以帮助您确定静态模型(即类图)的准确性。
组件图和部署图的使用率都是 80%:
组件图
UML 组件图用于建模面向对象系统的物理方面,这些系统用于可视化、指定和记录基于组件的系统,也用于通过正向和反向工程构建可执行系统。
组件图本质上是关注系统组件的类图,这些组件通常用于对系统的静态实现视图进行建模。
组件图一览
组件图将正在开发的实际系统分解为各种高级功能。每个组件在整个系统中负责一个明确的目标,并且仅在需要知道的基础上与其他基本元素交互。
部署图
UML 部署图是显示运行时处理节点的配置以及在它们上的组件的图。 部署图是一种结构图,用于对面向对象系统的物理方面进行建模。它们通常用于对系统的静态部署视图(硬件拓扑)进行建模。
部署图一览
部署图对于可视化、指定和记录嵌入式、客户端/服务器和分布式系统以及通过正向和反向工程管理可执行系统非常重要。
部署图只是一种特殊的类图,它关注系统的节点。从图形上看,部署图是顶点和弧的集合。部署图通常包含:
节点
- 3-D 框代表一个节点,无论是软件还是硬件
- 硬件节点可以用 <<stereotype>> 表示
- 节点之间的连接用一条线表示,可选<<stereotype>>
- 节点可以驻留在节点内
其他符号
- 依赖
- 关联关系。
- 也可能包含注释和约束。
根据调查,UML 对象图的使用率为 71%:
对象图
对象是运行时特定时刻的实例,包括对象和数据值。静态 UML对象图是类图 的一个实例 ;它显示了系统在某个时间点的详细状态的快照,因此对象图包含了某个时间点的对象及其关系。
对象图一览
对象图显示了实例化类和定义类之间的这种关系,以及系统中这些对象之间的关系。当您的系统类图非常复杂时,它们对于解释系统的较小部分很有用,有时还可以在图中建模递归关系。
说明对象图的最佳方式是显示从相应类图派生的对象图。
以下订单管理系统显示了它们的关系。这个小类图显示了一个大学部门可以包含许多其他部门,下面的对象图实例化了类图,并用一个具体的例子代替了它。
类到对象图示例 – 订单系统
封装图的使用率为70%:
封装图
包图是结构图的一种,显示了大中型项目中模型元素的排列和组织。包图可以显示子系统或模块之间的结构和依赖关系,显示系统的不同视图,例如,作为多层(也称为多层)应用程序 – 多层应用程序模型。
封装图一览
包图用于简化复杂的类图,可以将类分组到包中。包是逻辑相关的 UML 元素的集合。
下图是一个业务模型,其中类被分组到包中:
- 包显示为顶部带有小标签的矩形。
- 包名称位于选项卡上或矩形内。
- 虚线箭头是依赖项。
- 如果另一个包的变化可能会迫使第一个包发生变化,那么一个包依赖于另一个包。
复合结构图的使用率为52%:
复合结构图
复合结构图是添加到 UML 2.0 的新工件之一。复合结构图是一个 UML 结构图,它包含类、接口、包和它们的关系,并提供所有或部分软件系统的逻辑视图。它显示了结构化分类器或协作的内部结构(包括部件和连接器)。
复合结构图的作用与类图相似,但允许您更详细地描述多个类的内部结构并显示它们之间的交互。您可以以图形方式表示内部类和部件,并显示类之间和类内的关联。
复合结构图一览
- 复合结构图显示了类的内部部分。
- 零件命名:partName:partType[multiplicity]
- 聚合类是类的一部分,但部分不一定是类,一部分是用于构成包含类的任何元素。
Timing Diagram 的使用率只有 40%,一般用户很少使用
时序图
时序图是 UML 交互图,用于显示当图的主要目的是推理时间时的交互。他们关注沿线性时间轴在生命线内和生命线之间变化的条件。时序图描述了单个分类器的行为和分类器的交互,重点关注导致生命线建模条件变化的事件发生时间。
时间图一览
状态时间线表示
从一种 状态 到另 一种状态的变化由生命线级别的变化表示。对于对象处于给定状态的时间段,时间线与该状态平行运行。状态变化表现为从一个水平到另一个水平的垂直变化。与状态或序列图中的情况一样,更改的原因是收到消息、导致更改的事件、系统内的条件,甚至只是时间的流逝。
价值生命线代表
下图显示了 UML 时序图的另一种表示法。每次状态变化时,它都会在相互交叉的两条水平线之间显示对象的状态。
交互式概览图是 UML 2.0 中添加的新图表:
交互式概览图
UML 交互概述图提供了交互模型的高级抽象。它是活动图的变体,其中节点是交互或交互发生。
交互概述图侧重于交互控制流的概述,它还可以显示图表之间的活动流。换句话说,您可以链接“真实”图表并在交互概览图中实现图表之间的高度可导航性。
交互概览图一览
交互概览图是统一建模语言 (UML) 的 14 种图表类型之一,它可以描绘带有节点的控制流,这些节点可以包含交互图,显示在各种场景中如何启动一组片段。交互概述图侧重于节点是 交互 (sd) 或 交互使用 (ref) 的控制流的概述。
交互概览图的其他符号元素与活动图和序列图相同。这些包括初始、最终、决策、合并、分叉和连接节点。
使用最少的 UML 图是 Profile Diagram,它只有 11%:
剖面图
作为一种通用建模语言,UML 为各种需求提供了稳定的基础。它没有为特定的应用领域或任何特定的技术定义。然而,在某些情况下,UML 过于笼统,使用它需要付出相当大的努力。在这种情况下,使用针对给定领域优化的语言并因此提供特殊概念是有利的。
概要图是统一建模语言 (UML) 中的一种结构图,它提供了一种通用扩展机制,用于为特定领域和平台定制 UML 模型。扩展机制允许以严格附加的方式细化标准语义,防止它们与标准语义相矛盾。配置文件是使用 构造型、 标记值定义和 应用于特定模型元素(如类、属性、操作和活动)的约束来定义的。Profile 是这样的扩展集合,它们共同为特定领域(例如,航空航天、医疗保健、金融)或平台(J2EE、.NET)定制 UML。
配置文件图示例 – IT 管理
配置文件应用于另一个包,以便使配置文件中的构造型可用于该包。下图显示了应用于 ITManagement 包的网络、电信和软件配置文件。
寻找免费的在线软件设计工具?
这是用于软件设计示例的 Visual Paradigm Online 存储库,它是:
- 免费(个人和非商业目的)
- 在线(零安装和配置)
- 支持 Google Drive 和免费云存储
- 很多例子
- 随时随地使用它!只需要一个网络浏览器