UML入门使用指南

什么是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)关联

关系说明:关联是一种拥有关系,关联可以是单向的也可以是双向的,单向关联只会有一个箭头,双向关联可以两个箭头或者没有箭头。

表示方法:由拥有者实线实心箭头指向被拥有者。

多重性:多重性表达在连线末端,表示两个类之间的数量关系。

举例说明:老师拥有学生,老师可以拥有很多学生,学生也可以有很多老师,所以二者是双向关联。

c)聚合

关系说明:聚合是整体和部分的一种关系,部分可以脱离整体而存在,整体和部分各自有自己的生命周期,可用‘has a’理解。

表示方法:由部分实线空心棱形箭头指向整体。

多重性:多重性表达在连线末端,表示两个类之间的数量关系。

举例说明:部门和员工的关系,部门可以有多名员工,员工也可属于多个部门,部门的撤销并不会导致员工的消失。

d)组合

关系说明:聚合是整体和部分的一种关系,部分不可脱离整体而存在,部分依托于整体,可用‘contains a’理解。

表示方法:由部分实线实心棱形箭头指向整体。

多重性:多重性表达在连线末端,表示两个类之间的数量关系。

举例说明:员工和员工卡的关系,员工可以没有或者一张员工卡,员工卡也只可属于某一个员工,不可属于多名员工。

e)依赖

关系说明:依赖是两个类的弱关联关系,是偶发性的,可用‘use a’理解。

表示方法:由使用方虚线箭头指向被使用方。

举例说明:员工和笔的关系,在某些需要书写的场景员工会使用笔。

f)实现

关系说明:实现为接口和类的关系,需求分析时用的较少。

表示方法:由类虚线空心三角箭头指向接口。

举例说明:登录接口实现员工的登录。

3)类图的使用

类图分析需求基本步骤:

在使用类图的过程中,类之间的关系是因实际不同的业务形态,关系也会有所不同。

例如,针对车和轮胎这两类。

在二手车场景中,二者就是聚合关系。轮胎是车辆的组成部分,但是车也可以替换轮胎,替换下来的轮胎也可给其他车辆使用。

在车辆运行场景中,二者就是组合关系,车脱离轮胎后将无法运行。

因此,在类图的使用过程中,一定要注重业务形态。

3.2 用例图

用例图是旨在描述系统使用用户眼中系统的功能行为。

用例图需包含参与者(actor)、用例(use case)和用例之间的关系(association)。

1)参与者

参与者表示参与和使用系统的一类角色。例如,用户就是商城系统的参与者。

要精准把握参与者,需要注意以下几点:

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 协议

提供信息存储空间服务。