如何绘画状态机来描述业务变化

一、来源
最早是电路设计领域里面的概念,具体来说是一种根据电路信号按照预先设定的状态进行转移,协调相关信号动作并完成特定操作的控制硬件。
后来软件编程里面继承了这种思想,用来表示有限多个状态以及在这些状态之间转移和动作的模型。简称为 FSM(Finite State Machine) ,是常见的软件设计模式之一。
对于PM来说,借鉴这种思想并融入到自己的产品思维中是很有必要的。据此设计业务实体的功能会更容易阐述本质,并且让技术更容易理解。
二、状态机有什么作用
从PM的角度可以这样定义,状态机用来表示业务实体的全部状态以及相互间如何转移。
其中,业务实体是指客观上可以相互区分的事物,比如订单、优惠券、商品、活动……
当然扯远一点,大部分对象都是有状态的概念,只是没必要都画个状态机图。
三、状态机三要素
从状态机的内在因果关系可以抽象出3大要素:
  • 现态:是指当前所处的状态。
  • 条件:系统按照某一规则或者用户执行某个动作后,,状态会进行迁移。
  • 次态:条件满足后迁移到的新状态。
包含1个开始状态和N个终止状态,以及若干个中间状态。当到达终态, 状态机停止。
四、状态机怎么画
1.要素怎么表示
“状态”使用圆角矩形表示。
“条件”使用有向线条上的文字表示,比如系统怎么样,或者用户执行xx动作。
线条的方向表示状态迁移。
一般情况下从左向右的画图顺序表示了初始→终止的方向,所以无需单独表示。复杂情况下可以用实心黑圆点初始状态,用实心黑圆点外包一个圆圈表示终止状态。
666

2 要素如何命名
状态建议以”已+动词”的结构来命名,比如已付款、已发货。
条件建议以”动作+结果”的动宾结构或者”表达式”来命名,以明确状态迁移的具体条件。比如支付失败、下单时间>72小时。
注意命名一般站在用户立场,尽量命名标准化。
3 画出状态机
  • 理解业务实体有多少种状态
  • 考虑每一个状态因为什么条件而变化
  • 将状态和状态之间用条件有向连接
  • 形成状态机图
  • 和服务端RD讨论并确定
4 画图注意点
不需要的状态尽量去除,让状态机结构最简单。
明确只有一个初始状态,终止状态可能有多个。
合理实现各个状态之间的切换。
方便扩展,状态有可能会增加,有可能会有子状态机。
注意不要遗漏状态,比如优惠券使用的状态机可能需要“使用中”
不要搞混动作和状态的区别,命名本身就不一样。而本质上动作是不稳定的,一旦执行完毕就结束了;而状态是稳定的,只要没有外部条件触发。

状态机图和流程图的区别
经常有人把状态机图给错认为是流程图的一种,其实他们本质不一样。
目的不一样,流程图表示的是流程,状态机图表示的是业务实体的状态变化。
另外,流程图中的节点一般是动作,而状态机图的节点是状态。
准确来说,状态机图是UML语言中的一种。
* 注意
不是所有的业务实体都有必要产出状态机图,关键业务的才建议进行产出。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值