扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
编辑导语:这篇文章作者从系统全局分析、系统详细分析和熟悉的系统原型设计三方面入手,详细地向我们展示如何逆向解构万里牛电商ERP,通过自己的实践推导出其产品分析方法,作者把书里的知识学以致用,非常值得我们学习借鉴,一起来看一下吧~

在此我想感谢谭云杰老师的《大象—Thinking in UML》,我深受这本书的启蒙,这本书不是单纯的讲UML,而是讲软件过程,软件分析方法。反复研读后,我把书中的思想慢慢内化成自己的产品分析方法,实现可以一步步推导的分析方法,并运用在本次文章上。
本文有1.3万字,请保持耐心。
此次本着学习的态度解构万里牛ERP(专业版),我是从万里牛的页面和功能入手,逆向分析得到关键输出物和原始需求,以此深入学习电商ERP的业务。
获得关键输出物后,本文是以正向设计的逻辑进行描述,还原从需求到原型的设计过程。
本文按分析粒度大小,分为三部分,如图1:
系统全局分析,分析粒度保持在模块管理,目的是获得系统的全局认识。
系统详细分析,分析粒度变小,保持在增删改查功能的粒度,目的是获得全部系统用例。
熟悉的系统原型设计,分析粒度变小,保持在页面和元件交互,目的是获得可交付的原型和标注。

图1 分析逻辑
一、系统全局分析系统全局分析,分析粒度保持在模块管理,目的是获得系统的全局认识。第一节是从业务的角度获取需求和用例,第二节是从系统的角度获取需求和用例,我称这个粒度为一级用例,第三节和第四节是在前两节的用例基础上分析主流程和对象。
1. 业务用例在软件项目里,业务范围和系统范围是不同的。业务范围指这个项目所涉及的所有客户业务,这些业务有没有计算机系统参与都是客观存在的。系统范围是指软件将要实现的那些对应于业务功能的系统功能,从功能性需求来说系统范围是业务范围的一个子集,但是一些系统功能则会超出业务范围,例如操作日志,有没有操作日志并不影响业务目标的达成,客户也不一定会提出这个要求,但从系统角度出发,操作日志会使得系统更加健壮。
——来自《大象—Thinking in UML》
在引入计算机系统之前,业务也一直跑得很顺畅,因此在初始阶段,不引入系统的角度,纯粹站在业务的角度,分析业务的主流程场景,获取业务用例。
获取业务用例需要分析出业务主角和用例,业务主角即参与到业务流程中的角色,例如采购员、售前客服等。用例即业务主角需要在业务流程中完成的事情,这里需要注意用例的粒度,我经过思考,系统全局分析阶段,建议使用管理一类事物的粒度,例如销售订单管理,这个粒度仅供参考。
开始获取业务用例,以下是一段商家工作内容的场景。
店长小明想开一家网店,在商品上架销售前,小明做了以下准备工作:
在淘宝注册一个店铺;
选择想要做的品类和卖的商品,并维护商品信息;
找合作快递公司,用于发货给客户;
找仓库,用于存储采购的商品;
店长还需要关注店铺各业务的运转情况,即查看销售、采购、库存、资金的报表。
除此之外,还招了6个岗位一起合作:
采购员,负责采购商品补充库存;
售前客服,主要为买家介绍商品特性和解答销售方面的问题,买家下单后审核订单;
发货员,对通过审核的订单进行配货打包,进行发货;
售后客服,主要为买家解答售后方面的问题,并审核买家发起的退换货申请;
仓库管理员,记录商品的出入库和管理商品库存;
财务员,记录销售订单和采购的资金出入。
团队到位了,可以开展工作了。
采购员根据店长选好的商品进行采购工作,联系供应商采购商品,即提交采购订单。采购订单的货品到了之后,需要仓库管理员记录采购入库单,并为商品安排库位和增加商品的库存。商品入库后,采购员和供应商登记结算单。如果到货的商品有问题则进行退货处理,即提交采购退货单,采购商品出库时需要仓库管理员记录采购退货出库单,并减少退货商品的库存。
至此,把商品上架在淘宝,就可以开始接单了。当买家在淘宝下单并支付后,订单的处理就交给售前客服和发货员了。
首先售前客服会审核订单,如有注意事项可对订单进行备注,例如有什么赠品、指定发什么快递等,通过审核的订单即流转给发货员。发货员在仓库中进行配货并打包,最后打印快递单,进行发货。发货时,需要仓库管理员记录销售出库单,并减少销售商品的库存。
另外小明还希望发展一下线下大客户,所以有的售前客服在线下开拓客户。客户可直接和售前客服下单,售前客服创建订单,然后流转给发货员。发货员在仓库中进行配货并打包,最后打印快递单,进行发货。发货时,需要仓库管理员记录销售出库单,并减少销售商品的库存。
以上是正向的交易流程,买家下单,商家发货。当买家提出退换货的时候,就需要售后客服介入。买家在淘宝提交了退换货申请,售后客服进行审核是否同意退换货,审核通过后,买家寄回商品。寄回商品到达指定退货仓库后,仓库管理员记录退货入库单,并更新商品库存。如果是退货,售后客服进行退款处理,如果是换货,售后客服根据售后单,手动创建销售订单,然后该销售订单正常发货。
仓库管理员日常工作除了记录销售订单、采购订单的出入库单外,平时需要维护仓库的基础数据,库区、库位等,并且记录商品的摆放位置。每次商品出入库都会更新库存,定期查看各商品的库存数量。还会为了保证商品数量安全,定期对仓库的商品数量进行盘点。如果商品的成本近期发生变化,还会对商品进行调价。当前小明拥有两个地方的仓库,有时候需要进行商品调拨,即仓库管理员把A商品从甲仓库调拨到乙仓库,调拨出库和入库时也都需要记录调拨出库单和入库单。
以上是采购订单和销售订单的场景,每次商品出入库,都伴随着资金的收支变化,所以财务员有以下日常工作。首先,财务员需要维护资金账户基础数据,其他主要工作就是收款、付款、账目对账检查。
收款主要是收取销售订单的钱,有三种收款方式:现金收款、充值款消费(预收款)、赊账(记录应收款)。现金收款是买家下单时进行支付费用,例如淘宝订单。充值款消费是买家提前充值费用存在该客户的账户上,然后下单时进行扣减,主要适用于线下订单。赊账是买家下单时不进行付款,客户账上也没有充值款可以扣减,这样就会记录该客户的应收款,然后定期收款,并记录收款单,适用于月结的客户。
付款是支付给供应商采购订单的货款和支付给快递公司的快递费。有三种支付方式:现金支付、充值款支付(预付款)、赊账(记录应付款)。现金支付是采购订单到货后现金支付货款给供应商。充值款支付是预存充值费用在某个供应商那,每次采购单到货后选择使用充值款支付货款。赊账是采购订单到货后不支付货款给供应商,然后记录该供应商的应付款,定期付款,并记录付款单,适用于月结的供应商。
快递费目前是选择月结的方式结算。为了保证账目的准确,财务员会定期进行快递单对账。
有时候需要转移资金,即财务员把资金从A账户转到B账户,则进行转账。财务员在有资金往来的时候都会记录资金流水。
基于以上场景,获取业务主角和提炼一级用例,如图2。

图2 业务用例
1)店长
是店铺的管理者,会管理基础数据和查看报表:
注册淘宝店铺,即管理店铺;
选择销售的商品,即管理商品;
选择合作的快递公司,即管理快递公司;
确定仓库,即管理仓库;
查看报表。
2)采购员
负责采购商品,会管理采购相关的事项有:
选择供应商进行采购,即管理供应商;
提交采购订单,即管理采购订单;
采购商品入库后和供应商进行结算,即管理采购结算单;
如有商品需要退货,提交采购退货单,即管理采购退货单。
3)售前客服
是销售订单的跟进人,会管理订单相关的事项有:
线下开拓客户,即管理客户;
审核销售订单,保证订单顺利完成,即管理销售订单。
4)发货员
负责对销售订单进行配货、打包、发货:
参与管理销售订单的发货流程;
打印快递单,进行发货。
5)售后客服
负责审核售后单,即管理售后订单。
6)仓库管理员
负责仓库商品的库存安全,会管理仓库相关的事项有:
维护库存的存储区域,会参与管理仓库;
采购商品到货后,记录采购入库单,即管理采购入库单;
采购退货商品出库时,记录采购退货出库,即管理采购退货出库单;
销售订单商品发货时,记录销售出库单,即管理销售出库单;
销售退换货商品退回仓库时,记录销售售后入库单,即管理销售售后入库单;
记录商品库存更新记录,即管理库存;
定期盘点商品库存,即管理库存盘点单;
定期盘点商品成本,即管理成本调价单;
把商品从甲仓库调拨到乙仓库,即管理库存调拨单;
调拨商品出库记录,即管理调拨出库单;
调拨商品入库记录,即管理调拨入库单。
7)财务员
负责资金的往来,会管理财务相关的事项有:
管理资金账户;
帮助客户充值预收款,记录每次消费或充值后,客户预收款余额,即管理预收款单;
客户订单未支付结算,会记录应收款,即计算应收款;
对销售订单的应收款进行收款,即管理收款单;
充值到供应商的预付款,记录每次付款或充值后,供应商预付款余额,即管理预付款单;
采购订单未支付结算,会记录应付款,即计算应付款;
对采购订单的应付款进行付款,即管理付款单;
定期进行快递单对账,即管理快递对账;
记录资金转账,即管理转账单;
记录资金往来,即记录资金流水。
2. 系统用例得到业务用例后,虽然能看到业务主流程的雏形,但要完成系统的闭环还需要站在系统的角度去补充用例,例如系统权限管理的需求,业务用例中并没有体现出来。
系统用例也是需要获得角色和用例,这个阶段的用例粒度和上一步骤的业务用例保持一致,即管理一类事物。
开始获取系统用例,我站在系统的角度,从三个方向分析系统需求:
系统管理的需求
系统易用性的需求
系统扩展性的需求。
于是我列出了以下场景的需求:
万里牛ERP是一款SaaS产品,会服务多家公司的客户,所以需要创建一家公司才可使用系统。
每个系统都需要考虑权限管理,所以系统管理员需要维护角色权限,才能够管理公司员工的权限。
系统管理员需要创建员工,为员工分配账号,员工才可以登录系统开展工作。
万里牛ERP服务多家公司,各家公司的需求会存在差异性,需要做到高可配置化来支持差异化需求。
每个用户需要注册、登录、修改密码等账号相关的功能。
用户想及时得到订单状态更新、库存预警等消息,方便跟进,提供消息通知功能。
根据上述场景的需求,获取到系统用例,和业务用例放在一起,展示所有一级用例,如图3。

图3 一级用例
1)系统管理员
需要创建公司才能使用该系统,由他管理公司;
需要管理员工的权限,由他管理角色;
需要维护员工信息,由他管理员工;
需要配置系统以实现差异化的功能,由他管理系统配置。
2)全部用户
每个用户都需要进行注册登录,进行管理账号;
每个用户都需要获取消息通知,支持消息通知。
3. 主流程分析主流程就是按某种逻辑把主要的一级用例组合起来,归纳出几条主流程,验证是否可以实现业务目标。得到主流程可以对系统有全局的认知,也能辅助后续的对象分析。
电商日常主要处理两大业务,采购和销售。采购和销售都有正向流程和逆向流程,即采购主流程、采购退货主流程、销售主流程、销售售后主流程。这4条主流程中都会引起库存更新和资金收支,所以除了商品出入库过程,也要关注库存变化和资金收支。
外加一条系统管理主流程,合计5条主流程。
1)采购主流程
主要是提交采购订单,到货后进行入库,并更新库存和支付货款,如图4。

图4 采购主流程
提交采购订单:①采购员在管理供应商模块创建供应商,供采购订单引用;②采购员在管理采购订单模块创建采购订单,需要选择在哪家供应商采购什么商品;
货品入库和更新库存:③提交采购订单后,仓库管理员在管理库存模块增加该商品的在途数量;④待采购商品到货后,仓库管理员在管理采购入库单模块创建采购入库单;⑤入库后,仓库管理员在管理库存模块增加商品库存;
支付货款:⑥财务员在管理资金账户模块创建采购资金账户;⑦入库后,采购员确认采购商品没有问题,在管理采购结算单模块创建采购结算单,支付金额为0,计算应付款;⑧付款日期到了,根据结算单,财务员在管理付款单模块创建付款单进行付款;⑨付款后,财务员记录资金流水。
2)采购退货主流程
主要是提交采购退货单,退货商品出库,并更新库存和收回退款,如图5。

图5 采购退货主流程
提交采购退货单:①如果采购商品存在问题需要办理退货,采购员在管理采购退货单模块创建采购退货单;
退货商品出库和更新库存:②提交采购退货单后,仓库管理员在管理库存模块增加商品的锁定数量,可用库存等于【商品在库数量】减去【锁定数量】;③退货商品出库,仓库管理员在采购退货出库单模块创建采购退货出库单;④出库后,仓库管理员在管理库存模块减少商品库存;
收回退款:⑤出库后,采购员在管理结算单模块创建采购退货结算单,让供应商退款;⑥若供应商没有退款,根据采购退货结算单,财务员在管理付款单模块创建退款单收回退款;⑦退款后,财务员记录资金流水。
3)销售主流程
主要是处理销售订单,进行发货,并更新库存和订单收款,如图6。

图6 销售主流程
审核订单和发货:①售前客服在管理客户模块创建客户,客户供线下订单引用;②售前客服在管理销售订单模块创建线下订单,或者审核线上淘宝订单;③订单审核通过,发货员在管理销售订单模块进行配货、打包、发货等工作;④发货时,发货员为订单打印快递单,用于快递运输;
订单商品出库和更新库存:⑤新增销售订单后,仓库管理员在管理库存模块增加商品的锁定数量,可用库存等于【商品在库数量】减去【锁定数量】;⑥发货时,仓库管理员在管理销售出库单模块创建销售出库单,如果订单之前没有支付过,计算应收款;⑦出库后,仓库管理员在管理库存模块减少商品库存;
订单收款:⑧财务员在管理资金账户模块创建销售资金账户;⑨如果出库后,订单没有支付过,根据销售出库单和应收款,财务员在管理收款单创建收款单进行收款;⑩收款后,财务员记录资金流水。
4)销售售后主流程
主要是审核销售售后单,等退货商品入库后,更新库存和售后单退款,如图7。

图7 销售售后主流程
审核售后单:①如果有客户发起退换货售后单,售后客服在管理售后单模块审核售后单;
退换货商品入库和更新库存:②同意退换货后,仓库管理员在管理库存模块增加该商品的在途数量;③收到客户寄来的退换商品,仓库管理员在管理售后入库单模块创建售后入库单;④入库后,仓库管理员在管理库存模块增加入库商品库存;
售后单退款或换货:⑤收到退换货的商品无误后,如果是退货,售后客服在管理售后单模块操作退款,如果是换货,售后客服在管理售后单模块直接创建销售订单进行换货;⑥如果退款,财务员记录资金流水。
5)系统管理主流程
主要是创建公司并邀请员工加入公司,之后进行系统配置和维护基础数据,如图8。

图8 系统管理主流程
系统管理员首次登录系统时创建公司;
系统管理员在管理角色模块创建角色和配置权限;
系统管理员在管理员工模块创建员工或邀请员工,并为员工分配角色;
员工在管理账号模块接受邀请进入公司,并登录系统;
系统管理员在系统配置模块配置自定义的参数;
店长维护基础数据供采购流程和销售流程引用,在管理店铺模块创建店铺、在管理商品模块创建商品、在管理快递公司模块创建快递公司、在管理仓库模块创建仓库。
4. 对象分析神盾局特工第四季里有一个概念是虚拟数字世界:框架(Framework),看过的朋友就很容易理解:软件系统就是在计算机世界模拟现实世界,现实世界中的物体会映射成计算机世界里的对象。
这里使用面向对象分析方法(OOA),也是《大象—Thinking in UML》中的分析步骤之一,意图是将现实世界中的物体映射成计算机世界中的对象,在系统中使用这些对象去解决需求。比如分析对象需要哪些属性和功能来解决需求,在后续的步骤会详细分析这些对象。

我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流