在实际生活中,我们会碰到各种各样的流程。比如你去医院看病,你需要先去服务台领个具体要去看病的某个科室的小票,再前往挂号窗口将小票递给工作人员,缴完挂号费之后拿到挂号单,再前往具体科室去看病。各处都会有自己的流程,按照流程来走可以快速达到目的,减少不必要的麻烦,当然你也可以独辟蹊径,这就属于流程的优化。
流程是为了达到特定的目标而进行的一系列有逻辑性的操作过程,它可以不规范、可以充满问题,但它确确实实存在着。只要有事情或任务,就会有流程的存在,将有一定规律的流程用图表表示出来可以让流程可视化,从而有利于流程的重组优化。
在工作中,我们常用到的流程图有:业务流程图、页面流程图和数据流程图。作为产品,经常谈的是业务流程图;作为交互设计师,则比较关心页面流程图;而作为系统分析师,数据流程图最关键。
PART1 业务流程图
围绕着以下几个问题来讲述业务流程图
什么是业务流程图?
为什么需要业务流程图?
业务流程图的两种图表类型
两种流程图图例和结构
如何绘制业务流程图?
常见的绘制流程图的工具
1.业务流程图是什么?
业务流程图,顾名思义,用来描述业务流程的一种图,通过一些特定的符号和连线来表示具体某个业务的实际处理步骤和过程,详细地描述任务的流程走向,一般没有数据的概念。
业务流程图是最常见的图表之一,能看懂读懂是必修课,能绘制便是非常重要的选修课。
2.为什么需要业务流程图?
分析业务流程,并将业务流程图表化可以帮助分析者了解业务如何运转,帮助分析者找到业务流程中不合理的流向。现有产品存在的业务流程未必是合理的,通过业务流程图,钻研关键事件的流程,分析为什么要这么做,探索出更深层次的问题,从而对现有不合理的业务流程进行重组优化,进而制定优化方案,改进现有流程。
产品在写需求文档时主要是对业务规则的描述,而配合以业务流程图可以让业务逻辑更清晰;日常梳理关键事件业务流程时,画出业务流程图可以帮助发现不合理流程,从而对关键事件进行优化。
3.业务流程图的两种图表类型
(1)管理业务流程图
我们现在所说的流程图其实是传统的管理业务流程图,包含基本流程图和跨职能流程图(泳道图)两种。以医院挂号流程为例。
基本流程图虽然明确地说明了整个流程,但却无法清楚地说明每步流程是由哪个角色负责的。为了有效表示各个流程是由谁来负责的,可以通过泳道流程图来实现,这样不仅体现了整个活动控制流,还能清楚知道各个角色在流程中所承担的责任。
管理业务流程图已基本能满足业务流程走向的表达,但在复杂的系统交互中,表达并发概念时,传统的管理业务流程图已无法表达,这就需要用到UML建模。
(2)UML活动图
UML中共定义了13种图,如下,其中用例图、活动图和顺序图用的比较多。
UML细分了各种图,分别在不同的角度来描述系统流程,在本质上,UML各种图均属于流程图。
其中UML中活动图同管理业务流程图类似可用于表示业务过程,唯一的区别是活动图支持并行行为。传统的流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系;而UML活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
那UML活动图是如何来表示并发业务流程的呢?
UML活动图也可包含为基本活动图和泳道活动图,表达的方式与管理业务流程图差不多,但图例上稍有不同(图例区别可参考下方)。
同管理业务流程图一样,泳道让流程中个角色的分工一目了然。一个泳道表示流程内的一个角色,泳道内仅仅画出该泳道所表示角色完成的活动(判断,并行等可以画在任意泳道)。
总结:管理业务流程图或UML活动图均可以用来表达业务流程,具体使用哪种图来表达业务流程可以凭君喜好,但要遵循一定的符号结构,不要混搭。不过要表达并行行为的还是使用UML活动图吧。
4.两种流程图图例和结构
(1)管理业务流程图
管理业务流程图的常用符号如下,其基本结构包含:顺序结构、选择(分支)结构、循环结构。
(2)UML活动图
UML活动图的常用符号如下,其基本结构除了顺序结构、选择(分支)结构和循环结构外,还可能存在并发的事件流。在UML中,可以采用一个同步线来说明这些并行控制流的分岔和汇合。
同步线:分岔是有一个进入转换,两个或多个离开转换;而汇合则是两个或多个进入转换,一个离开转换。
5.如何绘制流程图?
(1)在开始绘制业务流程图之前需要先想清楚的2个问题:
1)所要描述的是哪一段业务流程?
在画流程图之前先确定业务流程起终点,是截取某一段业务进行详细描述,还是整体业务模块进行描述。不可能将所有的流程都放到一个图里展示,也不可能大而笼统不画出关键事件,要学会划分业务流程范围,把握粒度。
举例
还是以医院挂号看病为例,先挂号再看病。整个流程下来其实可以细分为两个流程,分别为挂号流程和看病流程;甚至粒度可以再细点,分为取小票流程、挂号流程、缴挂号费流程、排队看病流程等,但很明显,单独分析取小票流程和缴挂号费流程粒度过小,没有实际意义。
总结:可采用自顶向下,逐层分解的绘制方法。明确你要梳理的业务流程范围,首先列出流程中的关键事件,如医院挂号看病,挂号流程和看病流程便算是整个流程中的关键事件流程;再结合你分析的目的来判断是否需要再往下层进行分解,如取小票流程、挂号流程、缴挂号费流程、排队看病流程。如此例,层层向下分解,直到符合你要分析的目的,当目的是为了对某个业务流程进行优化时,则分解到对应流程即可,绘制出流程图后再进行分析。
2)所要描述的业务流程是否涉及到参与者?
涉及到参与者的业务流程使用泳道图来描述更简单明了。
举例
业务简要描述:数学老师让小丽帮忙把讲台上的写了名字的语文课本送给语文老师,语文老师接下后微笑着对小丽说谢谢。
分析:包含了数学老师、小丽、语文老师这三个参与者,此时用泳道流程图更合适。
(2)问题想明白了之后便可以对业务流程进行梳理,进而分解各个要素。
业务流程图有4个关键要素:执行操作、顺序、输入输出、规则;要更清楚的描述业务流程可以有参与者这一要素。
执行操作:执行了什么操作
顺序:操作产生的顺序
输入输出:发生操作的原因和结果
规则:操作产生的条件
参与者:谁参与了这个流程,可以是系统、可以是页面,也可以是用户
以上个例子为例进行分解:
业务简要描述:数学老师让小丽帮忙把讲台上的写了名字的语文课本送给语文老师,语文老师接下后微笑着对小丽说谢谢。
执行操作和顺序(含输入输出):请求帮忙、接受帮忙、拿讲台上的语文课本、递交课本、接收课本、道谢
规则:必须是写了名字的语文课本
参与者:数学老师、小丽、语文老师
以上是明确给出了业务描述,按照步骤基本上便能画出业务流程图。在没有明确给出业务描述的情况下,对业务流程的梳理主要有两种方式:
1)深入现场调查,由工作人员介绍业务处理过程。
2)对现有业务流程的优化。当已经对现有业务流程熟悉时,通过讨论和分析,可梳理出业务流程,再通过优化现有流程中不合理的地方,从而给出一个更好的流程来。
(3)流程图规范
各图形形状/字号统一。如果各个图形形状大小/字号相差悬殊,这对于理解图形的人也是一种折磨,对于某个比较重要的流程可以使用颜色来区分其他普通流程(但颜色数量和种类不应太多,以免重点模糊),再在该重要的流程旁加上注释说明,就能将重点转达给对方。
流程名用动宾结构,如输入手机号。
流程均以开始框开始,以结束框结束。
流程图从左到右、从上到下排列。
流程线尽量不要交叉。
6.常见的绘制流程图的工具
(1)在线工具
ProcessOn:https://www.processon.com/
draw.io:https://www.draw.io/
(2)客户端
Microsoft Visio
edraw亿图
xmind
omniGraffle(mac)
StarUML
我一般常用ProcessOn画业务流程图,一些uml图也会使用StarUML,这两种工具画出来的图都挺赏心悦目。但具体用哪种工具不重要,重要的是学会对业务流程进行梳理并将流程可视化。