一种服务行为失配的自动检测方法

文档序号:6460495阅读:125来源:国知局
专利名称:一种服务行为失配的自动检测方法
技术领域
本发明涉及一种服务行为失配的自动检测方法,当前面向服务的计算环境中服务交互协作过程复杂,该方法可对服务之间的失配进行自动检测从而实现服务适配。

背景技术
随着面向服务的计算与软件架构的发展,服务逐渐从简单的功能封装向能够自主适应服务调用对象和网络应用环境的智能化方向发展,服务内部集成了大量基本服务单元并且包含了复杂的业务逻辑和过程约束,导致服务之间的交互协同复杂。早期的服务失配检测方法主要侧重于语法和语义层次,缺少对服务交互行为失配问题的研究。
语法层次的失配检测主要包括两个方面的内容其一是检测服务在接口名、参数名、参数类型、参数个数等不一致的情况下的失配;其二是检测因服务的开发语言和运行环境的差异性而引发的失配。语义层次的失配检测主要是检测因服务语义描述的不一致或者服务功能不完全满足系统需求而引发的功能失配。行为层次的检测主要是检测服务交互过程中因接口调用顺序的不一致、传递的消息规格不匹配等引发的失配问题。
实现服务行为失配的自动检测需建立在抽象的形式化方法基础上,通过对服务行为进行形式化建模,利用形式化方法的辅助工具来推演模拟服务行为交互过程并进行失配检测。现有的建模服务行为的形式化方法主要有基于有限状态机、自动机、Petri网和进程代数(如CCS、CSP、π演算)等。基于有限状态机、自动机和Petri网的方法在服务行为的描述上采用图形方式较为直观,但当服务行为和服务间的交互过程变得较为复杂时,这种图形刻画的方式容易出现状态空间爆炸,其计算、验证和判定的复杂度也随即增加。进程代数则是用来对动态实体进行建模的正式语言,具有严密定义的形式化语义,能够将服务的行为与清晰的操作语义联系起来,并且能对他们的属性进行自动验证。进程代数具有更丰富的协议表示和描述,能对并发系统进行更复杂的分析并支持系统模拟,但存在一个很大的缺点是其本身固有的复杂性。


发明内容
本发明所要解决的技术问题是提供一种在π演算的基本语法和扩展规则基础上,将服务行为模型表达成π演算进程,将服务间的交互行为转化为进程表达式之间的演化推理,在推演的过程中对服务行为失配进行自动检测的方法。
本发明解决上述问题所采用的技术方案是该检测方法的步骤如下 (1)将参与交互Web服务的语言模型表达成π演算进程表达式; (2)利用π演算的扩展规则对所有生成的π演算进程表达式进行并发操作,表示成如P|Q的并行形式,将交互服务间的行为演变转化为并发进程表达式之间的演化推理; (3)利用π演算的扩展规则推演并行的进程表达式,将若干进程并行组合而成的进程转变成若干个进程的和表达式,和式中任意一个子进程均表示了该并行进程的一个可能的执行方式; (4)对上述推演的和式结果中的每个子进程进行判断,如为空进程,说明子进程表示的推演过程可正常完成服务间的交互,如为非空进程,说明子进程表示的推演过程服务间存在一定的失配情况。
(5)基于上述步骤的推演结果,检测到失配点,非空子进程的第一个行为动作触发点即为失配点; (6)在基于失配点检测的基础上,根据检测到的失配服务的失配情形,对失配类型进行识别和判定。
本发明所述的失配类型有粗粒度消息失配、细粒度消息失配、消息异步失配、消息同步失配和消息序列失配五种类型。
本发明所述的粗粒度消息失配为客户端通过发送多个消息实现一个功能,而服务端则是接受一个消息来实现相应的功能;反之亦然。
本发明所述的细粒度消息失配为客户端通过发送一个消息实现一个功能,而服务端则是分别接受其中的子消息来实现相应的功能;反之亦然。
本发明所述的消息异步失配为客户端发送一个消息而服务端的协议没有要求该消息,对该消息不产生任何响应或操作;反之亦然。
本发明所述的消息同步失配为客户端需要接收一个额外的确认消息来继续下一步操作,而服务端没有提供这样的消息;反之亦然。
本发明所述的消息序列失配为客户端期望接受的消息顺序与服务端向其发送的消息顺序不一致;反之亦然。
本发明与现有技术相比,具有以下有益效果该方法采用π演算的自动推演能力和扩展规则,在产业界和学术界现有的针对服务失配研究的基础上,提出一种服务行为失配的自动检测方法,由于π演算是Robin Milner提出的以进程间的移动通信为研究重点的并发理论,与传统的进程代数CCS不同的是,π演算能够对基于构件的开发式系统中的构件间的相关性和交互性进行建模,如局部和全局决策,动态创建新进程,网络拓扑结构的动态重组,因此π演算非常适合用来建模复杂的动态变化的服务交互行为。



图1为失配点检测过程的流程图。
图2为粗粒度消息失配类型的示意图。
图3为细粒度消息失配类型的示意图。
图4为消息同步失配类型的示意图。
图5为消息异步失配类型的示意图。
图6为消息序列失配类型的示意图。

具体实施例方式 先介绍π演算的基本语法 进程和名字是Pi演算中的两个基本实体。一个进程t可以被定义成如下形式中的一种t::=o|a<x>.P|a<x>.P|τ.P|P+Q|P|Q|(va)P|if x=y then P。其中 (1)0空进程,表示不做任何操作的进程,也可由NIL表示。
(2)a<x>.P输出前缀表达式,表示进程从通道a发出x之后执行进程P。
(3)a<x>.P输入前缀表达式,表示进程从通道a接收x之后执行进程P{u/x},通道a与a称为对偶通道,P{u/x}为进程P在进行换名(即将P中的名字x替换成接收的名字u)之后的进程。如进程a<x>.x<y>在a通道接收了名字z之后,将执行x.<y>{z/x},即z.<y>。
(4)τ.P哑前缀表达式,表示进程无需执行任何动作都就可以执行进程P,τ表示进程内部动作。输入前缀、输出前缀和哑前缀统称前缀(prefix)α,即α::=τ|a<x>|a<x> (5)P+Q和式(Summation),表示在进程P和Q之间选择执行一个进程。如进程a<x>.b<y>+a<x>.0可以选择在a通道上接收x,然后在b通道上发出y而结束;也可以选择在a通道上发出x之后结束,但如果选择了前者,则后者就无法执行。因此“和”表示的是一种互斥的选择执行关系。
(6)P|Q并行表达式(Composition),表示P和Q可以并发的独立执行。此外,若P和Q中有一个在某个通道上有发出动作,而另一个在同一个通道上有接收动作,则P和Q之间还可以发生内部同步操作。
(7)(va)P限制表达式(Restriction),表示进程P对外通道a被限制,即P无法通过通道a与外部进程进行通信,但仍可以在P的内部进行通信。如在进程(va)(a.<x>|a.<y>+b.<z>)中,由于通道a被限制,因此该进程无法通过a与外界通信,但可以在内部发生同步通信而变成进程b.<z>,这是因为a.<x>|a.<y>之间可以通过通道a发生内部的同步操作而变成空进程。限制表达式还可由(a)P或new a P两种不同的形式来表示。
(8)if x=y then P匹配表达式(Match),表示如果名字x与y相同,则执行进程P,否则该进程为空进程,不执行任何动作;匹配表达式还可以表示成[x=y]P。
再介绍扩展规则(Expansion Law) 设进程P=(P1[f1])|...|Pn[fn])\L n≥1,则P可扩展成如下等价形式 其中\L表示集合L中的名字全部为受限名;fi为换名函数。
扩展规则的目的是将若干进程并行组合而成的进程转变成若干个进程的和表达式。事实上,和式中任意一个子进程均表示了该并行进程的一个可能的执行方式。
本发明基于如下假定服务在语法层次上不一致的失配问题和语义层次上的功能失配问题经过预处理模块得到有效解决,本技术以服务行为之间的失配为研究重点。
本发明主要在π演算的基本语法和扩展规则基础上,将服务行为模型表达成π演算进程,将服务间的交互行为转化为进程表达式之间的演化推理,在推演的过程中对服务行为失配进行自动检测。服务行为失配检测包括失配点检测与失配类型识别两大部分。参见图1,具体步骤如下 (1)将参与交互Web服务的语言模型(如WSDL、BPEL、OWL-S)表达成π演算进程表达式。Web服务操作与π演算的进程之间的映射如表1所示
表1Web服务操作的进程表达 (2)对所有生成的π演算进程表达式进行并发操作,表示成如P|Q的并行形式,将交互服务间的行为演变转化为并发进程表达式之间的演化推理。
(3)利用π演算的扩展规则推演并行的进程表达式,将若干进程并行组合而成的进程转变成若干个进程的和表达式,和式中任意一个子进程均表示了该并行进程的一个可能的执行方式。
(4)对上述推演的和式结果中的每个子进程进行判断,存在两种情况如为空进程,说明子进程表示的推演过程可正常完成服务间的交互;如为非空进程,说明子进程表示的推演过程服务间存在一定的失配情况。
(5)基于上述步骤的推演结果,检测到失配点,非空子进程的第一个行为动作触发点即为失配点。
(6)在基于失配点检测的基础上,根据检测到的失配服务的失配情形,对失配类型进行识别和判定。在具体的匹配过程可以将基于π演算的进程表达式采用类似于字符串匹配的方式来识别失配类型。失配类型识别是后期的适配器生成基础。关于适配器生成将不在本发明中讨论 对服务之间的各种的失配情况进行分析总结,对失配情况进行归纳归类,得到如下五种主要失配类型 (1)粗粒度消息失配CMM(coarse-grained message mismatch)如服务client通过发送多个消息usr,pwd实现一个功能,而服务B则是接受一个消息m(m=usr+pwd)来实现相应的功能;反之亦然。通过分析总结,粗粒度消息失配类型通常包含类似x<m1>.x<m2>.x<m>的部分表达式,其中消息m=m1+m2。
图2演示了一个粗粒度消息失配类型的例子,对该情形进行了直观的展示,其检测过程为将客户端Client和服务器Service两个服务表达成如下的π演算进程 ClientC=x<usr>.x<pwd>.y<file> ServiceS=x<log in>.y<file> 这里的消息login由usr和pwd两个子消息组合而成。将客户端Client和服务器Service之间的交互表示成组合进程R(C,S)并进行扩展,如下 R(C,S)=(x<usr>.x<pwd>.y<file>|x<log in>.y<file>)/L =(x<usr>.x<pwd>.y<file>.x<log in>.y<file>)/L 其中L={x,y}。以上扩展过程表达式包含一个非空进程x<usr>.x<pwd>.y<file>.x<log in>.y<file>,表明两个进程在交互过程中的某步操作存在失配,因为进程Client通过通道x先后发送usr和pwd,而进程Service期望通过通道x接收组合消息login。该非空进程的第一个行为动作触发点x<usr>即为交互失配点。
(2)细粒度消息失配FMM(fine-grained message mismatch)如服务client通过发送一个消息m(m=usr+pwd)实现一个功能,而服务B则是分别接受其中的子消息usr,pwd来实现相应的功能;反之亦然。通过分析总结,细粒度消息失配类型通常包含类似x<m>.x<m1>.x<m2>的部分表达式,其中消息m=m1+m2。
图3演示了一个细粒度消息失配类型的例子,对该情形进行了直观的展示,其检测过程为将客户端Client和服务器Service两个服务表达成如下的π演算进程 ClientC=x<log in>.y<file> ServiceS=x<usr>.x<pwd>.y<file> 这里的消息login由usr和pwd两个子消息组合而成。将客户端Client和服务器Service之间的交互表示成组合进程R(C,S)并进行扩展,如下 R(C,S)=(x<log in>.y<file>|x<usr>.x<pwd>.y<file>)/L =(x<log in>.y<file>.x<usr>.x<pwd>.y<file>)/L 以上扩展过程表达式包含一个非空进程x<log in>.y<file>.x<usr>.x<pwd>.y<file>,表明两个进程在交互过程中的某步操作存在失配,因为进程Client通过通道x发送组合消息login(usr+pwd),而进程Service期望通过通道x先后接收子消息usr和pwd。该非空进程的第一个行为动作触发点x<log in>即为交互失配点。
(3)消息异步失配AMM(asynchronous message mismatch)如服务customer发送一个CA消息而服务B的协议没有要求这些消息,对该消息不产生任何响应或操作;反之亦然。通过分析总结,消息异步失配类型通常包含类似x<m>的部分表达式。
图4用一个简单的在线订购服务演示了消息序列失配类型的例子。客户操作流程为客户向供应商发出订购消息PO,之后客户可以选择取消订单发送CA而结束这次交易;或是继续交易,在收到供应商的订单确认消息DEL后,网上支付帐单发送BT消息给供应商,然后结束这次交易。供应商操作流程为供应商首先收到客户的订购消息PO,然后向客户发送消息DEL确认发货,最后收到客户的网上帐单支付结束本次交易。
a、将参与交互的服务语言模型转化成π演算进程表达式 客户CustomerP=x<PO>.(w<CA>+y<DEL>.z<BT>) 供应商ProviderQ=x<PO>.y<DEL>.z<BT> b、利用π演算的扩展规则对并发进程表达式进行推演,生成组合的子进程 R(P,Q)=(x<PO>.(w<CA>+y<DEL>.z<BT>)|x<PO>.y<DEL>.z<BT>)\L =τ<(Px,Qx,{PO})>.((w<CA>+y<DEL>.z<BT>)|y<DEL>.z<BT>)\L =τ<(Px,Qx,{PO})>(w<CA>.y<DEL>.z<BT>+τ<(Py,Qy,{DEL})>.(z<BT>|z<BT>))\L =(τ<(Px,Qx,{PO})>w<CA>.y<DEL>.z<BT>+τ<(Px,Qx,{PO}),(PDEL,Q.DEL,{DEL}),(Pz,Qz,{BT})>)\L c、对组合进程中的每个子进程进行判断 以上生成的组合进程表达式中包含一个空进程和一个非空进程τ<(Px,Q.x,{PO})>.w<CA>.y<DEL>.z<BT>,非空进程表明客户customer和供应商provider两个进程存在失配,在交互到w<CA>不能继续下去,因为进程customer通过通道w发送取消订单消息CA,而进程provider没有提供相应的通道接收,因此无法继续完成交互。非空进程的第一个行为动作触发点w<CA>即为交互失配点。
d、识别失配类型 在检测到失配点的基础上,根据失配情形判定所属的失配类型。上述的失配情况属于消息多余失配类型,因为customer服务发出消息CA而provider服务不存在针对此消息的响应和操作。
(4)消息同步失配SMM(synchronous message mismatch)服务customer需要接收一个额外的确认消息ACK来继续下一步操作,而服务provider没有提供这样的消息;反之亦然。通过分析总结,消息同步失配类型通常包含类似x<m>的部分表达式。
图5演示了一个消息同步失配类型的例子,对该情形进行了直观的展示,其检测过程为将客户Customer和供应商Provider两个服务表达成如下的π演算进程 客户CustomerC=x<PO>.y<ACK>.z<BT> 供应商ProviderP=x<PO>.z<BT> 将服务customer和provider之间的交互表示成组合进程R(C,P)并进行扩展,如下 R(C,P)=(x<PO>.y<ACK>.z<BT>|x<PO>.z<BT>)\L =τ<(C.x,P.x,{PO})>.(y<ACK>.z<BT>|z<BT>)\L =(τ<(C.x,P.x,{PO})>.y<ACK>.z<BT>.z<BT>)\L 以上扩展过程表达式中包含一个非空进程 τ<(C.x,P.x,{PO})>.y<ACK>.z<BT>.z<BT>,其表明客户customer和供应商provider两个进程存在失配,在交互到y<ACK>不能继续下去,因为进程customer期望通过通道y接收确认消息ACK,而进程provider没有提供这样的消息,因此无法继续完成交互。该非空进程的第一个行为动作触发点y<ACK>即为交互失配点。
(5)消息序列失配MSM(message sequence mismatch)如服务A期望接受的消息顺序与服务B向其发送的消息顺序不一致;反之亦然。通过分析总结,这种失配类型通常包含类似x<m1>.y<m2>.y<m2>.x<m1>的部分表达式。
图6演示了一个消息序列失配类型的例子,对该情形进行了直观的展示,其检测过程为将客户Customer和供应商Provider两个服务表达成如下的π演算进程 客户CustomerC=x<PO>.y<SO>.z<PM> 供应商ProviderP=x<PO>.z<PM>.y<SO> 将服务Customer和Provider之间的交互表示成组合进程R(C,P)并进行扩展,如下 R(C,P)=(x<PO>.y<SO>.z<PM>|x<PO>.z<PM>.y<SO>)\L =τ<(C.x,P.x,{PO})>.(y<SO>.z<PM>.z<PM>.y<SO>)\L 以上扩展过程表达式中包含一个非空进程 τ<(Cx,P.x,{PO})>.(y<SO>.z<PM>.z<PM>.y<SO>),其表明客户customer和供应商provider两个进程存在失配,在交互到y<SO>不能继续下去,因为进程customer先通过通道y发送消息SO再通过通道z发送消息PM,而进程provider则期望先通过通道z接收消息PM再通过通道接收消息SO,因此无法继续完成交互。该非空进程的第一个行为动作触发点y<SO>即为交互失配点。
权利要求
1、一种服务行为失配的自动检测方法,其特征在于步骤如下
(1)将参与交互Web服务的语言模型表达成π演算进程表达式;
(2)利用π演算的扩展规则对所有生成的π演算进程表达式进行并发操作,表示成如P|Q的并行形式,将交互服务间的行为演变转化为并发进程表达式之间的演化推理;
(3)利用π演算的扩展规则推演并行的进程表达式,将若干进程并行组合而成的进程转变成若干个进程的和表达式,和式中任意一个子进程均表示了该并行进程的一个可能的执行方式;
(4)对上述推演的和式结果中的每个子进程进行判断,如为空进程,说明子进程表示的推演过程可正常完成服务间的交互,如为非空进程,说明子进程表示的推演过程服务间存在一定的失配情况;
(5)基于上述步骤的推演结果,检测到失配点,非空子进程的第一个行为动作触发点即为失配点;
(6)在基于失配点检测的基础上,根据检测到的失配服务的失配情形,对失配类型进行识别和判定。
2、根据权利要求1所述的服务行为失配的自动检测方法,其特征在于所述的失配类型有粗粒度消息失配、细粒度消息失配、消息异步失配、消息同步失配和消息序列失配五种类型。
3、根据权利要求2所述的服务行为失配的自动检测方法,其特征在于所述的粗粒度消息失配为客户端通过发送多个消息实现一个功能,而服务端则是接受一个消息来实现相应的功能;反之亦然。
4、根据权利要求2所述的服务行为失配的自动检测方法,其特征在于所述的细粒度消息失配为客户端通过发送一个消息实现一个功能,而服务端则是分别接受其中的子消息来实现相应的功能;反之亦然。
5、根据权利要求2所述的服务行为失配的自动检测方法,其特征在于所述的消息异步失配为客户端发送一个消息而服务端的协议没有要求该消息,对该消息不产生任何响应或操作;反之亦然。
6、根据权利要求2所述的服务行为失配的自动检测方法,其特征在于所述的消息同步失配为客户端需要接收一个额外的确认消息来继续下一步操作,而服务端没有提供这样的消息;反之亦然。
7、根据权利要求2所述的服务行为失配的自动检测方法,其特征在于所述的消息序列失配为客户端期望接受的消息顺序与服务端向其发送的消息顺序不一致;反之亦然。
全文摘要
本发明公开了一种服务行为失配的自动检测方法。其步骤是将参与交互Web服务的语言模型表达成π演算进程表达式;利用π演算的扩展规则对所有生成的π演算进程表达式进行并发操作;利用π演算的扩展规则推演并行的进程表达式;对上述推演的和式结果中的每个子进程进行判断;基于上述步骤的推演结果,检测到失配点,非空子进程的第一个行为动作触发点即为失配点;在基于失配点检测的基础上,根据检测到的失配服务的失配情形,对失配类型进行识别和判定。本发明在π演算的基本语法和扩展规则基础上,将服务行为模型表达成π演算进程,将服务间的交互行为转化为进程表达式之间的演化推理,在推演的过程中对服务行为失配进行自动检测。
文档编号G06F11/36GK101309181SQ20081006226
公开日2008年11月19日 申请日期2008年6月17日 优先权日2008年6月17日
发明者邓水光, 缪晶晶, 健 吴, 莹 李, 尹建伟, 吴朝晖 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1