我正在寻找我称之为“被动状态机”的逻辑结构的正确术语。
想象一下这个嵌入式设备:一些较低的程序层处理一个芯片卡阅读器,并通过确定三种状态来对用户输入做出反应:“卡入”、“卡出”、“卡错误”。在这里执行了足够的低级操作。称其为状态机。
下层将状态报告给上层程序层,上层程序层会对变化做出反应并与系统的其余部分进行通信,即发送消息、切换 LED 等。
这个上层的程序逻辑也可以像一个简化的状态机一样被建模(UML 2):它有状态之间的转换,最重要的是进入和退出动作。状态与下层基本相同,但不是必需的(例如,可能会简化为“Card OK”、“Card not OK”)。
最大的不同是这个“上层状态机”不做任何决定——它只是对从下层得到的状态做出反应并提供动作。状态/转换/动作模型只是一种很好的方式,可以以一种安排良好的方式将逻辑可视化给读者(当然,告诉编译器要做什么......)。
或者,换一种说法:据我所知,在“真实”状态机中,状态的逻辑决定了要转换到的下一个状态。在“被动”变体中,一些外部实体做出决定,状态随之而来。结果:状态之间的所有转换都必须在上层中是可能的。
但这实际上是一个“有限状态机”(我想这里有一些活跃的东西)吗?或者有没有更好的术语来强调这个模型的被动特征?
编辑:感谢您的回复!两张图来说明。当然,两者都是状态机。但是我看到了一些质的差异:想象一下“较低级别”的 SM 直接接触硬件(阀门、传感器)并且知道它所反映的系统。例如,只有“正常”状态才能对“测试按钮”做出反应,其他状态不能。并非所有转换都是可能的。“更高级别”被认为是“愚蠢的”,并且应该只可视化/报告它从较低级别获得的输入。所以所有的转换都必须是可能的。状态切换逻辑对于所有状态都是相同的,并且将在状态之外实现(作为程序员思考)以避免冗余。它不决定,它只是执行进入/退出操作。
低等级:
更高层次: