RESTful行为形式化验证与有界模型检查的线性完备阈值
1 RESTful服务器合成与通信原子性放松
1.1 RESTful服务器合成
合成RESTful服务器是一个有趣的问题。给定资源结构和规范 $\phi$,目标是合成一个满足 $\phi$ 的无状态服务器。在某些假设下,无状态约束可以放宽。
如果对于任何客户端集合,都存在一个满足 $\phi$ 的服务器实现,则称服务器规范 $\phi$ 是通用可合成的。$\phi$ 通用可合成的一个充分条件是它对客户端ID不敏感,并且对于单个任意客户端是可合成的。不敏感意味着对于在通信中除客户端ID外一致的序列 $\sigma$ 和 $\delta$,$\sigma \models \phi$ 当且仅当 $\delta \models \phi$。
定理表明,服务器时态逻辑规范 $\phi$ 是确定性且通用可合成的,当且仅当 $ST \land \phi$ 是确定性且通用可合成的。证明思路是,对于实现 $\phi$ 的确定性服务器 $M$,可以通过一个中介将所有通信导向它,该中介用一个虚拟客户端ID替换所有客户端ID。由于 $M$ 的通用性,这种组合满足 $\phi$;因为 $M$ 只“看到”一个客户端ID且是确定性的,所以这种组合是无状态的。
在有界状态空间假设下,LTL规范的合成问题已得到解决。实现中介会增加常数复杂度。假设客户端交互是超文本驱动的,可能会使原本不可合成的规范变得可合成,但也可能显著增加规范的复杂度。
1.2 通信原子性的放松
之前假设通信是原子的,但在实际实现中,请求和响应是不同的动作,这使得不同客户端的请求可能在时间上重叠。为处