编辑导语:UML图是产品经理的一个有效工具,利用UML图,产品经理可以更好地挖掘业务需求,使需求文档更加清晰明了,进而推动团队业务的整体进行。本篇文章里,作者对UML图进行了整体总结,并介绍了各类UML图的相关语法,一起来看一下。

UML为什么能在产品工作中应用?能解决产品经理工作上的哪些痛点?

一、先看图例

是否在工作中见过这些图呢?

是否在偏技术型的文档中见过这些图?

1)这是一张“用户——角色——权限”关联关系图,表达了“表”与“表”之间的关系;属于类图。

2)这是一张拼团产品中“用户——团——权益”的对应关系图,以及每个业务概念的属性字段与操作;同样属于类图。

3)这是一张表达相对独立的功能间的关系图,表达了一个功能模块的输入与输出,及与另一个功能模块间的供需关系;属于构件图。

4)这是一张表达服务器、数据库、使用网络地域范围的部署图。

5)这是一张以“员工申请立项,三个领导审批”事件为主的流程图。

6)这是上图中“审批单”的状态变化图,学名:状态机图。表达了审批单在不同用户的操作下的触发的状态变化。

7)这是一张用户在注册账户过程中“用户——前端界面——后端系统——数据库”之间的交互及信息传递图,学名顺序图,主要用来表达复杂的交互、系统与系统之间的交互。

8)这是一张表达了某系统范围内三种角色各自可操作的用例,以及角色与角色之间的继承关系,属于用例图。

看完上面7种图,感觉流程图最熟悉了,其他的几种图似曾相识。那么,其他的图有什么作用呢?先看看我们工作中的痛点。

二、产品经理工作中的痛点

  1. 业务分析时,范围不清晰、逻辑不严谨,或自己的方案超出技术边界。
  2. 刚接手一个产品时,弄不清一个概念与另一个概念的对应关系、关联关系,同事也不能系统地给你讲述全面。
  3. 需求文档中,文字描述很清楚,但程序员搞不清楚也不爱看文字。
  4. 经常听到程序员说:我们没有这张表、没有这个字段,这个表不能再加字段了。
  5. 和程序员讨论最多的也是:如果用户这样操作了该显示什么状态?该怎么提示?

怎么才能在避免这些问题呢—— 利用UML作为沟通语言、利用UML图作为思考工具。

三、UML是什么

1. What:是什么?

  • UML,Unified Modeling Language,统一建模语言。
  • 建模的输出主要是图的形式,分为两类,一种是结构型图、一种是行为型图。
  • 我们常画的流程图就是一种行为型的UML。

2. Who:谁来用?

  • 产品经理(需求分析时可画出简易版的UML图);
  • 程序员(学技术的都能看懂ULM,甚至可以和程序员一起完善UML)。

3. When:产品经理什么时候用到UML?

  • 业务分析提炼需求、挖掘需求时;
  • 与技术人员交流时。

4. Where:用在什么地方?

需求文档。

5. Why:为什么要用?

  • 作为一种工具可以帮助产品经理完整无遗漏地梳理需求。
  • 作为一种语言,可以清晰易懂,与技术人员顺畅沟通。
  • 作为以图形为主的语言,更形象易懂。

四、产品工作中常用的UML有哪些?

最常用的是:流程图、状态机图、顺序图、用例图、类图。

五、各类UML图的语法

学习网站:http://www.uml.org.cn/oobject/OObject.asp

学习书籍:《UML大战需求分析》,作者:火球

1. 类图

1)什么是类

类是面向对象的,里面有属性、有操作。通俗讲一个类就是一个业务概念、就是一张表。

在表达类与类之间关系时,一般隐藏属性和操作,只用类名代表一个类。

2)语法

在类图的表达中,一定要注意箭头的区别。

① 关联关系

a)用直线相连接,代表两个类之间有关联关系,当不确定具体关系时,均先用直线链接;直线两端的数字代表对应的数量关系,如下:

代表1个G可以0~3个M,如一个拼团除了团长可以有0~3个团员。

b)导航关系

代表由A可以导航到B,通俗讲是由A可以找到B,如:在拼团名单中可以找到参与用户。

② 聚合关系,即弱包含关系

代表一个部门可以由多个员工组成,如果部门没了,员工可继续存在。

③ 组合关系,即强包含关系

代表一个部门可以由多个员工组成,如果部门没了,员工也就没了。

④ 泛化关系

代表A泛化为B,A具备B的特点,也有自己的特有特点,如香蕉泛化为水果。

⑤ 依赖关系

代表A依赖于B,对于某件事,A需要B的协助才能完成。

3)类图建模的步骤

  1. 识别类,先记下类的名称;
  2. 识别出类的主要属性、操作;
  3. 描绘出类之间的关系;
  4. 对各类进行分析、抽象、整理。

这个图是网上找的,箭头使用不是很规范。切记要使用类图语法中的箭头。

2. 构件图

1)什么是构件?

2)语法

① 一个构件符号如下。服务接口像一个手一个拳头,可联系记忆为:伸手要服务,出拳打人服务。

② 两个构件之间的对接如下:

③ 示例如下:

3. 部署图

产品经理一般需要搞清楚:

  1. 服务器部署在哪里?数据库放在哪里?
  2. 是互联网还是局域网?

4. 活动图(流程图)

活动图比较常用,不做太多讲述,但在画图时一定要规范,如每个活动用“主动宾”的表达方式,当采用泳道图,有角色泳道时,可以省略“主语”。

1)语法

2)绘制步骤

  • 明确该流程要表达怎么样的业务目的?
  • 该流程有什么角色?
  • 画出正常情况下的流程,是流程的主干,一般是线性的流程。
  • 明确主干流程中的角色与活动。
  • 逐步增加分支流程,将关键的流程分支画出,部分异常流程可简单画出并用文字说明。
  • 适当控制活动粒度。
  • 优化流程。

5. 状态机图

状态机图是从某个事物的状态是如何变化的角度来展示流程。在触发行为描述时也要严格采用“主动宾”的表达方式。

1)语法

  • 开始状态。
  • 结束状态。
  • 状态框:一个圆角矩形框代表一个状态,框内文字为状态名称。
  • 转换:状态与状态之间的箭头叫做转换,箭头上的文字说明发生了什么事情导致状态发生了变化。

2)步骤

  • 状态机图与流程图的目的相似,只不过是以某一事物为主,所以开始时先画流程图,根据流程图画状态机图;
  • 明确参与的角色;
  • 明确该事物有什么状态;
  • 明确状态在什么角色的什么动作下触发变化。

6. 顺序图

1)基本语法

顺序图的读法是:从上到下,从左到右。如下案列:

此图为我们在ATM取款机取款时的人机交互。

2)复杂语法

  • loop:为循环语法,如果满足循环条件,则重复执行本框里的内容。
  • alt:条件语法,相当于if……else……语法,即满足哪个条件就执行这个条件下的动作。
  • opt:可选语法,如果满足可选条件,就执行框中的内容,否则跳过不执行。

如下案例:还是我们在ATM取款机取款时的人机交互,只是更为复杂些。表述了只要输入密码就检查密码合法性,当输错超过三次时吞卡。密码正确时直接给与顾客菜单。

3)步骤

  • 针对某一条流程中分析各角色的交互方式时;
  • 先分析有哪些角色参与这个流程;
  • 分析各角色在这个流程中的职责,各角色的专业特色;
  • 将流程分解为角色与角色之间的交互,想清楚各角色之间的“接口”是怎样的;
  • 用顺序图按照时间顺序将“交互”动作组织起来;
  • 适当控制好粒度,不断优化和重组。有太复杂分支机构的流程不适用。

4)备注

一般产品经理可以不用画复杂语法的内容,只需要画出关键重点交互即可,如下:

7. 用例图

用例图主要用来回答两个问题——这个系统的用户角色有哪些?每个角色能干什么?

1)基本语法

角色、用例、系统范围、关联关系。

2)复杂语法

角色的继承、用例的继承、用例的include、用例的extend。

3)步骤

  • 明确系统范围;
  • 有什么角色,角色与角色之间关系;
  • 有什么用例,角色与用例之间关系,用例的子用例及扩展。