BA需求分析方法总结(1)——控制变量法
举个简单例子。 目前有一个客户订单,报了BOQ(报价单),下面有某一套产品,而该套产品下含多个item(SBOM维度) 而有时,客户会因为某些因素,将BOQ下的部分产品做更改。 比如改数量、单价,或者直接退掉该产品。
比如客户此时对该产品不满意,突然间说我不想要了,怎么办?
对于客户来说,他其实只需要在原先的BOQ下,把该产品删除掉就行了。
而对于后端供应链来说,需要区分成两种场景:
- 该产品未发货——做撤货处理 即我不需要再把此产品做运输发出去了。直接在原BOQ下把产品删掉。
- 该产品已发货——做退货处理
此时,我不可能像客户那样,仅仅在系统上把该产品删掉就完了,而需要把这个产品做退货处理,即把原先发过去的货,让物流再退回来。
因此需要单独再做个退货的BOQ来处理。
可以看出,同样一次变更,在供应链角度看的维度与处理方式,跟客户相比是有区别的。 因此,在IT系统上也需要相应的做区分。
目前前端客户用的系统PRM针对此种场景的处理如下:
如果BOQ发生变更,则会产生两种BOQ——MBOQ与DBOQ,分别用来表示全量与变量。
而针对退货与撤货,PRM处理相同:
MBOQ——更新成变更后的结果
DBOQ——说明这次变更改了什么
但后端供应链系统需要针对退货的场景,需单独新建一个BOQ(退货),原先的BOQ保持不变。而撤货的,只需要在原先BOQ剪掉即可。
例:
原BOQ1下有产品A 5套,其中每套包含了 item1 50个(单价为3元)与Item2 30个(单价为4元)
报价单 | 产品名称 | 产品数量 | 物料名称 | 物料数量 | 物料单价 |
---|---|---|---|---|---|
BOQ1 | 产品A | 5套 | item1 | 50个 | 3元 |
item2 | 30个 | 4元 |
则这个产品A的总金额=(item1金额+item2金额)*产品套数, 即 (50*3+30*4)*5
此时,客户要求退掉产品A中的item2。则PRM的处理为:
报价单 | 产品名称 | 产品数量 | 物料名称 | 物料数量 | 物料单价 |
---|---|---|---|---|---|
MBOQ(更新后的结果) | 产品A | 5套 | item1 | 50个 | 3元 |
item2 | 0个 | 4元 | |||
DBOQ(变更了什么) | 产品A | 5套 | item2 | 30个 | 4元 |
此时产品A的总金额= (50*3+ 0*4)*5
而对于供应链来说,退货的场景,原BOQ是不变的,只会把退货的产品单独做一个BOQ。 即
报价单 | 产品名称 | 产品数量 | 物料名称 | 物料数量 | 物料单价 |
---|---|---|---|---|---|
原BOQ1(不变) | 产品A | 5套 | item1 | 50个 | 3元 |
item2 | 30个 | 4元 | |||
退货BOQ(相当于DBOQ) | 产品A | 5套 | item2 | 30个 | 4元 |
因此,后端如何针对这两种场景进行处理?
- 是取MBOQ刷新,再针对DBOQ做特殊处理?
- 还是只取前端的DBOQ,再自己判断是该在原BOQ中剪掉,还是新建一个退货BOQ?
最终,我们选择了方案1:
先把MBOQ覆盖过来,再判断是撤货还是退货。 如果是撤货,则无需取DBOQ。如果是退货,则需要取DBOQ,在系统中新建一个退货BOQ,并将DBOQ加回到MBOQ中,保持原来的BOQ不变。
那么,如何验证该方案针对所有的变更场景都适用呢?
客户有可能在撤部分产品的同时,又把剩余的产品的金额(单价)改掉了。 那如何验证多种组合场景都可以适配?
这时,我们可能想列个表格,把所有场景都列出来,一一实验一下。 但我们真的能保证所有场景都列全了吗?
此时,我们可以尝试用下控制变量法。 1. 找出可变因素:产品套数 X、item数量 Y、item单价 Z
2. 列方程,推导验证 假设只有item数量改变,其他为常数,则只需验证
原BOQ的产品A金额 = MBOQ产品A金额+DBOQ的产品A金额
原BOQ的产品A金额 = item1金额 + item2金额。
假设只有item2发生变更,则item1金额可看作常数Q,
产品A金额 = Q+ X*Y*Z
MBOQ产品A金额 + DBOQ产品A金额 = [Q + X*( Y-△y)*Z] + X*△y*Z = Q+ X*Y*Z
(其中,△y代表退货的item2数量,X、Y、Z分别代表原来的产品A的套数、item2数量、item2单价)
验证成功!
3.验证多个变量的场景: 假如三个变量都发生变化(又退货,又改了item数量,又改了产品套数),如退了产品套数△x中的△y数量的item2,那只需验证
MBOQ产品A金额 + DBOQ产品A金额 = [Q + (X-△x)*Y*Z+△x*( Y-△y)*Z ] + △x*△y*Z
是否等于
Q+ X*Y*Z
4.查找不适配的场景业务上是否存在 如果验证错误,则再看下,该场景在业务上是否存在。 假如不存在,则该方案是ok的。
本文只是提供验证方案适配度的一种思路, 其难点在于,我们如何把可变的因素都能找出来。
有时变更场景没有想全,往往是因为某个可变因素没有考虑在内导致的。
但一旦找出变更场景,涉及到加减计算,或者不同系统维度不同的特殊处理时, 此方法还是比较有用的。
通过这个发现,数学还是挺有用的 ^_^