产品经理常用的UML建模图形
Posted Product Manager
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了产品经理常用的UML建模图形相关的知识,希望对你有一定的参考价值。
UML基础知识扫盲
UML 全称是 Unified Modeling Language,直接翻译过来就是统一建模语言, 它可以帮助我们做软件需求的分析和设计工作。UML 有多种图形,大体可分为两类:结构型的图和行为型的图。
通常对业务概念等静态结构进行系统化的梳理和提炼,我们叫结构建模;而 对业务流程等动态内容进行系统化的梳理和提炼,我们叫行为建模。这些建模活动将帮助我们更好的认识客户的业务和做好业务分析的工作。
类图(Class diagram)是模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等,它可以用来帮助我们识别出人、事、物和业务的概念,并理清它们的关系的一种方法。
需求中提到的各种业务概念、人物等,经过抽象、归类之后可视为类。类有很多种提炼角度,我们需要根据具体的业务场景,选取合适的角度对事物进行归纳。例如,本文的读者可分为产品经理、非产品经理,或者男人、女人,这些都可以叫做类。
一个类图就是矩形的方框,最上面是类的名字,中间是类的属性(Attribute), 最下面是操作(oeration)。
前面的“+”号表示这个属性是 publice 类型的,在时机需求分析时不需要管 属性是 publice 还是 private,全部画成 publice 即可。
冒号后面的 int,表示属性的类型是 int 型(整数型),在需求分析阶段,可不必标记数据类型。
至于操作,用类图进行业务建模时,一般不需要表示出来。
A、B两个类,它们之间有关系,但又不能确认是怎样的关系,我们可以画一条直线将两者连接起来。
如果在线头两端加上数字1,表示1对1的关系,即1个A对应一个B。
如果将B旁边的1改成*,表示1对多的关系,即1个A对应多个B。
如果将*改成0..3,表示0-3的意思,即一个A对应0-3个B。
如果A、B之间有角色关系,例如A是上司,B是下属,则可以这样表示。
包含关系有两种表示方法,一种是空心菱形,一种是实心菱形;空心菱形可以表示为弱包含的关系,实心菱形可以表示为强包含的关系。
以下图中表示的为例,一个部门可以包含多个员工,弱包含关系即部门没有了,员工可以继续存在,强包含关系是部门没有了,员工也就不存在了。
继承关系是谁继承了谁的属性。例如苹果、香蕉、西瓜他们继承了水果的属性,同时又拥有自己的属性。
所谓的依赖关系,依赖程度是相对而言的,不一定是A没有B就不能生存了。在实际的业务逻辑当中,对于某个事情,A需要B来协助完成,也是一种依赖关系,依赖关系使用虚线箭头表示。
例如一个烟鬼,没有烟就不能生活,用类图可以这样表示,箭头表示依赖关系:
流程中一般只有一个开始,会有一个或多个结束。箭头表示流程的走向,一个圆角矩形表示一个活动。活动可以理解为流程中的一个步骤,需要用主动宾的形式来表达,例如员工填写工时、项目经理审批工时。
菱形代表判断,会有两个或两个以上的分支。判断一般有三种表达方式:在判断菱形旁写下判断的句子;直接通过监护来表示这个判断;在菱形判断之前加一个活动来表明判断动作。
分支流程汇合时,也会使用菱形,然后会合并成一条路线。如下图:
如果流程很长,涉及到的角色很多且流程很复杂时,我们可以用泳道图来表达,泳道图一般是会按照角色进行分区,并能清晰的表达各参与者的关系,如下图所示:
当遇到需要并行的活动或分支时,我们可以使用粗短棒。短粗棒会有两个同时出现:第一个是有一个箭头指入,多条箭头指出,这个叫做分叉;第二个是多条箭头指入,一条箭头指出,这个叫汇合。如下图:
④ 排除异常情况,先画出正常情况下的流程,这个就是主干流程,从头至尾没有分支。
⑤ 逐步增加分支流程,关键的分支流程都应该表达出来,不是很重要的可以用文字注释。
活动图将流程分解为一个个的活动,通过活动的先后顺序来展示流程,而状态机图从某个事物的状态是如何变化的角度来展示流程。
状态机图中,状态与状态之间的箭头叫做转换,箭头上的文字说明发生了什 么事情导致状态发生变化。
激活框:激活框也叫会话框,是生命线中细高的矩形,生命线中往往有多段这样的矩形,每一段矩形表示一次“会话”,每次会话表示一次交互。
消息:用实线箭头表示,并在上面说明做了什么事情,可以指向他人,也可指向自己。
返回值:用虚线箭头表示,并在上面说明返回内容,一般是反馈某个东西给相应的对象。
-
loop,也叫循环,是满足循环条件的前提下,不断地重复做某些事情。
-
alt,条件分支,是根据不同的条件选择不同的分支。
-
opt,可选分支,是满足一定条件则执行该分支,否则就跳过。
需要进入特殊情况的流程,要放在一个框(frame)中,常见的frame有三种:
-
loop(循环):[循环条件],中括号中的内容是循环条件,表示如果满足“循环条件”,则重复执行本框中的内容。
-
alt(分支):如果满足“条件1”则执行frame的上部分,如果满足“条件2”,则执行frame的下部分,如果有三个及以上的分支条件,可继续增加虚线分割出更多的分支。
-
opt(可选分支):如果满足“条件”,则执行框中的内容,否则跳过执行。
小人(actor,执行者):执行者可能是人也可能是系统。如果是人的话,可称之为角色,如果是系统的话,可以将另外一个系统画成执行者就可以了。
椭圆(用例,use case):椭圆里面的文字是“动词+名词”形式,表示系统能做什么事情。
大框框(系统边界,system boundary):这个框只框住了用例,没有框住执行者,这个就叫系统边界。
线条(关联,
association
):
线条指用例和角色之间的线条,一般有三种,无箭头的,指向用例的箭头,指向执行者的箭头。
同时,一般情况下也会有两种解释,一种是数据流向,另一种是谁启动谁。
用例之间有include(包含)、extend(扩展)、继承三种关系。
包含一般有两种用法,一种是以树的方式组织各种用例,用包含来组织好父子用例,子用例可以再次包含自己的子用例,这样层次分明。还有一种是,某些用例的一部分可以抽离出来成为子用例,该子用例同时也被其他用例包含。
扩展的意思就是:在某用例的基础上,还能做什么事情。例如用户在查看报表的时候,还可以导出报表,打印报表。如下图:
继承与类图中的继承性质是一样的,但是一般在画用例图的时候很少用,都会用其他的方式替代,因为不太好理解,而且还会降低沟通效率。如下图:
用例的实践建议:
② 同时用例应该使用客户的语言,让客户能够看得懂,要全面的表达用例,对于重点的地方要详细描述,非重点的地方不要过多描述。
③ 通过使用扩展和包含来细化用例图,但要灵活把握,用例图只是一种表达方式,必要时可以结合其他方式来表达。