UML入门使用指南
UML可以理解为一种标准化建模语言,主要用于系统描述与业务建模,那么,如何使用UML?这篇文章里,作者就进行了拆解分析,并对类图、用例图等类型进行详解,一起来看看吧。
一、WHAT?
什么是UML?
从网上了解到的UML的定义:UML(Unified Modeling Language)是统一建模语言的缩写,是一种标准化建模语言,由一组集成图组成,旨在帮助系统和软件开发人员指定、可视化、构建和记录软件系统的工件,以及用于业务建模和其他非软件系统。
从定义中了解到的关键字为UML是一种标准化建模语言,包含各种可视化集成图,主要用于系统描述和业务建模。
二、WHY?
为什么需要UML?
在需求沟通方面,系统研发过程中包含了各类参与者,包含项目经理、产品经理、研发和测试,使用UML在于信息交互时的标准化,标准化的信息可以最大限度的降低沟通成本和减少沟通漏斗。
在系统设计方面,在使用UML时,可对现实中的业务需求,通过建模,将现实生活中的业务活动真实映射到对应的图形中,最大程度还原业务需求。
在系统描述方面,通过UML的静态和动态图形(语言),可以让阅读者最快速、最全面的了解到整个系统是如何构成和运行的。
三、HOW?
如何使用UML?
UML是开发面向对象软件和软件开发过程中非常重要的一部分,分为结构型和行为型的图。
1. 结构型
结构型(structure diagram):结构型的图描述是某种结构,这种结构在某段时间内应该是稳定的、“静态”的。
结构型图包含类图(class diagram)、对象图(object diagram)、结构图(component diagram)、部署图(deployment diagram)和包图(package diagram)。
类图为必须会的结构型图,主用作分析业务概念。
结构图、部署图主用作分析IT基础架构、软件架构。
对象图、包图则很少使用。
2. 行为型
行为型(behavior diagram)的图描述的是某种行为,是“动态”的。
行为型图包含活动图(activity diagram)、状态机图(state diagram)、时序图(sequence diagram)、通信图(communication diagram)和用例图(use case diagram)。
活动图、状态机图、时序图为必须会的行为型图,主用作分析业务流程,大部分情况下至少会用到其中两种图。
用例图也为必须会的行为型图。
通信图则很少使用。
由此可见,掌握UML中的20%,就能解决需求分析中的80%的问题。
不同图形的使用,没有规定的先后顺序,但一定会交叉使用,不断迭代对应的图形,最终得到终版。
3.1 类图
类图是锻炼面向对象分析和面向对象设计思想的重要工具,是业务结构建模的重要工具,也是其他图形的基础。
类图是用来展示系统中类的静态结构和类之间的关系,类图中的基础元素包含类和接口。
1)结构
类图分为三层去表示,第一层为类名称、第二层为类属性、第三层为类的方法。
在需求分析过程中,均使用中文即可,类的属性值和方法值类型可根据自己的要求去补充。
值类型为字符串(string)、日期(date)、整数(int)、小数(double)和布尔(boolean)类型。
2)关系
类图包含3类5种关系,包含泛化 (Generalization) 、实现(Realization)和关联(Association)三大类,关联关系又包含聚合 (Aggregation)、组合(Composition)和依赖(Dependency)。
a)泛化
关系说明:类的泛化是将具体抽象成抽象类,抽象类表示这种类是提炼出来的一种概念,不是具体存在的,具体类具有抽象类的属性和方法,可用‘is a’理解。
表示方法:由继承类(具体类)实线空心箭头指向被继承类(抽象类)。
举例说明:学生 is 用户。
b)关联
关系说明:关联是一种拥有关系,关联可以是单向的也可以是双向的,单向关联只会有一个箭头,双向关联可以两个箭头或者没有箭头。
表示方法:由拥有者实线实心箭头指向被拥有者。
多重性:多重性表达在连线末端,表示两个类之间的数量关系。
- 数字:精确的数量
- *或者0..*:表示0到多个
- 0..1:表示0或者1个
- 1..*:表示1到多个
举例说明:老师拥有学生,老师可以拥有很多学生,学生也可以有很多老师,所以二者是双向关联。
c)聚合
关系说明:聚合是整体和部分的一种关系,部分可以脱离整体而存在,整体和部分各自有自己的生命周期,可用‘has a’理解。
表示方法:由部分实线空心棱形箭头指向整体。
多重性:多重性表达在连线末端,表示两个类之间的数量关系。
- 数字:精确的数量
- *或者0..*:表示0到多个
- 0..1:表示0或者1个
- 1..*:表示1到多个
举例说明:部门和员工的关系,部门可以有多名员工,员工也可属于多个部门,部门的撤销并不会导致员工的消失。
d)组合
关系说明:聚合是整体和部分的一种关系,部分不可脱离整体而存在,部分依托于整体,可用‘contains a’理解。
表示方法:由部分实线实心棱形箭头指向整体。
多重性:多重性表达在连线末端,表示两个类之间的数量关系。
- 数字:精确的数量
- *或者0..*:表示0到多个
- 0..1:表示0或者1个
- 1..*:表示1到多个
举例说明:员工和员工卡的关系,员工可以没有或者一张员工卡,员工卡也只可属于某一个员工,不可属于多名员工。
e)依赖
关系说明:依赖是两个类的弱关联关系,是偶发性的,可用‘use a’理解。
表示方法:由使用方虚线箭头指向被使用方。
举例说明:员工和笔的关系,在某些需要书写的场景员工会使用笔。
f)实现
关系说明:实现为接口和类的关系,需求分析时用的较少。
表示方法:由类虚线空心三角箭头指向接口。
举例说明:登录接口实现员工的登录。
3)类图的使用
类图分析需求基本步骤:
- 识别出类
- 识别出类的基本属性
- 描绘出类之间的关系
- 对各类进行分析、抽象、整理
在使用类图的过程中,类之间的关系是因实际不同的业务形态,关系也会有所不同。
例如,针对车和轮胎这两类。
在二手车场景中,二者就是聚合关系。轮胎是车辆的组成部分,但是车也可以替换轮胎,替换下来的轮胎也可给其他车辆使用。
在车辆运行场景中,二者就是组合关系,车脱离轮胎后将无法运行。
因此,在类图的使用过程中,一定要注重业务形态。
3.2 用例图
用例图是旨在描述系统使用用户眼中系统的功能行为。
用例图需包含参与者(actor)、用例(use case)和用例之间的关系(association)。
1)参与者
参与者表示参与和使用系统的一类角色。例如,用户就是商城系统的参与者。
要精准把握参与者,需要注意以下几点:
- 参与者位于系统之外,自身不属于系统结构之中;
- 参与者是抽象的一类角色,而不是具体的对象。例如,即用户是参与者,但是具体的用户‘张三’不是参与者;
- 参与者不一定是人,也可是外部系统。例如,wms系统也可能是商城系统的参与者。
UML中用一个人表示参与者,可对不同的参与者进行命名。
2)用例
每一个椭圆表示一个用例,每个用例表示系统提供的一类功能。
3)关系
用例之间的关系包含三种,分别是包含、继承和拓展。
a)包含
关系说明:包含关系表示主用例包含子用例。
表示方法:由主用例虚线实心箭头指向子用例,虚线上标注《include》。
举例说明:用户在账密登录的时候,包含输入账号、输入密码、确认登陆这三个子用例。
b)继承
继承分为用例的继承和角色的继承。
① 用例的继承
关系说明:继承关系的两个例子所处不同抽象层,被继承的用例是继承用例更抽象的用例。
表示方法:由继承用例(具体用例)实线空心箭头指向被继承用例(抽象用例),实线线上不标注内容。
举例说明:用户在登录系统的时候,可以有账密登录、微信扫码登录这两种方式。
② 角色的继承
关系说明:继承者是对被继承者的更具体的角色,继承者拥有被继承者的所有用例,且继承者具备特有用例。
表示方法:由继承者实线空心箭头指向被继承者,实线线上不标注内容。
举例说明:普通用户只有查看数据的权限,高级用户还会有管理数据的权限。
c)拓展
关系说明:拓展关系是在基础用例上在特定场景下功能拓展,拓展用例是对基础用例的补充。
表示方法:由拓展用例实线实心箭头指向基础用例,实线线上标注《extend》。
举例说明:用户在登录系统的时候,在忘记密码的情况下可以有忘记密码这个操作。
3.3 活动图
1)元素
活动图也就是平常我们所说的流程图,具体元素包含以下:
- 开始节点:实心圆,表示活动图的开始,一个活动图中仅有一个
- 结束节点:圆圈内加个实心圆,表示活动图的结束,一个活动图中可以有多个
- 活动:圆角矩形,表示活动
- 转换:实线箭头,两个活动上一活动指向下一活动
- 分支和监护条件:棱形表示分支,分支连接的转换上标注监护条件
- 分叉/汇合:分叉表示两个或者多个并发运行的分支,每个分支都是相互独立;汇合表示两个或者多个分支全部完成之后,才可进入下一节点
2)活动图的使用
例如:比如在申请加盟商入驻的场景,文字版描述如下:
- 加盟商需申请入驻平台
- 入驻平台前需先完成个人资料维护、公司资料的维护
- 后台人员需对资料进行审核,审核通过则入驻完成,审核不通过则需重新维护资料
3.4 状态机图
状态机图描述了一个的对象在生命周期内的各种状态和对应的转换条件,配合活动图能简洁扼要的描述对应的业务流程。
1)元素
状态机图包含元素如下:
- 开始状态:实心圆,表示状态机图的开始,一个状态机图中仅有一个
- 结束状态:圆圈内加个实心圆,表示状态机图的结束,一个状态机图中可以有多个
- 状态:圆角矩形,表示状态
- 转换:实线箭头,表示两个状态之间的关系,当满足事件时,由上一个状态指向下一个状态
- 事件:标注在实线箭头之上,表示特定的动作或行为
2)状态机图的使用
上例在申请加盟商入驻的场景中状态机图如下:
3.5 时序图
也就是顺序图,强调时间维度下不同对象的消息交互。
1)元素
时序图的元素包含如下:
- 对象/生命线:表示参与交互的对象。每个对象下方都连接着一条生命线(虚线),时序图中可以包含多个对象/生命线
- 会话:对象被激活时,生命线上会出现一个长条,即会话,表示一次交互。
- 消息:表示对象间的消息通信,由一个对象的生命线指向另一个对象的生命线,包含调用消息和返回消息,其中返回消息分为同步消息和异步消息:
2)时序图的使用
在用户登录的场景,文字版描述如下:
- 用户在系统登录页「输入账密」
- 用户「点击登录」按钮
- 登录模块「发送登录数据」到权限验证模块
- 用户模块对登录数据进行「权限验证」
- 验证成功,则系统「进入主页面」;验证失败,则「清空密码」并且「提示密码错误」
四、总结
本文从WHAT、WHY和HOW三个维度介绍了UML,从这三方面读者能对UML有个粗略的认识。
类图、用例图、活动图、状态机图和时序图这五种使用频率较高的图熟练使用后,应该算是基础入门了,对于需求分析也许会有较大的帮助,也许没有,这些都因人而异。
UML终究是一种思考方式,了解了基础使用之后,还是要多实践。
这篇文章于我而言算是阶段性的总结,希望对你也有用。
本文由@没汤圆啦 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自 Unsplash,基于 CC0 协议
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。提供信息存储空间服务。
感谢!学习了!目前没看到比你写得更清楚更好懂的了,你一定是位优秀的产品经理!
组合那块的关系说明写错了