很多产品小白刚开始工作都是从写产品需求文档(PRD)开始的,那么想写好一篇高质量的需求文档,有一项技能是必不可少的——画UML“图纸”。那什么是UML呢,下面我们就来聊聊需求中UML的那些事~~
可能一些了解过UML的人会知道,它有很多复杂和容易混淆的语法,让人云里雾里摸不着头绪。但是不要急,当UML应用于软件需求分析时,其学习门槛将会大大降低,语法复杂度也会降低。而且你基本不需要掌握软件开发的知识。只要你对软件需求分析感兴趣,认真学习和应用UML,就很有机会成为软件需求分析高手:)。以下是我学习UML的一些总结,和大家一起分享。
UML全称Unified Modeling Language,直接翻译就是统一建模语言,简单地说就是一种有特殊用途的语言。
可这明明是一种图形,为什么说是语言呢?其实有很多内容用文字是无法表达清楚的,就像在建筑界的设计图纸一样,有一套标准来描述建筑物的设计,同样,在软件界,我们也需要一套标准来帮助我们做好软件开发的工作。UML就是这样一种标准,但它不是唯一标准,只是UML是大家比较推崇的一种标准而已。
在软件设计和开发过程中会有不同的人参与其中,比如投资人、老板、客户、需求人员、开发人员等等,每个人都各有所长,涉及的工作内容也不尽相同,这就增加了不同人之间的沟通成本,有可能客户需要A,产品人员理解成了B,在传达给开发人员后开发出了C。。。为了尽量避免这样的事情发生,显然UML这张“图纸”还是很有必要存在的。
那么作为一个产品小白又要掌握哪些UML知识呢,那么多图我们都要掌握吗,答案当然是否定的,请看下图↓
何为静态、动态呢?静态视图所描述的结构,某段时间内应该是稳定的,静态的;而动态视图描述的是某种行为,是动态的。
如图中红字标出的图是作为一名产品人员所必须掌握的,那么在工作中如何应用呢?下面我们就一起来学(gao)习(ding)这五个图吧。
举个栗子:小明由于最近加班比较累,想请假休息几天,那么他需要在请假系统上提交请假申请并说明原因,等待领导审批,如果领导同意,那就快乐的休假啦,如果领导拒绝,小明就要考虑是修改下继续申请,还是就这样默默地继续工作。
那么通过UML图是如何表达这样一个场景呢?我们来一个一个说。
一、类图:
1、在学习类图之前,我们来说下什么是类
类是一类或一组具有类似属性和共同行为的事务。说白了就是将周围的事物分下类,比如手机、电脑、电视机。。。这都是一类事物的总称,比如苹果手机、三星手机、小米手机等都归属于手机这个类。
那么上边请假这个场景中都哪些可以归为类呢?首先小明身边还有很多像小明这样的人,他们都是一个公司工作的同事,那么他们就可以归为员工类;请假申请呢?今天小明提一个,明天小红提一个,那就是好多请假的总称,它们就可以称为请假条类;同理还有个领导类。好了,类分好了,如何用类图表示呢?
2、如何表示?
首先看下类图的表示规则:
请假场景中的类图表示如下图,其中类与类之间的直线表示两个类之间存在某种关系,这种关系将两个类关联到了一起。
员工和领导通过请假条有了联系(当然员工和领导还可以通过很多事情联系到一起,我们就撇开其他事情,单看这个请假场景中这两个类的关系),就这样把分好的类列出来,再找到它们之间可能存在的关系,duang就画好了,简单吧。
在上图中已经理清了请假场景中到底有哪些类,他们之间存在什么样的关系,好,那接下来看看这些类都能干什么。
二、用例图:
1、什么是用例?
用例(use case):从用户的观点对系统行为的描述。也就是站在用户的角度来描述这个系统到底能干嘛,而不用考虑实现细节。
2、如何表示?
请假场景用用例图的表示:
图中表示了在请假系统中,员工可以请假,领导可以审核。看,每个用户可以做什么是不是一目了然。用例图就是先画个小人,再看他们都要在系统中做哪些事,然后画个圈把能事情装进去,再画个箭头把小人和圈圈联系起来就完成啦!
知道了哪些类可以干什么,我们再来说说他们都是怎么做的。接下来要介绍的三个图从不同的角度对怎么做进行描述。可以根据需要自行选择用哪个,原则就是把想表达的事情表达清楚就行。
三、状态图:
1、什么是状态图?
介绍状态图前,我们先说下什么是对象,还记得类的定义吗?类就是一类事物的总称,那对象呢?对象就是这类事物中的个体,比如手机类,苹果手机就是手机类的一个对象。
那回到请假这个场景中,显然一个请假条就是请假条类中的一个对象。而一个请假条对象在不同时间所处的状态是不相同的,比如是批准还是拒绝。那么不同的状态如何表示呢,状态图就是用来描述一个对象的可能状态以及各个状态之间的转换关系的一种图。
2、如何表示?
先解释下图中标注:
开始符号和结束符号就不必多说啦,就是表示开始和结束。
我们用文字来描述一下这个状态图要表达的事情:
领导同意则改为批准状态。
领导不同意则改为拒绝状态。
拒绝后可以重新申请或直接撤回。
有没有感觉用画图的形式比文字表述更清晰明呢,也许在这里感受并不明显,但当状态复杂时就很难用文字描述清楚了。学会它会在必要时帮你梳理复杂的逻辑关系。
四、顺序图:
1、什么是顺序图?
刚刚说的状态图是对单个对象的描述,而顺序图是对一个对象如何与其他对象进行交互的描述。也就是说你说这两个对象有关系,那到底有什么关系,怎么联系到一起的。顺序图就是用来描述这种关系的,但要注意顺序图的关键词是顺序和时间。
顺序:对象间的交互按照特定的顺序发生的。
时间:交互从开始到结束需要一定的时间。
2、如何表示?
看图:
沿着生命线从上到下就是对象间交互发生的顺序,生命线上的长条方框就表示交互的时间,这个时间只是估计的时间,不需要过分纠结长短。
从图中可以看出请假所需的步骤:
员工提交请假申请。
保存请假申请。
提醒领导审批。
领导审批批准/拒绝。
提醒员工审批完成。
相比上边这段文字,是不是觉得顺序图的表达更直接呢?
五、活动图:
1、什么是活动图?
活动图向我们展示了一个操作或过程的步骤。也就是说做一件事情总共分几步,先干嘛,后干嘛。如果用过流程图的人会发现活动图和流程图很相似,他们要表达的事情是一样的,只是表示形式不同而已。甚至可以直接理解为活动图就是一种流程图。
2、如何表示?
下面就来看下用活动图如何表达请假这个场景:
解释下图中标注:
泳道:为什么起这个名字呢,就是长得很像游泳池的泳道啦,泳道的名字以通常以角色名字命名,请假场景中有两个角色,员工和领导。
活动:主要由“动宾”结构的词构成,描述当前进行的活动。
也许有人问,这不是状态图吗?的确,活动图不仔细看确实和状态图很相似,但它们表达的内容是完全不同的,状态图是表示单个对象的状态变化,而活动图是表述操作步骤。仔细看两个图是不难区分的。
通过对类图、用例图、状态图、顺序图和活动图的学习,是不是觉得很多事情都能用图来表达的更清楚呢,可以尝试找个场景,按照上边的思路画画,一定会有所收获的,要相信不积跬步,无以至千里。
好了,以上就是我对这五个图的理解,尽量用通俗易懂的方式讲给大家听,不知道你领会了多少呢?相信如果你看到了这里就算不能熟练使用,也已经对UML有了大概的认知了,是不是也没有那么复杂呢。如果感兴趣可以买些相关书籍深入学习一下。