介绍:
Finite state machines(FSP),主要用于对于软件的建模。本文主要介绍的实现FSP的系统为:LTS(labelled transition system)。所有的FSP流程都有一个期对应的LTS模型。
其主要目的为给并行程序建模,给建模好的并行程序检测死锁等问题。可以为程序员发现那些不容易直接通过肉眼直接辨别的问题。
建模程序下载链接:LTSA - Labelled Transition System Analyser
LTS:
与现实不同,LTS模拟的系统不会强调这个信号灯的timing,它只会展示这个信号灯被允许的运行顺序。我们需要从系统中抽象出这样的顺序。由于要展现出一个系统中可能发生的所有行为,所以这个模型会非常的庞大。一个只有11个statement的LTS系统就能生成出一个非常庞大的图像:
由于其会模拟所有行为,自然可以发现那先隐藏的错误。
FSP建模并行程序:
FSP 系统允许多个porcess同时互不干扰的运行,单这些程序可以在某些地方进行同步,并行处理。(模拟现实中多核对资源的操作)
每一个FSP process model有一系列 Atomic actions(不可分割的操作单元),也叫alphabet。这个process需要对这些actions进行定义和排列,给他们设定一系列必须遵守的action运行顺序。所有的process都有这些Alphbet组成。
alphabet 建模语法:
action perfix(行动前缀): '->'
这个行动前缀左边为行动名(action),右边为将要到达的下一个行程(process)。这个alphabet里,左边的x为行程名,->为行动前缀,P为之个系统之后会进行处理的流程(process)。
举例:
在信号灯系统中:LTS语句为
在这例子中,green代表一个atomic action,->为这个atomic action和它之后要进行的流程都连接符。他之后要进行的流程为yellow->red->TRAFFIC_LIGHT。之后的流程中的TRAFFIC_LIGHT为整个流程的名字,代表着这个流程将会从头开始再做一个循环,
Atomic action用小写英语表示,process name用大写表示。
上面就是最重要的基础语法。对这个语法进行扩展,也可以把上面的式子写成下面这个样子:
这就是把几个Atomic action总结成了一个单独的流程,这样其他流程就可以引用它,从而进行更精细的定义。
使用LTSA来实现:
打开上面链接的软件,输入这些代码,最终就可以用画图来实现这样的state图: