UML的全称是Unified Modeling Language,翻译过来就是统一建模语言。
UML可以很有效的帮助产品经理或产品设计师进行前期的产品需求分析与产品的设计。在我们梳理项目的业务流程时就会用到活动图,在我们整理系统功能时就会用到用例图,在我们与客户面对面进行沟通调研时用例图、活动图、顺序图等UML可以使得沟通变得更加顺畅。
UML图
开始介绍几种在需求分析和设计阶段会用到的UML图。
1. 流程图
(1)什么是流程图?
流程中包含一个个活动,在业务系统中强调从活动到活动的控制流。
这里的活动,可以指企业的活动,也可以指应用程序中的活动。因此,也可说活动图是用来陈述活动与活动之间的流程控制的迁移。
(2)流程图的画法
流程图的绘制涉及几个重要的元素:
起始点:是一连串活动的开始点,在一个流程图中,有且只有一个起始点。
起始点的图示:
结束点:是一连串活动的终结点,在一个流程图中,可以有多个结束点。
结束点的图示:
活动:是活动图最核心的元素,指人或系统的一连串执行细节。比如,用户在淘宝APP内的“要求退货”就是一个活动,在这个活动中,可能会包括用户的一连串的动作——比如“打开APP、进入订单页面”等,但是这些细节都要通过“要求退货”这个活动来表达。
活动的图示:
迁移:代表流程控制权的迁移,当某一个活动结束后,流程的控制权就通过迁移给另一个活动。如下图:
分支:代表一个判断的准则,以菱形块表示。当指定一个分支时,从分支连接出去的迁移必须要有必要条件,这在UML中称为约束。在UML中,使用“[]”来表示约束:
分叉以及会合:代表对于后续活动的同步处理,这也是活动图区分与流程图的关键一点。当某个活动结束后,需要同时进行两个以上的活动,此时需要用分叉来表达;而当某个活动必须要等其前置的多个活动完成后方可执行,此时会用会合来表达。
分叉与会合的图示都是:
通常来说,分叉与会合会搭配出现,当活动图中出现了分叉点,那么在后续的某个特定环节必定会有会合点。
泳道:对于产品经理来说并不陌生,利用泳道可以分配对应的角色,可以帮助我们清晰地知道发起活动的角色是谁。
2. 用例图
(1)什么是用例?
用例也代表着一个具体的业务场景。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。因此,我们可以使用用例图系统地表达软件系统的绝大部分功能性需求。
(2)用例图的画法
用例通常会用一个椭圆形表示:
执行者/角色:即是扮演着某个角色的用户或系统,执行者通常版扮演者对于产品或系统来说有实际作用的用户或其他系统。
在UML中,执行者的图示如下:
系统边界:展示了系统的内外之分,明确的划分了开发过程中需要关心和不需要关心的边界。系统边界的图示:
泛化:执行者之间可以有泛化关系,泛化关系可以简单理解为继承关系——比如:职员拥有“申请开票”功能,经理拥有“申请开票、审核”功能,那么经理类就可以是职员类泛化生成的。用例之间也会具有泛化关系,比如“筛选用例”可以泛化出“按播放量”和“按订阅数”的用例。
泛化通常是子类指向基类:
关联:执行者与用例之间,只能有关联的关系。
关联用来连接执行者和用例:
扩展:扩展是用例与用例之间的关系,指的是一个用例的扩展功能——比如:“登录”用例的扩展用例是“忘记密码”,这个“忘记密码”功能不一定会使用。
扩展一般使用extend表示(注意箭头方向):
包括:区别于扩展,包括指的是一个用例内,包括的子用例——比如:“角色管理”用例包括“创建角色”、“查询角色”等用例。
包括使用include表示(注意箭头方向):
用例图范例:
3. 序列图
(1)什么是序列图?
序列图也叫顺序图,序列图最主要的目的就是表达对象与对象之间是如何沟通与协作的。
用例常常被细化为一个或者更多的序列图,同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。
(2)序列图的画法
序列图涉及到的几个重要元素:
对象:在序列图中,每个参与部分都是对象。在序列图中,主要是以“对象名称”的方式来表述。
图示:
消息:对象与对象之间只能通过消息来进行联系,消息可以理解为对象的某一个操作。消息分为同步消息、异步消息和自关联消息,同步消息需要同步等待消息。
图示为:
异步发送消息时不需要等待,图示为:
自关联消息是对象给自身发送消息,图示为:
约束:是对象与对象之间进行消息交互式的约束条件,也就是要完成此次消息交互必须需要的条件约束,
约束通常使用“[]”表示。
序列图范例:
4、状态机图
状态机图从某个对象的状态是如何变化的角度来展示流程的,是一种由状态、变迁、事件和活动组成的状态机,用来描述类的对象所有可能的状态以及时间发生时状态的转移条件。
在产品的需求分析中,如果一个流程是围绕某一事物/对象的状态变化而展开时,我们应该优先使用状态机图。
比如:常见的订单流程就可以使用订单的状态图来表示订单对象的流程。再比如,在请假系统中,请假条的状态变化流程也可以用状态机图来进行分析。
状态机图范例:
5. 类图
类:图中最重要的就是类,类是由名称、属性和操作组成。属性可以简单理解为这个类包括的字段,操作就是该类可以实现的方法。
图示如下:
类图中最为重要的,就是类之间的关系,UML类图中有六大关系。
关联关系:类与类之间最基本的关系。关联表达了两个类的对象之间的结构性关系,比如老师类与课程类之间有一个关联,那么就代表着一个老师一定会管理着一个学生(一对一家教或多对多的学习)。
关联的图示:
泛化:在用例图中我们介绍过泛化,同理,类与类之间的泛化关系也可以理解为继承,也就是特殊类与一般类之间的关系。泛化图示,通常为子类指向基类:
实现:是一种类与接口的关系,表示类是接口所有特征和行为的实现。可以理解为,类通过接口实现了什么功能。
实现的图示:
依赖:是一种使用关系,比如司机使用汽车。
依赖的图示:
聚合:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合的图示:
类图例子: