UML 常用图形
原文链接 http://ufreedom.me/articles/2016/01/uml.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
UML 常用图形
UML 图形结构
项目中我们经常会画一些 UML 来帮助理顺逻辑,前段时间又重新学习了 UML 基础,并收集了几个常用 UML 工具,这里做个总结。
UML 可以分为三个基本模型:
功能模型: 从用户的角度展示系统的功能,如用例图.
对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,如类图、对象图.
动态模型: 展现系统的内部行为。如序列图,活动图,状态图.
UML 到目前为止已经发展到了 2.2 版本,下图是最新版本的 UML 图形分类图:
上图将 UML 分为结构图和行为图两大图,也有称为静态图和动态图,下面两个表格概括了14种图的基本功能:
1.UML结构图(静态图)
图形 | 说明 |
---|---|
类图(Class Diagrams) | UML最常用的图形,可以描述类别的静态结构.包括形态,界面和类别之间的关系 |
对象图(Object Diagrams) | 描述实例对象的静态结构,可以展示某一个时间的,系统一组件之间的关系 |
包图(Package Diagrams) | 使用层次架构来组织一组类别和物件 |
组件图(Component Diagrams) | 描述系统重要组件之间的组织架构 |
部署图(Deployment Diagrams) | 描述系统实际运行时的软硬件环境配置 |
复合结构图 (Composite Structure Diagrams) | 描述模型元素类别或物件的内部结构 |
轮廓图(Profile Diagrams) | 处理 mate-模型层次的模板信息 |
2.UML行为图(动态图)
图形 说明
活动图 (Activity Diagrams) 类似流程图,可以描述系统的业务流程,作业流程和系统各种活动流程
用例图 (UseCase Diagrams) 描述系统功能和其提供的服务和哪些使用者或者外部系统参与互动
时序图 (Sequence Diagrams) 使用时间轴方式物件之间的互动,强调物件之间的信息传递的时间顺序
通信图 (Communication Diagrams) 描述物件的互动,强调物件之间的关系,信息流向和控制流程
状态图 (State Machine Diagrams) 描述物件生命周期的事件的状态转换
时间图 (Timing Diagrams) 描述详细的时间信息,互动元素之间的条件信息和状态改变
交互概述图 (Interaction Overview Diagrams) 使用循序,通信和时序图以高级方式来描述系统发生的重要互动关系
总共 14 种图,我们在项目中常用的无外乎这5种: 类图,用例图,活动图,时序图,状态图. 下面详细这5种图的元素和结构.
一.类图
图形 元素 描述
1 类 (Class)
2 接口 (Interface)
3 泛化 (Generalization) 是一种继承关系,表示一般与特殊的关系(is-a)
4 实现 (Realization)
5 关联 (Association) 对象之间一种引用关系
6 依赖 (Dependency) 一种使用关系: 将一个类的对象作为另一个类中方法的参数 在一个类的方法中将另一个类的对象作为其局部变量 类的方法中调用另一个类的静态方法
</td>
7 聚合 (Aggregation) 是整体与部分的关系,且部分可以离开整体而单独存在
8 组合 (Composition) 是整体与部分的关系,但部分不能离开整体而单独存在
二.用例图
形状 元素 描述
1 参与者 (Actor) 在系统之外与系统交互的某人或者某事物
2 用例 (Use Case) 表示由一个或多个参与者为实现特定目标而执行的操作
3 关联 (Association) 参与者参与用例
4 子系统 (Subsystem) 边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中用方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面
结构化用例图
形状 元素 描述
5 包含 (Include) 基本用例的行为包含了另一个用例的行为
6 扩展 (Extend) 扩展用例在扩展点上增加新的行为和含义,箭头的方向是从扩展用例到基本用例
7 继承 (Inheritance) 子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。
8 依赖 (Dependency) 源设计依赖于目标的设计
三.活动图
形状 元素 描述
1 操作 (Action) 活动中的一个步骤,用户或软件可以在其中执行某些任务。 本地后置条件 - 终止执行时必须满足的条件 本地前置条件 -开始执行前必须满足的条件
2 动作流 (Control Flow) 动作之间的转换称之为动作流,活动图的转换用带箭头的直线表示,箭头的方向指向转入的方向。
3 开始节点 (Initial Node) 指示活动中的第一个操作或第一批操作。活动开始时,令牌从初始节点流出
4 终止节点 (Final Node) 活动结束
5 合并节点 (Merge Node) 在合并由决策节点拆分的流时需要用到,具有两个或多个输入以及一个输出
6 决策节点 (Decision Node) 流中的一个条件分支,具有一个输入以及两个或多个输出
7 分叉节点 (Fork Node) 将单个流划分为并发流
8 汇合节点 (Join Node) 将并发流合并为单个流
1.泳道
作用:分割不同参与角色的动作,如游泳池的水道一般被分割成多个水平或者垂直区域,成为泳道.在每一个泳道可以显示角色名称,表示泳道的内容是此角色进行的相关动作
2.连接器
作用:当活动图太大或者太复杂时,可以使用连接器分割边缘
3.发送信号或接收信号
形状 元素 描述
1 发送信号的操作 (Send Signal Action) 一种可以将消息或信号发送给另一个活动,或同一活动中的并发线程的操作
2 接收信号的操作 一种要在等到消息或信号后才能继续执行的操作
4.连接器
形状 元素 描述
15 对象节点 (Object Node) 表示通过流传递的数据
16 输入插针 (Input Pin) 表示操作执行时可以接收的数据
17 输出插针 (Output Pin) 表示操作执行时生成的数据
18 活动节点参数 (Activity Parameter Node) 一种对象节点,通过该节点活动可以接收或生成数据
四.时序图
形状 元素 描述
1 生命线 (Lifeline) 竖线表示交互期间参与者发生的事件序列,而时间发展沿直线向下
2 参与者 (Actor) 竖线表示交互期间参与者发生的事件序列,而时间发展沿直线向下
3 同步消息 (Synchronous Messages) 在它继续之前,发送者需要等待同步消息响应
4 异步消息 (Asynchronous Message) 在发送者继续之前无需等待响应消息。异步消息仅显示来自发送者的调用,用于表示单独的线程之间的通信或新线程的创建
5 激活 (Activation) 带有阴影的垂直矩形显示在参与者的生命线上并表示参与者执行操作的时间段。执行开始时参与者会收到一条消息。如果初始消息是一个同步消息,则执行以一个返回给发件人的 «返回» 箭头结束。
6 回调消息 (Callback Message) 返回参与者之前调用的消息。结果执行匹配项将出现在现有匹配项的顶部
7 自我消息 (Self Message) 消息从参与者传送到其本身。结果执行匹配项将出现在发送执行的顶部
8 创建消息 (Create Message) 创建参与者的消息。如果参与者收到一个创建消息,则该消息应该是其接收到的第一个消息
9 找到的消息 (Found Message) 来自未知或未指定参与者的异步消息
10 丢失消息 (Lost Message) 向未知或未指定参与者发送的异步消息
12 交互适用 (Interaction Use) 包含在另一个关系图中定义的消息的序列。
13 组合片段 (Combined Fragment) 片断的集合。每个片段可以包含一个或多个消息。
五.状态图
状态图有三要素:
- 状态: 对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的状况或情况.
- 事件: 引起状态变化的事情。状态的转移是由事件触发的.
- 动作: 说明当事件发生时发生了什么行为。动作可由对象的操作和属性构成.
1.活动 该状态时要执行的动作,活动有三个标准事件:
- entry事件:进入该状态时的特定动作(入口动作)
- exit事件:退出该状态时的特定动作(出口动作)
- do事件:在该状态时做的动作
2.转移 描述对象在两种状态间的转变。当某个特定事件发生并且满足特定的条件,对象操作特定的动作,进入另一个状态。
3.事件
事件要求对象做某件事情,这个事情被称为动作。动作改变了对象属性的值,导致对象的状态发生变化。事件与动作既可用于转移中,也可用于单独的状态中。
- 调用事件:调用事件代表对一个对象的操作的调用
- 变化事件:状态中一个变化或某些条件满足时的事件
- 时间事件:时间事件是经过一定的时间或者到达某个时间后发生的事件
4.动作 动作说明了当事件发生时发生了什么行为。动作由对象的操作和属性组成。
- 基本动作
entry (入口动作):进入状态时最先执行的特定动作,不带条件与参数。格式为:entry/动作
exit (出口动作):退出该状态时最后执行的特定动作,不带条件与参数。格式为:exit/动作
- do (内部动作)
用来指定处于某种状态时发生的动作。在入口事件之后,出口事件之前执行的特定动作,格式为: do/动作
UML 画图工具选择
熟话说“工欲善其行,必先利器”,我针对目前三个主流平台: Windows,Mac,Web.整理了当前比较实用的工具:
我个人比较喜欢 ProcessOn,这个是用网站在线画图,更用要的是 ProcessOn 能够创建小组,社区化分享,这个对于团队协作来说最好不过了