论文部分内容阅读
Web服务(Web Service)是一种自包含、自描述、模块化的应用程序,它吸收了分布式计算、网格计算和XML等各种技术的优点,解决了异构分布式计算以及代码与数据重用等问题,具有高度的互操作性、跨平台性和松耦合性,已经在电子商务、企业应用集成等领域发挥着重要作用,特别是Web服务组合技术,因其能实现服务的重用和增值而引起了世界范围内学术界和工业界的关注。
Web服务组合本身是一项易于产生错误的任务,因为在组合中候选的服务之间进行复杂的交互。Web服务业务流程执行语言(Web Service Business Process Execution Language,WS-BPEL,简称BPEL)用于实现Web服务的组合和合并,它建立在IBM的Web服务流语言(Web Services Flow Language,WSFL)和Microsoft的XML业务流程语言(XML Business Process Language,XLANG)之上,结合了这两种语言的特性,这样就引起了某些方面的不一致和语义的模糊;BPEL的语义是用英语定义的,这样无法避免其二义性、模糊性和不完全性。WS-BPEL技术委员会公认为需要对BPEL语义给出形式化定义。
由于要处理并发,具有复杂特性,如补偿处理、相关性、死路径删除(Dead-Path-Elimination,DPE)等,BPEL过程是容易出错的。
本文主要研究由BPEL生成的Web服务组合流程的建模、验证、测试问题。
针对BPEL流程建模,目前采用的方法有Petri网、SPIN工具、进程代数、抽象状态机和自动机等方法。本文采用赋时有色Petri网对BPEL流程建模。首先对BPEL的各种活动建模,将BPEL流程看作是活动的嵌套,将嵌套关系对应于层次化有色Petri网的层次关系缓解了有色Petri网模型过于庞大以及状态爆炸问题。本文提出的层次化有色Petri网的展开算法,使层次化Petri网可以展开成等价的非层次化Petri网,能够呈现出模型的细节。本文还完善了层次化有色Petri网的定义。
Web服务的形式化验证是近年来才开始进入研究领域的,但是已经获得了很多研究人员的关注。针对BPEL模型验证,本文给出了利用有色Petri网的属性对BPEL流程的基本属性进行验证,使用扩展时态逻辑ASK-CTL来描述要验证的属性,对模型的动态属性进行验证的一种方法。为了处理程序验证过程中出现的状态爆炸问题,本文还对谓词抽象技术和惰性抽象技术进行了研究,将CP-nets的状态图生成过程,以及状态图的谓词抽象过程合为一体,在状态生成过程中形成抽象状态图,从而避免了状态爆炸问题。本文将惰性抽象用于BPEL流程的安全性验证方法CEGAR中,优化了“抽象-验证-反例”中的前两个步骤,使得这个方法可以用于规模较大的程序上。
Web服务为分布式计算提供了灵活的、可重用的、松散耦合的模型,BPEL是半形式化的、具有复杂特性的、易含有错误行为的语言。在Web服务发布之前对服务进行验证、测试,确认服务符合设计模型是必需的。本文针对BPEL流程的CP-nets模型,提出了模型的可执行程序单元概念,基于可执行程序单元,给出了BPEL程序的测试用例生成方法,该方法可以有效的处理BPEL的并发、DPE等特性。