基于SMT分析的Web服务消息竞争检测
1. 引言
云计算的成功很大程度上依赖于可信赖的Web服务。而Web服务的可信赖性由安全、隐私、可靠性和业务完整性四个因素来评判。其中,可靠性是创建可信赖Web服务的四大支柱之一,但编写可靠的Web服务面临诸多挑战。Web服务容易出现并发错误,主要源于用户/服务请求的并发处理以及同步和异步等多样化通信机制导致的复杂交互行为。
消息竞争是Web服务中常见的问题,它被列为前25大危险编程错误之一。当消息到达目的地的顺序无法保证,受网络延迟和调度变化等因素的非确定性影响时,就会发生消息竞争。例如,在图1所示的简单消息竞争场景中,WS1向WS2和WS3分别发送消息M1和M2,WS3收到M1后向WS2发送消息M3。正常情况下WS3期望在收到M3之前收到M2,但由于WS1和WS2之间意外的网络延迟或WS1发送M2的延迟,M3可能先于M2到达WS2,此时M2和M3就发生了竞争。
传统的测试方法在检测消息竞争方面效果不佳。一方面,多次执行或模拟Web服务只能证明错误的存在,不能证明其不存在,而且要检查所有可能的场景几乎是不可能的;另一方面,测试人员需要解读大量输出以确定是否存在消息竞争,这不仅耗时,还容易误判,并且检测到消息竞争后难以重现特定的执行序列。
为了解决这些问题,本文提出了一种基于SMT(Satisfiability Modulo Theories)分析的新颖方法来检测Web服务中的消息竞争。该方法可以在用户指定的范围内证明消息竞争的不存在,且只报告真实的消息竞争。具体步骤如下:
1. 将BPEL(Business Process Execution Language)过程转换为Web服务建模图(WSMG)。
超级会员免费看
订阅专栏 解锁全文
1523

被折叠的 条评论
为什么被折叠?



