全面详解UML
前言
哈喽,我是janker。
每次评审技术方案设计的时候,常常会以为自己画图不够专业而心虚。我常因为画图不够专业,而感到和你们各个不如。归根结底还是我对这些系统建模语言不够熟悉。写本篇文章的目的是想帮助大家也是自己快速理解 UML ,找到系统设计的抓手。本文约2千字左右并插入了大量例图,通读大约需要20-30分钟左右,本文可以收藏便于下次查阅。
个人想法:想快速系统掌握一门知识,虽然从互联网上可以搜索到很多相关内容,但都是碎片化 的,有些甚至还会出错误导自己的思路,从而浪费时间。总结:求知还是要买一本书或一份资料系统的学习才高效并节约成本的方式。
正文
UML是什么
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
UML的分类
UML 有很多种,但大体分为两类:结构型的UML 和 行为型的UML
| 类型 | UML | 用途 |
|---|---|---|
结构型的图(Structure Diagram) | 类图(Class Diagram) | 分析业务概念 |
结构型的图(Structure Diagram) | 对象图(Object Diagram) | 基本不用 |
结构型的图(Structure Diagram) | 包图(Packet Diagram) | 很少使用 |
结构型的图(Structure Diagram) | 构件图(Component Diagram) | 分析 IT 基础架构、软件架构等方面的需求 |
结构型的图(Structure Diagram) | 部署图(Deployment Diagram) | 分析 IT 基础架构、软件架构等方面的需求 |
行为型的图(Behavior Diagram) | 用例图(Use Case Diagram) | 描述系统的行为 |
行为型的图(Behavior Diagram) | 活动图(Activity Diagram) | 分析业务流程(最常用) |
行为型的图(Behavior Diagram) | 顺序图(时序图)(Sequence Diagram) | 分析业务流程(最常用) |
行为型的图(Behavior Diagram) | 状态机图(State Machine Diagram) | 分析业务流程(最常用) |
行为型的图(Behavior Diagram) | 通信图(Communication Diagram) | 基本不用 |
行为型的图(Behavior Diagram) | 时间图(Timing Diagram) | 基本不用 |
从实用的角度和常用的角度出发一一介绍UML
1 类图
1.1 什么是类图?
类图是业务结构建模的重要工具,可以表达类、接口以及类之间的静态结构和关系。
1.2 类之间的关系
类之间的关联关系
类之间的包含关系
类之间的继承关系
类之间的依赖关系
1.3 类之间的递归关系
1.4 类之间的“三角”关系
2 对象图
2.1 什么是对象图?
类(class)的实例(instance)就是对象。
2.2 类和对象的对比
类图和对象图的对比
3 活动图
3.1 什么是活动图?
活动图本质上也是一种流程图,可以描述系统的工作流程和并发行为。
3.2 活动图的基本语法
| 图形符号 | 释义 |
|---|---|
| 开始 | |
| 结束 | |
| 活动 | |
| 判断、合并 |
3.3 基本活动图
3.4 活动图中关于判断的三种处理方法
- 在判断菱形旁边写下判断的句子。
-
不需要写判断的内容,直接通过监护来表示这个判断(如3.3)。
-
在判断菱形之前增加一个活动,表明判断的动作,而判断菱形不需要写判断的句子。
3.5 活动图多层分支的表达方式
3.6 活动图泳道分区
3.7 并行的活动
- 并行的图形符号
| 图形符号 | 释义 |
|---|---|
| 并行 |
- 并行活动图示例
3.8 连接件
有时候活动图很大,一张纸画不下,那么就需要另外一张纸继续画下去。
左边的符号箭头指向A,表示活动图到这里要转到另外一张图,右边的符号由A开始指出一个箭头表示继续活动图
连接件的图形符号:
| 图形符号 | 释义 |
|---|---|
| 连接件 |
4 状态机图
4.1 什么是状态机图?
很多资料中叫“状态图”其实标准语法是“状态机图”。用于描述一个对象的所有状态和状态之间的转换。
4.2 “活动图”和“状态机图”圆角框的区别
4.3 用实例说明流程图和状态机图的区别
- 请假流程活动图
- 请假活动状态机图
4.4 多级审批的状态机图案例
5 顺序图
5.1 什么是顺序图?
顺序图也是一种动态建模方法(跟流程图、活动图一样)。优点在于更善于表达多个角色展开交互时的流程。
5.2 顺序图基本语法
5.3 仅用消息的形式表达
5.4 用消息+返回值的形式表达
5.5 顺序图VS活动图
- 用顺序图表达购买地铁票
- 用活动图表达购买地铁票
5.6 顺序图的循环及分支结构
-
Loop(循环):如果满足“循环条件”就重复执行框中内容。
-
Alt(条件分支):如果满足“条件1”就执行上部分内容,如果满足“条件2”就执行下部分内容。如果有多个条件依次类推。
-
opt(可选分支):如果满足“条件”就执行框中内容,否则就跳过去。
5.7 顺序图的循环及分支案例
6 通信图
6.1 什么是通信图
“通信图”是“顺序图”的另外一种表示方式。
6.2 通信图案例
7 时间图
7.1 什么是时间图?
时间图,用于表示某东西的状态随时间变化而变化。
7.2 时间图样例
8 用例图
8.1 什么是用例图?
用例图是用户与系统交互的最简表示形式,可以展现用户和与他相关的用例之间的关系。
8.2 用例图的基本语法
8.3 用例图的基本用法
8.4 用例图举例
8.5 输入和导出用例图
8.6 用例图的Include
8.7 用例图的extend
8.8 角色的继承
8.9 用例的继承
8.10 用例表模板
如果用例图不能详细地说明需求,每个用例图就需要填写一个用例表
9 包图
9.1 什么是包图?
包图是将UML图进行“打包”的一种图,能帮助我们有效组织好各种UML图和表达的思路,同时包图也是进行软件架构设计的有力工具。
9.2 包图的基本表达方式
9.3 包图的依赖关系
9.5 用包图进行的架构设计
10 部署图
10.1 什么是部署图?
部署图主要是在物理的层次上做整体的系统规划,跟拓扑图相比,部署图可以细化设计。
10.2 部署图与拓扑图的区别
- 拓扑图
- 部署图
11 构件图
11.1 什么是构件图?
“构件图”也叫“组件图”,是物理上独立的东西,他可以单独维护、升级、替换。
11.2 构件图的基本用法
11.3 构件图和部署图捆绑用法
写在末尾
UML 不仅在做系统设计中我们会用到,在整个软件开发周期,它作为一种跟其他协作方交互的统一语言,这种通用的语言跟编程语言无关,更多的是大家的统一共识。画让大家统一能理解的图表,是每个开发人员必备的技能。
希望能帮到大家,同时也欢迎大家提问、补充……
欢迎点赞、关注、转发、评论。