讲逻辑理需求,我说状态机图大法好

2018 年 9 月 25 日 NPDP产品经理资讯

什么状态机图,它的使用场景是什么?文章为你解读。



 1 

什么是状态机?


做产品的时候,我们总能遇到一些比较复杂的逻辑问题。比如状态的转换,字段状态的确认,权限的控制,状态的对应。而普通的流程图,或时序图,更侧重于流程和动作的描述,对于对象和状态的解读缺乏直观。


这里我们推荐一种方式,就是画一个简单的状态机图


那么什么是状态机呢?状态机我们将的一般是指有限状态机:


有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

有限状态机,又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

有限状态机可以将复杂的逻辑简化为有限个稳定状态,在稳定状态中判断事件。其中有限不是指有限次处理,而是有限个稳定状态,并且有限状态机是一个闭环系统,可以用有限的状态处理无尽的事务。

有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。


 2 

状态机图怎么画?


  • 基本元素


当你需要描述一个对象或系统的行为状态时,相比于直接的语言描述,更推荐使用状态机表或状态机图的形式。


首先我们看一下基本元素:



做需求时,至少要了解以下四种元素:起始、终止、状态、历史状态。

再加上动作和条件,我们就可以完成一个状态机图了:



所以对于状态机图来说,基本要用到6个元素:

  1. 起始

  2. 终止

  3. 状态

  4. 历史状态

  5. 动作

  6. 条件


对于历史状态的使用,我们可以参考下面的案例。


比如我们举个简单的例子,一个洗衣机的快洗模式状态图:



遇到断电的时候,机器是有缓存的,所以跳出流程恢复流程之后,是会回到历史状态。


  • 状态机表怎么画?


首先我们看下下面这张状态机图,展示了一张简单的单审批人文件的状态流转情况。



那么如何把他写成表呢?这里有多种写法,区别于纵坐标的不同,我们举两种:



左侧的纵坐标为初始状态,横坐标为终止状态。右侧的纵坐标为动作条件,横坐标为终止状态。


那么对于动作比较多且复杂的情况下,可以考虑采用右侧的表格,这样会比较一目了然。


 3 

使用场景


  • 在讲解逻辑的时候,或泳道图过于麻烦的时候,你可能会用到状态机图。

  • 可能很多你提出的需求,工程师都会自己去把他画成状态机图来方便编码。

  • 所以能为别人多做一步,别人就对你多一份感激。

  • 在梳理需求的时候,状态机图也是一个帮助思维思考的好工具。

  • 状态机图更是一个代入感很强的表现形式。


比如我们可以画一个状态机图来展示某岗位的一生:



最后希望这个岗位的同事都能够做到逻辑清晰,身体健康。



本文作者: 花生酱先生,人人都是产品经理专栏作家金融业资深产品经理,对职涯规划与个人发展有丰富经验,产品涉猎广泛,ERP、金融领域较多。

微信公众号:产品之术

转载文章仅供大家学习,不作任何商业用途。


登录查看更多
1

相关内容

FPGA加速系统开发工具设计:综述与实践
专知会员服务
65+阅读 · 2020年6月24日
【IJCAI2020-华为诺亚】面向深度强化学习的策略迁移框架
专知会员服务
27+阅读 · 2020年5月25日
多智能体深度强化学习的若干关键科学问题
专知会员服务
186+阅读 · 2020年5月24日
【经典书】贝叶斯编程,378页pdf,Bayesian Programming
专知会员服务
247+阅读 · 2020年5月18日
【ICMR2020】持续健康状态接口事件检索
专知会员服务
17+阅读 · 2020年4月18日
tf.GradientTape 详解
TensorFlow
120+阅读 · 2020年2月21日
转岗产品经理,花了3个月都做不好需求工作
人人都是产品经理
10+阅读 · 2019年9月16日
硬核实践经验 - 企鹅辅导 RN 迁移及优化总结
IMWeb前端社区
5+阅读 · 2019年5月6日
你真的懂时间序列预测吗?
腾讯大讲堂
104+阅读 · 2019年1月7日
逆向 | C++ 加壳程序的编写思路
计算机与网络安全
9+阅读 · 2019年1月1日
可能是 Android 上最好用的写作 App
少数派
10+阅读 · 2018年12月21日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
可能是讲分布式系统最到位的一篇文章
InfoQ
8+阅读 · 2018年11月19日
两套经典的用户画像
产品100干货速递
26+阅读 · 2018年6月19日
GAFT:一个使用 Python 实现的遗传算法框架
Python开发者
10+阅读 · 2017年8月1日
Knowledge Distillation from Internal Representations
Arxiv
4+阅读 · 2019年10月8日
Arxiv
19+阅读 · 2018年10月25日
VIP会员
相关资讯
tf.GradientTape 详解
TensorFlow
120+阅读 · 2020年2月21日
转岗产品经理,花了3个月都做不好需求工作
人人都是产品经理
10+阅读 · 2019年9月16日
硬核实践经验 - 企鹅辅导 RN 迁移及优化总结
IMWeb前端社区
5+阅读 · 2019年5月6日
你真的懂时间序列预测吗?
腾讯大讲堂
104+阅读 · 2019年1月7日
逆向 | C++ 加壳程序的编写思路
计算机与网络安全
9+阅读 · 2019年1月1日
可能是 Android 上最好用的写作 App
少数派
10+阅读 · 2018年12月21日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
可能是讲分布式系统最到位的一篇文章
InfoQ
8+阅读 · 2018年11月19日
两套经典的用户画像
产品100干货速递
26+阅读 · 2018年6月19日
GAFT:一个使用 Python 实现的遗传算法框架
Python开发者
10+阅读 · 2017年8月1日
Top
微信扫码咨询专知VIP会员