3.1.3 UML 构成
UML 模型图有3种构成成分: 元素、关系、图, 如图3-1所示。
其中, 元素是UML 模型图中最基本的构成元素, 是具有代表性的成分的抽象; 关系把元素紧密联系在一起; 图是元素和关系的可视化表示。
1.UML 元素
UML 包含4种元素: 构件元素、行为元素、分组元素、注释元素。
(1) 构件元素
UML 模型的静态部分, 描述概念或物理元素。
构件元素包括以下7种。
①类: 具有相同属性、相同操作、相同关系、相同语义的对象的描述。
图3-1 UML 构成
②接口: 描述元素的外部可见行为, 即服务集合的定义说明。
③协作: 描述一组元素间的相互作用的集合。
④用例: 代表一个系统或系统的一部分行为, 是一组动作序列的集合。
⑤构件: 系统中的物理存在, 可替换的部件, 构件又称为组件。
⑥节点: 运行时存在的物理元素。
⑦另外, 参与者、信号应用、文档库、页表等都是上述基本元素的变体。
(2) 行为元素
UML 模型图的动态部分, 描述跨越空间和时间的行为, 主要包括以下两种。
①交互: 实现某功能的一组构件元素之间的消息的集合, 涉及消息、动作序列、链接。
②状态机: 描述元素或交互在生命周期内响应事件所经历的状态序列。
(3) 分组元素
UML 模型图的组织部分, 描述元素的组织结构。分组元素中的包是指把元素组织成组的机制。
(4) 注释元素
UML 模型图的解释部分, 用来对模型中的元素进行说明、解释。注释元素中的注解是指对元素进行约束或解释的简单符号。
2.UML 关系
(1) 依赖
依赖(Dependency) 是两个元素之间的语义关系, 其中一个元素(独立元素) 发生变化, 会影响到另一个元素(依赖元素) 的语义。
(2) 关联
关联(Association) 是一种结构关系, 指明一个元素的对象与另一个元素对象间的联系。
(3) 泛化
泛化(Generalization) 是一种特殊/一般的关系, 也可以看作是常说的继承关系。
(4) 实现
实现(Realization) 是类元之间的语义关系, 其中的一个类元指定了由另一个类元保证执行的契约。
3.UML 图
图是由一组元素和关系组成的连通图, 包括用例图、静态图、行为图、交互图和实现图。
(1) 用例图
用例图从用户的角度展示系统的功能, 描述角色以及角色与用例之间的连接关系。它说明的是谁要使用系统, 以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素, 如系统、参与者和用例, 并且显示了这些元素之间的各种关系, 如泛化、关联和依赖。
(2) 静态图
静态图采用对象、属性、操作、关联等概念展示系统的结构和基础, 包括类图、对象图和包图。
①类图: 描述系统中类的静态结构。类图是描述系统中的类, 以及各个类之间的关系的静态视图, 能够让我们在正确编写代码之前对系统有一个全面的认识。类图是一种静态模型。类图表示类、接口和它们之间的协作关系。
②对象图: 系统中的多个对象在某一时刻的状态。与类图极为相似, 它是类图的实例, 对象图显示类的多个对象实例, 而不是实际的类。它描述的不是类之间的关系, 而是对象之间的关系。
③包图: 对构成系统的模型元素进行分组整理的图。包图用于描述系统的分层结构,由包或类组成, 表示包与包之间的关系。
(3) 行为图
行为图用于描述系统的动态模型和对象间的交互关系, 包括状态图和活动图。
①状态图: 描述状态到状态控制流, 常用于动态特性建模。描述类的对象的所有可能的状态, 以及事件发生时状态的转移条件, 可以捕获对象、子系统和系统的生命周期。它们可以告知一个对象可以拥有的状态, 并且事件(如消息的接收、时间的流逝、错误、条件变为真等) 会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类。该图可以确定类的行为, 以及该行为如何根据当前的状态变化, 也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
②活动图: 描述业务实现用例的工作流程。描述用例要求所要进行的活动, 以及活动间的约束关系, 有利于识别并行活动; 能够演示出系统中哪些地方存在功能, 以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
(4) 交互图
交互图用于描述对象间的交互关系, 包括顺序图和协作图。
①顺序图: 对象之间的动态合作关系, 强调对象发送消息的顺序, 同时显示对象之间的交互。顺序图是用来显示参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上, 即强调消息是如何在对象之间被发送和接收的。
②协作图: 描述对象之间的协助关系。它和顺序图相似, 显示对象间的动态合作关系, 可以看成是类图和顺序图的交集。协作图建模对象或者角色, 以及它们彼此之间是如何通信的。如果强调时间和顺序, 则使用顺序图; 如果强调上下级关系, 则选择协作图。
(5) 实现图
实现图用于描述系统的物理实现, 包括组件图和配置图。
①组件图: 一种特殊的UML 图, 用来描述系统的静态实现视图。组件图又称为构件图, 用于描述代码构件的物理结构以及各种构件之间的依赖关系, 是用来建模软件的组件及其相互之间的关系, 这些图由构件标记符和构件之间的关系构成。在组件图中, 构件是软件单个的组成部分, 可以是一个文件、产品、可执行文件和脚本等。
②配置图: 定义系统中软硬件的物理体系结构。配置图又称为部署图, 是用来建模系统的物理部署, 如计算机和设备, 以及它们之间是如何连接的。配置图的使用者是开发人员、系统集成人员和测试人员。配置图用于表示一组物理节点的集合及节点间的相互关系, 从而建立系统物理层面的模型。
思政栏目
统一建模语言(UML) 是一个通用的可视化建模语言, 用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解, 可用于对系统的理解、设计、浏览、配置、维护和信息控制。因此, UML 建立的模型不按照一定的规范建模, 不建立标准化的模型, 其结果很可能是搭出来的模型可读性差、执行效率低, 给后续系统开发人员的工作带来麻烦。
形象地来说, 开一场国际学术大会, 大家来自不同的国家, 有的语言大家能听懂, 有的语言很生僻, 大部分人都听不懂, 这时候, 就会普遍采用英语, 来方便沟通, 把各自的语言翻译为英语类似标准化的过程。所以要注重UML 建模的规范和标准化, 培养开发人员的职业素养, 提高开发人员的素质。