编辑导语:UML图是产品经理的一个有效工具,利用UML图,产品经理可以更好地挖掘业务需求,使需求文档更加清晰明了,进而推动团队业务的整体进行。本篇文章里,作者对UML图进行了整体总结,并介绍了各类UML图的相关语法,一起来看一下。
UML为什么能在产品工作中应用?能解决产品经理工作上的哪些痛点?
一、先看图例
是否在工作中见过这些图呢?
是否在偏技术型的文档中见过这些图?
1)这是一张“用户——角色——权限”关联关系图,表达了“表”与“表”之间的关系;属于类图。
2)这是一张拼团产品中“用户——团——权益”的对应关系图,以及每个业务概念的属性字段与操作;同样属于类图。
3)这是一张表达相对独立的功能间的关系图,表达了一个功能模块的输入与输出,及与另一个功能模块间的供需关系;属于构件图。
4)这是一张表达服务器、数据库、使用网络地域范围的部署图。
5)这是一张以“员工申请立项,三个领导审批”事件为主的流程图。
6)这是上图中“审批单”的状态变化图,学名:状态机图。表达了审批单在不同用户的操作下的触发的状态变化。
7)这是一张用户在注册账户过程中“用户——前端界面——后端系统——数据库”之间的交互及信息传递图,学名顺序图,主要用来表达复杂的交互、系统与系统之间的交互。
8)这是一张表达了某系统范围内三种角色各自可操作的用例,以及角色与角色之间的继承关系,属于用例图。
看完上面7种图,感觉流程图最熟悉了,其他的几种图似曾相识。那么,其他的图有什么作用呢?先看看我们工作中的痛点。
二、产品经理工作中的痛点
- 业务分析时,范围不清晰、逻辑不严谨,或自己的方案超出技术边界。
- 刚接手一个产品时,弄不清一个概念与另一个概念的对应关系、关联关系,同事也不能系统地给你讲述全面。
- 需求文档中,文字描述很清楚,但程序员搞不清楚也不爱看文字。
- 经常听到程序员说:我们没有这张表、没有这个字段,这个表不能再加字段了。
- 和程序员讨论最多的也是:如果用户这样操作了该显示什么状态?该怎么提示?
怎么才能在避免这些问题呢—— 利用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)类图建模的步骤
- 识别类,先记下类的名称;
- 识别出类的主要属性、操作;
- 描绘出类之间的关系;
- 对各类进行分析、抽象、整理。
这个图是网上找的,箭头使用不是很规范。切记要使用类图语法中的箭头。
2. 构件图
1)什么是构件?
2)语法
① 一个构件符号如下。服务接口像一个手一个拳头,可联系记忆为:伸手要服务,出拳打人服务。
② 两个构件之间的对接如下:
③ 示例如下:
3. 部署图
产品经理一般需要搞清楚:
- 服务器部署在哪里?数据库放在哪里?
- 是互联网还是局域网?
4. 活动图(流程图)
活动图比较常用,不做太多讲述,但在画图时一定要规范,如每个活动用“主动宾”的表达方式,当采用泳道图,有角色泳道时,可以省略“主语”。
1)语法
2)绘制步骤
- 明确该流程要表达怎么样的业务目的?
- 该流程有什么角色?
- 画出正常情况下的流程,是流程的主干,一般是线性的流程。
- 明确主干流程中的角色与活动。
- 逐步增加分支流程,将关键的流程分支画出,部分异常流程可简单画出并用文字说明。
- 适当控制活动粒度。
- 优化流程。
5. 状态机图
状态机图是从某个事物的状态是如何变化的角度来展示流程。在触发行为描述时也要严格采用“主动宾”的表达方式。
1)语法
- 开始状态。
- 结束状态。
- 状态框:一个圆角矩形框代表一个状态,框内文字为状态名称。
- 转换:状态与状态之间的箭头叫做转换,箭头上的文字说明发生了什么事情导致状态发生了变化。
2)步骤
- 状态机图与流程图的目的相似,只不过是以某一事物为主,所以开始时先画流程图,根据流程图画状态机图;
- 明确参与的角色;
- 明确该事物有什么状态;
- 明确状态在什么角色的什么动作下触发变化。
6. 顺序图
1)基本语法
顺序图的读法是:从上到下,从左到右。如下案列:
此图为我们在ATM取款机取款时的人机交互。
2)复杂语法
- loop:为循环语法,如果满足循环条件,则重复执行本框里的内容。
- alt:条件语法,相当于if……else……语法,即满足哪个条件就执行这个条件下的动作。
- opt:可选语法,如果满足可选条件,就执行框中的内容,否则跳过不执行。
如下案例:还是我们在ATM取款机取款时的人机交互,只是更为复杂些。表述了只要输入密码就检查密码合法性,当输错超过三次时吞卡。密码正确时直接给与顾客菜单。
3)步骤
- 针对某一条流程中分析各角色的交互方式时;
- 先分析有哪些角色参与这个流程;
- 分析各角色在这个流程中的职责,各角色的专业特色;
- 将流程分解为角色与角色之间的交互,想清楚各角色之间的“接口”是怎样的;
- 用顺序图按照时间顺序将“交互”动作组织起来;
- 适当控制好粒度,不断优化和重组。有太复杂分支机构的流程不适用。
4)备注
一般产品经理可以不用画复杂语法的内容,只需要画出关键重点交互即可,如下:
7. 用例图
用例图主要用来回答两个问题——这个系统的用户角色有哪些?每个角色能干什么?
1)基本语法
角色、用例、系统范围、关联关系。
2)复杂语法
角色的继承、用例的继承、用例的include、用例的extend。
3)步骤
- 明确系统范围;
- 有什么角色,角色与角色之间关系;
- 有什么用例,角色与用例之间关系,用例的子用例及扩展。