写在前面:
这块是自己的弱区,在每个产品开发之前,PRD里必须要有功能逻辑图的部分,直观的影响是便于开发看懂每步需求怎么码,二来也是排查自己思考的逻辑死角
如何正确的画出功能逻辑图?
这就是我所理解的产品架构三部曲。
当我们需要设计任务型功能的时候,除了基础的线框图和交互,更需要提前搞清楚整个功能的内部逻辑流程,简称功能逻辑图。
举几个大家熟悉的任务型功能作为例子,方便大家理解概念。
比如电商的下单,大概包含查看商品→选择数量→填写收货地址→添加留言→付款。
其中的退货也是,选择商品→申请退货→填写退货信息→卖家审批→寄送商品→卖家确认物品无误→退款到账。
包括优惠券的使用,是生成订单前还是订单后都是有讲究的。
一、为什么需要功能逻辑图
当需要设计这样复杂步骤的功能,一定要学会画出内部的逻辑流程。
当然有时候也需要结合功能结构的思想,先拆分功能尽量少耦合,再画出内部逻辑。
然后和后端工程师过一遍逻辑,如果没有问题。再去设计具体的前端页面,最后才是专注于视觉细节。
如果没有先产出功能逻辑图,而是只画线框图和交互,那修改迭代的次数至少是上百次。
二、功能逻辑图是什么
表现功能内部的逻辑走向。可指导设计具体的页面和交互。
功能逻辑图和功能结构图的区别
注意是功能内部的逻辑流程,不是误认为是拆分功能。后者详见《如何正确的画出功能结构图》。
两种图形的使用场景是不一样的,分析功能的维度是不一样的。
一般来说先从业务上拆分功能到最细的粒度,然后再去画功能逻辑图。有时候最细粒度的功能很简单,逻辑图可不画。
多啰嗦一句,区分这2者也可以使用UML的用例思想来区分。
功能逻辑图和状态机的区别
通俗意义上的功能逻辑图表现是行为这个维度以及变化,而状态机是状态间的变化,维度是状态。后者详见《如何绘画状态机来描述业务变化》。
功能逻辑图和UML时序图的区别
算是时序图的简易版吧,UML学起来有一定门槛。但是功能逻辑图很容易上手,只是欠缺一些uml的特性。
三、如何画功能逻辑图
继续以电商APP的下单功能为例来讲一下如何画下单这个功能的逻辑图。
因为这个功能实在是太复杂,不建议一次性画出逻辑流程。建议先按照上文《如何正确的画出功能结构图》拆分出多个子功能。
然后按照子功能分别画出对应的功能逻辑图。注意这里只画了立即购买的下单功能,购物车结算的可以查看加入购物车,加载购物车,展示购物车,操作购物车。
选择商品
确认订单
提交订单
四、功能逻辑图的元素
建议使用Axure来画,因为还支持跳转到对应的前端线框图,方便阅读。详见Axure原型加流程图功能的高效结合。
行为
使用矩形框表示,没可以区分用户行为和系统行为,uml时序图中有区分。
流程
使用有向箭头表示行为的流程。
判断条件
使用菱形表示逻辑的多种路线。如果不复杂,可不用。
其他文字
用来辅助理解,可忽略。
五、总结
强调一下不要搞混功能逻辑图和功能结构图的运用场景。
我的建议是能拆分就拆分成功能结构,不能拆分就画功能逻辑。
接着是如何画业务流程图。
常见的错误画法
先梳理一下大部分PM画功能流程的常见错误,方便理解其边界。
混入业务维度
特别容易把业务模块也画到功能流程图里面。
区分你的功能流程图里面有木有业务模块并不难。唯一的判断标准是该图中的每个节点都应该是这个产品中真实存在的功能名称,否则应该是混入了其他东西。
真正的难点在于如何将业务流程映射成合理的功能流程,以及功能流程如何映射成恰当的业务流程。
混入页面维度
其次容易将页面写到功能流程图里面。比如某页面只是某个功能的子集,你非要把它写到功能流程图里面,是不合适的。
比如微信里面,发送照片给好友是一个功能,但是涉及到的页面“照片”、“选择相册”、“某一相册详情”以及操作“选中某一照片”,他们都不是功能,完全不应该显示在功能流程图里面。
当然某些功能的命名,有可能和页面是一样的。
混入操作维度
每个功能可能包含很多操作,比如微信中发送照片给好友,包含了”点击相册”,”滚动照片列表”,”选择照片并发送”等操作。需要正确区分操作不是功能。
功能流程是什么
讲了一些常见的错误画法之后,再次定义一下功能流程的概念。
功能流程是指产品的所有功能以及相互间关系。
功能间关系
注意功能是相互独立的,但是通过合理组合,可形成新功能。不太建议用一级功能二级功能,父功能子功能的叫法。
包含哪些元素
功能,使用矩形表示。
功能流向,使用有线箭头表示。
条件,使用有线箭头上的文字表示。
已定义流程,使用组合矩形表示。不是必须的,如果整个产品的功能太复杂,可能需要。
详见我整理的功能流程图资料,点击查看。
功能命名
要么是名词,比如购物车。可加定语,比如我的红包。
要么是动宾短语,比如确认订单。
要么是通用叫法、比如我的。
可以参考同行业的TOP5竞品。
如果功能简单,产品层面的1个功能尽量对应着Axure的1个Page。如果很复杂,请拆分到多个页面。
功能定位
功能是逻辑意义上的概念,用户是感知到该产品具备哪些功能。一个功能可能是跨越多个页面,也可能存在于某页面里。而页面是物理意义上的概念,用户可以在产品里面看到包含哪些页面。
另外功能本身是相互独立的。但是通过合理组合,可形成新功能。不太建议用一级功能和二级功能,父功能和子功能的说法。
如何画功能流程图
罗列所有功能
按照PM设定的用户使用产品流程,来画出每个节点的功能。从首次打开APP开始算起,进入首页会有多种走向,均需分别画出来。
请注意不要随意把页面名称画进来,除非你确定含有一个同名的功能。
比如上图乍一看,好像这几个都是功能,画得好像并没有错。点击对应的原型地址,方便理解下文。
可事实上,首页只是页面的叫法,而不是功能。另外它至少包含了发布邀约,查看邀约列表,频道列表三个功能。
用有向箭头关联
使用有向箭头将功能之间联系起来。注意箭头方向代表用户的使用步骤。
如果你是使用Axure,请不要傻乎乎的使用默认模式拖一根线到2个功能矩形框上,而是切换到连接线模式然后鼠标移动到矩形框连接红点并关联到另外一个。
增加条件判断
很多功能是有前置条件的,请使用有向箭头并辅以文字表示。
所谓的条件就是前后端需要判断的逻辑。常见的条件有3种逻辑结构。
检查是否犯错
上面说的几个常见错误,最好检查一下有没有犯。
得到功能流程图
根据上面的步骤,我大概画了一下微信客户端主要的功能流程图。
完整的图形可以点击源地址查看。
总结
如果你们的产品比较复杂的话,可能需要根据用户角色、前后端不同来分别画出对应的功能流程图。
比如微信的功能流程图,至少有用户使用微信,用户使用小程序,自媒体使用公众号,开发者开发公众号,开发者开发小程序等很多个。
简单来说,你先得清楚你们的业务需要多少个产品来支持,产品间的关系是什么,每种产品需要多少种用户角色,相互间的关系,有多少个端。
如何正确的画出页面流程图
页面流程是什么
页面流程是指产品的所有页面以及相互间流向关系。
包含元素
页面,有向线条。
可能包含判断条件。
不包含具体功能。
不包含弹层、元件等视觉组件。
页面命名
要么是名词,比如购物车。可加定语,比如我的红包。
要么是动宾短语,比如确认订单。
要么是通用叫法、比如我的。
可以参考同行业的TOP5竞品。
尽量保持和原型软件中页面结构的命名一致。
页面定位
每个页面尽量是一个完整独立的小功能。
除非功能太复杂,需要多个页面。此时页面的作用是功能的某一操作。
请结合上述的页面命名来考虑每一个页面该如何定位。
维度只有一种
既然是页面流程图,那么研究维度只应该有页面。尤其不应该看到功能和业务。这个错误很多PM都会犯。
延伸一点,每个产品至少有3大架构:业务流程、功能流程、页面流程。后续的文章,我会一一来讲。
页面流程的作用
之所以页面流程这个东西出现在产品经理的设计工作中,主要有以下原因。
了解全局
对于团队所有人来说,通过页面流程图可以大概了解整个APP的情况,偏视觉层。
传达需求
对视觉设计师,知道要做多少视觉稿,具体每个页面有哪些视觉元素。
对前端工程师,知道自己该写多少个页面,搭建页面代码结构。
评估工作量
用页面数量来评估各自的工作量,可以大概估算出工期。
梳理业务
页面流程是业务的直接体现,根据业务区反复研究它,可以让产品整体变得更简洁,结构变得更优美。
页面流程不能这样画
大部分初级PM画页面流程图基本上会犯两个错误。
只能有页面这一维度
上面已经说了,再重申一下只应该出现页面这个维度,不应该有什么乱七八糟的业务、功能、甚至是组件、元件什么的。
不应展示具体内容
有些PM画把页面的具体内容表示出来,其实很不对的。
- 抽象维度不一致,页面和页面内容是两个概念。
- 画页面内容需要耗费很长时间。
- 页面内容改动频率大,需要经常复查并修改。
- 具体内容有功能、有控件、有图标、有文字,很难抽象表述,以及表述完全。如果你这样画过,你就会理解这里的苦处。
以闪电约APP来画了一个错误的页面流程图,只画了几个页面。供大家参考。至少犯了上面1、2、4错误。
页面流程应该这样画
找出所有页面
不管你使用哪款原型软件,总有它的页面结构。据此画出所有的页面不难。
需要注意的是页面是物理层面的,真实存在。而不像业务流程图中的业务模块,只是逻辑层面的,并不需要真实体现。
如果你是使用Axure,可以直接拖动左方页面结构中的页面标题到右边的画布中即可。
用有向线条关联
使用线条将2个页面联系起来,直到把所有的页面跳转加上为止。
如果你是使用Axure,请不要傻乎乎的连接,而是使用连接线模式。
增加条件判断
这一步不是必须的,但是稍微复杂一些的产品建议使用。
拿上面的错误图来说,首页和3个页面有关联,那什么情况下跳转到第一个页面呢。这个就是需要条件判断来说明。这一点平铺的UI视觉稿并不能体现这一点PM的价值。
其实吧,UI视觉稿的平铺图可以作为前端工程师定义代码层面的页面结构,属于物理结构。但是逻辑层面的页面结构必须辅以条件判断。
重新画一下上面的页面流程图,正确应该如下:
检查是否犯错
上面说的几个常见错误,最好检查一下有没有犯。
总结
补充一点,如果你是使用Axure来画页面流程的话,可以全选所有的页面,然后右键一键生成流程图,点击查看效果。
其实页面页面流程图还需要按照角色(用户、商家),端(客户端、服务端),有时候还需要按照版本来画。根据自身产品的复杂程度,按照此文方法画出即可。
接下来会讲一下功能流程图、业务流程图如何画。
希望读完的你也有所收获
原文:
http://www.woshipm.com/rp/704584.html](http://www.woshipm.com/rp/704584.html
http://www.woshipm.com/pmd/663549.html](http://www.woshipm.com/pmd/663549.html
http://www.woshipm.com/rp/651734.html](http://www.woshipm.com/rp/651734.html