CN104572445B - 用于检测Web服务组合中BPEL流程数据竞争的方法 - Google Patents
用于检测Web服务组合中BPEL流程数据竞争的方法 Download PDFInfo
- Publication number
- CN104572445B CN104572445B CN201410787154.XA CN201410787154A CN104572445B CN 104572445 B CN104572445 B CN 104572445B CN 201410787154 A CN201410787154 A CN 201410787154A CN 104572445 B CN104572445 B CN 104572445B
- Authority
- CN
- China
- Prior art keywords
- bpel
- track
- activities
- tms
- priority order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明为一种Web服务组合中BPEL流程数据竞争的检测方法:首先基于BPEL设计规则构造BPEL活动间的先后序关系集,并通过BPEL执行引擎插桩收集BEPL流程的执行轨迹;然后分析轨迹中对变量读写操作的活动是否满足先后序约束条件,从而判断是否存在数据竞争;最后再通过预测性分析方法检测隐藏的数据竞争,完成数据竞争的检测。本发明能有效降低数据竞争的误报率,召回率显著提升;并且能够提升检测效率,只需收集少量的运行轨迹,大大降低了人工成本。
Description
技术领域
本发明属于计算机技术领域,尤其是软件技术领域。本发明提供了一种结合静态分析和动态执行的、用于检测BPEL流程中数据竞争的方法,用于软件质量保障。
背景技术
面向服务的软件体系结构SOA具有异构、***互操作、松耦合等特性,得到了业界的普遍接受。作为SOA的具体实现,基于Web服务的软件开发也成为常见的软件开发方法,其中,服务组合是生成新服务与构建应用的重要方式。BPEL(Web服务业务流程执行语言)是服务组合的主要方式之一,并已经成为事实上的、基于Web服务开发可执行业务过程的业界标准。
BPEL是一种基于XML的、用来描写业务流程的编程语言,业务流程中的每个单一步骤由Web服务实现。一个BPEL流程定义的服务组合由节点服务(BPEL中PartnerLink表示的服务)合作完成,服务组合中的节点服务可分布在具有自主计算能力的不同***中。为提高服务组合的服务质量和执行效率,应尽可能安排相关的节点服务并发执行。根据业务逻辑的需要,节点服务之间存在复杂的流程结构关系。
BPEL中不合理的编排可能导致流程中存在诸如死锁、执行不可达活动、数据竞争等问题,其中数据竞争现象最为普遍。数据竞争是指:在多线程程序中,不同线程的两个操作对相同的共享变量的访问没有特定的顺序,且其中至少有一个是写操作的情况。传统并发程序领域已经对数据竞争进行了比较深入的研究,常用的方法有基于发生序检测方法和基于锁集的检测方法。在BPEL流程数据竞争检测领域,现有研究是基于图理论的静态检测方法,仅讨论了在flow和link机制下进行数据竞争的检测。本发明将提供一种结合了静态分析和动态执行的Web服务数据竞争检测方法。
发明内容
本发明要解决的问题是:现有技术中对BPEL中的数据竞争检测限于基于图理论的静态检测方法,检测程度有限,误报率高,需要新的检测技术来保障程序的质量。
本发明的技术方案为:用于检测Web服务组合中BPEL流程数据竞争的方法,基于BPEL设计规则构造BPEL活动间的先后序关系集,并通过BPEL执行引擎插桩收集BEPL流程的执行轨迹,然后分析轨迹中对变量读写操作的活动是否满足先后序约束条件,从而判断是否存在数据竞争,最后再通过预测性分析方法检测隐藏的数据竞争,完成数据竞争的检测。
本发明具体包括以下步骤:
1)根据BPEL设计的流程编排规则和并发机制提取出BPEL活动间的先后序关系;
2)通过BPEL引擎动态执行BPEL插桩,收集BPEL程序执行轨迹的日志;所述日志为执行轨迹最小闭包集TMS,执行轨迹最小闭包集TMS满足收集到的执行轨迹覆盖BPEL程序中所有的活动,且执行轨迹数目尽可能少;
3)静态分析执行轨迹中对共享变量读写操作的活动是否满足先后序约束,从而判断是否存在数据竞争:利用切片技术提取TMS中对变量进行读写操作的活动,并检查其中有共享变量读写的、可并发执行的活动是否满足先后序约束,若不满足且至少有一个活动是对该变量进行写操作,则存在数据竞争;
4)通过预测性分析方法,在满足先后序关系的前提下通过约束求解得出可能的执行轨迹,并按求解得到的新的轨迹实际运行程序,进一步查找出隐含的数据竞争;
5)给出BPEL流程中的数据竞争检测报告。
步骤1)中,先后序关系是可传递的,通过部分活动间的先后序关系构造出所有活动间的先后序关系,设<A,R>表征BPEL活动间的先后序关系:
A是BPEL中所有活动集<a1,a2,...,an>,R是A中所有活动间的先后序关系闭包集:R=Set<aj<ak|j,k∈[1,n]∧j≠k>,R不满足对称性但满足传递性,如果aj,ak满足先后序关系,则有<aj,ak>∈R∨<ak,aj>∈R,否则先后序关系的传递性表示为:如果有<ai,aj>∈R∧<aj,ak>∈R,其中i,j,k∈[1,n]且i≠j,j≠k,则<ai,ak>∈R。
步骤2)中,采用BPEL引擎Oracle BPEL PM执行插桩,先在BPEL源程序上进行插桩操作,然后用BPEL引擎执行插桩后的BPEL程序,每执行一次程序得到一条执行轨迹记录,记录的信息包括:执行过程被调用的活动名及活动的执行时间、每个活动对哪些变量进行了读写操作及变量的中间结果。
进一步的,步骤2)中,执行轨迹最小闭包集TMS具体为:
设T为程序执行轨迹的闭包集<T1,T2,...Tn>,对于T中任意一条轨迹Ti,是由不同的活动序列组成,将Ti中出现的所有活动看作一个集合,记为TAi。执行轨迹最小闭包集TMS:<Ta,Tb,...,Tx>需满足TAa∪TAb∪…∪TAx=A,其中a,b,x∈[1,n],A是BPEL中所有活动集,且对于任意TMS的真子集<Ta′,Tb′,...,Tx′>,TAa′∪TAb′∪…∪TAx′≠A或且|<Ta′,Tb′,...,Tx′>|<|<Ta,Tb,...,Tx>|,其中a′,b′,x′∈{a,b,…,x};
其中TMS的构造过程为:通过不断调整BPEL的输入参数,并执行BPEL程序,得到不同的执行轨迹,那些使得所有活动都至少执行一次的轨迹集合即为TMS,TMS中的执行轨迹记为Seed Trace。
步骤3)中,对于TMS的执行轨迹中出现的每个变量,进行静态后向切片操作,然后分别提取出对该变量进行写操作的活动集合和读操作活动集合,具体为:根据先后序关系以及TMS构造BPEL中所有活动间先后序关系的有向图BARG,基于有向图BARG中的可达性,对TMS的执行轨迹中出现的每个变量v进行回溯搜索,搜索出执行轨迹中对该变量进行读、写操作的活动,然后分析这些活动是否满足BARG中构造出的先后序关系约束,若不满足且至少有一个活动是对该变量进行写操作,则存在数据竞争。
数据竞争类型包括:1)一个活动的输出是另一个活动的输入,且这两个活动间不存在先后序关系;2)两个活动共享一个输出变量,且这两个活动间不存在先后序关系。
步骤4)具体为:首先,将TMS的执行轨迹中对共享变量最近L次读写操作活动顺序进行重组,假设TMS的执行轨迹中对共享变量共有X个读操作,Y个写操作,则可衍生出种可能的执行轨迹,其中L≤X+Y,然后,结合约束求解器求解出最近L次读写操作的可行执行轨迹,得到待确认的可能会有数据竞争产生的执行轨迹,按照所述可能会有数据竞争产生的执行轨迹的要求,运行BPEL,查看实际结果中是否真的存在数据竞争;
其中,约束求解器采用Z3求解器,求解可行执行轨迹的过程为:根据先后序关系以及TMS构造BPEL中所有活动间先后序关系的有向图BARG,将TMS的执行轨迹中最近L次对共享变量的读写操作和BARG中先后序关系的约束条件进行编码,之后代入约束求解器中,得到可行解空间,解空间即为满足约束条件的所有可行执行轨迹。
本发明通过采用以上技术方案,具有以下优点:
1.有效降低数据竞争的误报率(False Positive):传统的数据竞争检测方法存在着一个严重的问题,数据竞争的误报率很高。我们的方法结合了静态检测技术和动态执行过程,可以有效降低数据竞争的误报率。
2.召回率显著提升:通过收集到的有限执行轨迹并结合Happens-Before约束关系,利用求解器自动生成大量满足约束条件的轨迹,并利用BPEL引擎执行这些运行轨迹,可以发现潜在的数据竞争。
3.高效:只需收集少量的运行轨迹,自动化生成大量满足约束条件的运行轨迹,大大降低了人工成本。
附图说明
图1为本发明的结构流程图。
图2为OrderBooking组合服务的具体流程。
图3为OrderBooking流程中活动间有向图BARG。
图4为执行轨迹Trace。
具体实施方式
本发明方法首先依据BPEL设计规则和并发机制构造出BPEL活动间的先后序关系;再通过在BPEL引擎上插桩,收集BPEL执行轨迹;接着依据静态检测算法检测收集到的执行轨迹是否存在数据竞争;最后结合求解器、在满足先后序的前提下,通过预测性分析技术生成新的执行轨迹,并按照新生成的轨迹实际运行BPEL流程,以检测出隐藏比较深的数据竞争。
本发明的流程如图1所示,具体包括如下四个步骤。
第一步:利用BPEL设计规则和并发机制构造部分BPEL活动间的先后序(Happens-Before)关系集。BPEL活动由基本活动和结构性活动组成:基本活动包括Assign、Invoke、Receive、Reply等;结构性活动包括Sequence、if、while、pick、flow、Link、Join Condition等。
基本活动中存在Happens-Before先后序关系的有:
1)Invoke-Receive:Invoke活动和Receive活动成对出现时,Invoke活动只有一个输入参数input,Receive活动只有一个输出参数output。当Invoke活动执行结束时通过回调方式执行Receive活动。
2)Receive-Reply:在Reply活动前面必有Receive活动,反之不成立。
结构性活动中存在Happens-Before先后序关系的有:
1)Sequence活动中嵌套的各个基本活动满足Happens-Before关系,例如<sequence><a1><a2>...<an></sequenece>,则其中任意两个活动都满足Happens-Before关系。
2)Link绑定的Source活动和Target活动间满足Happens-Before关系。
3)Join Condition所涉及到的活动间满足Happens-Before关系。
依据以上BPEL规则,部分BPEL活动间的Happens-Before发生序关系可以直接得到。由于Happens-Before发生序关系是可传递的,可以将这一关系拓展到更多的活动,但不能保证任意两个活动间都存在这种Happens-Before先后序关系。
定义1:<A,R>表征BPEL活动间的Happens-Before先后序关系
设A是BPEL中所有活动集<a1,a2,...,an>,R是A上所有活动间的Happens-Before先后序关系闭包集:R=Set<aj<ak|j,k∈[1,n]∧j≠k>,关系R不满足对称性但满足传递性。如果aj,ak满足Happens-Before关系,则有<aj,ak>∈R∨<ak,aj>∈R,否则Happens-Before先后序关系的传递性可表示为:如果有<ai,aj>∈R∧<aj,ak>∈R,则<ai,ak>∈R,其中i,j,k∈[1,n]且i≠j,j≠k。符号“^”表示“且”,符号“∨”表示“或”。符号“<”表示先后序关系。
第二步:通过BPEL引擎动态执行BPEL插桩、收集执行轨迹。使用BPEL引擎可以执行BPEL程序,常见的引擎有Oracle BPEL PM、ActiveBPEL、BPEL Designer等,本发明选用的是Oracle BPEL PM。先在BPEL源程序上进行插桩操作,然后用BPEL引擎执行插桩后的BPEL程序,每执行一次程序就可以得到一条执行轨迹记录,记录的信息包括:执行过程被调用的活动名及活动的执行时间、每个活动对哪些变量进行了读写操作及变量的一些中间结果。
在收集执行轨迹时,并非收集到的执行轨迹越多越好。为保证效率,只需找到一个执行轨迹最小闭包集TMS,其它执行轨迹均可由TMS中的执行轨迹按照一定的策略来生成。执行轨迹最小闭包集TMS须保证收集到的执行轨迹可以覆盖BPEL程序中所有的活动,且执行轨迹数目尽可能少。
定义2:执行轨迹最小闭包集TMS
设T为程序执行轨迹的闭包集<T1,T2,...Tn>,对于T中的任意一条轨迹Ti,是由不同的活动序列组成的,Ti是由不同的活动(A中元素)组成,不同的活动序列形成一条轨迹,将Ti中出现的所有活动看作一个集合,记为TAi。执行轨迹最小闭包集TMS:<Ta,Tb,...,Tx>需满足TAa∪TAb∪…∪TAx=A,其中a,b,x∈[1,n],A是BPEL中所有活动集,且对于任意TMS的真子集<Ta′,Tb′,...,Tx′>,TAa′∪TAb′∪…∪TAx′≠A或且|<Ta′,Tb′,...,Tx′>|<|<Ta,Tb,...,Tx>|,其中a′,b′,x′∈{a,b,…,x};
TMS构造过程为:通过不断调整BPEL的输入参数,并执行BPEL程序,得到不同的执行轨迹。那些使得所有活动都至少执行一次的轨迹集合即为TMS,TMS中的执行轨迹记为Seed Trace。这些执行轨迹只需覆盖BPEL程序中的所有活动而不需要覆盖BPEL程序中各个分支路径。假设BPEL程序中有K个分支节点,每个分支节点的分支路径数目分别为<n1,n2,...,nK>,则BPEL程序分支路径数目总和为N=n1*n2*,...,*nK,也即有N个可行的执行轨迹。而本发明的TMS中Seed Trace数目远小于N,且可以通过Seed Trace生成任意的可行轨迹。结合定义1的<A,R>和定义2的TMS,即可构造出BPEL中所有活动间Happens-Before先后序关系图BARG。图中节点表示BPEL中的活动,有向边表示活动间的Happens-Before先后序关系。
第三步:静态分析执行轨迹中对共享变量读写操作的活动是否满足Happens-Before约束,从而判断是否存在数据竞争。此步骤着重关注对共享变量进行读写操作的活动。为此,我们结合搜索算法和切片技术对执行轨迹进行分析。
程序切片是由程序中的一些语句和判定表达式组成的集合,这些语句和判定表达式可能会影响到程序的某个位置p上所定义或使用的变量v的值。<p,v>称为切片准则。所述位置常用程序的行号标识。
根据切片准则的不同,程序切片可分为静态切片与动态切片;前向切片和后向切片;过程内切片、过程间切片与模块间切片;粗粒度切片和细粒度切片等。这里我们使用的是静态后向切片,基于已经构造的有向图BARG中的可达性,对执行轨迹中出现的每个变量v进行回溯搜索,搜索出执行轨迹中对该变量进行读、写操作的活动,然后分析这些活动是否满足BARG中构造出的先后序关系约束。若不满足且至少有一个是对该变量进行写操作,则存在数据竞争。本发明提出的方法可以检测出BPEL中两种类型的数据竞争。
定义3:BPEL中两种类型的数据竞争Racet1和Racet2
所有活动的输入集合记为I(A),所有活动的输出集合记为O(A)。I(ak)表示活动ak的输入,O(ak)表示活动ak的输出。活动的输入是对某变量的读操作,活动的输出是对某变量写操作,BPEL中的数据竞争可表示为:
1)
2)
其中Racet1表示一个活动的输出是另一个活动的输入,且这两个活动间没有Happens-Before约束;Racet2表示两个活动共享一个输出变量,且这两个活动间没有Happens-Before约束。基于执行轨迹的数据竞争检测算法如下所示。
基于执行轨迹的数据竞争检测算法
输入:<A,R>,TMS<trace>
输出:Racet1,Racet2
算法步骤:
第四步:通过预测性分析方法生成新的执行轨迹,并动态实际运行,进一步发现隐藏的数据竞争。
首先,将Seed Traces中对共享变量最近L次读写操作活动顺序进行重组。假设Seed Traces中对共享变量共有X个读操作,Y个写操作,则可衍生出种可能的执行轨迹,其中L≤X+Y。对于L的具体取值与实际的执行轨迹相关,不同的轨迹L的取值可能不同。
然后,结合约束求解器求解出最近L次读写操作的可行执行轨迹,得到待确认的可能会有数据竞争产生的执行轨迹。按照执行轨迹的要求,运行BPEL,查看实际结果中是否真的存在数据竞争。
约束求解器求解可行执行轨迹的过程为:将执行轨迹中最近L次对共享变量的读写操作和已经构造好的BARG中Happens-Before约束条件进行编码后代入约束求解器中,得到可行解空间,解空间即为满足约束条件的所有可行执行轨迹。编码过程即将条件表达式转换成求解器可识别的形式,不同求解器需要的条件表达式形式略有不同。
本发明采用Z3求解器。Z3求解器是由微软研究院开发的一款SMT(SatisfiabilityModulo Theories)求解器,可以用来对数值型、布尔型表达式进行约束求解。
下面结合OrderBooking组合服务流程对本发明作具体实施说明。本发明不仅限适用于该例。
OrderBooking服务是一个提供订单竞价的组合服务,报价低的供应商赢得订单。当它收到客户的订单请求时,OrderBooking向名为CreditRating的伙伴服务发出查询该客户的信誉等级的服务请求,进行信誉等级验证。信誉等级验证通过后,分别向RapidDistributors和Select Manufacturer伙伴服务发送订单请求,RapidDistributors和Select Manufacturer伙伴服务分别返回他们对订单的报价,最后报价低的供应商(伙伴服务)赢得订单,OrderBooking将赢得订单的供应商信息和报价返回给客户。图2是该组合服务的具体流程。
对该服务进行数据竞争检测的具体过程如下:
1、建立活动间的Hanppens-Before关系。
OderBooking中有:receiveInput、AssignCR、Invoke_CR、Assign_Rating、Initial、Assign_SMIn、Invoke_SM、Receive_SM、SelectManufacturing、Assign_RDIn、Invoke_RD、Receive_RD、SelectRapidDistributors、AssignOutput等14个活动,涉及到的共享变量有:inputVariable、outputVariable等。14个活动依次标记为{a1,a2,...a14},所构成的先后序关系集(有向图)如图3所示。
其中,活动{a1,a2,...a5},{a6,a7,a8,a9},{a10,a11,a12,a13}均满足上述提出的Happens-Before关系,也即<ai,aj>∈R,i<j且i,j∈[1,5]∨[6,9]∨[10,13]。但对于任意的ai∈{a6,a7,a8,a9},aj∈{a10,a11,a12,a13},ai和aj之间不存在Happens-Before关系,即且
2、收集执行轨迹。
首先将OrderBooking服务部署到Oracle BPEL PM Server中,执行OrderBookingBPEL流程,获得执行轨迹。不同的输入参数可以得到不同的执行轨迹。本例只有一个二叉分支节点,故只需收集两条完整的不等价的执行轨迹即可满足Trace最小闭包集TMS条件,覆盖所有的活动。
收集到的执行轨迹如图4所示,BPEL程序执行的过程对应着轨迹中的每一个事件(event)。执行轨迹中记录的信息包括:BPEL执行过程中调用的所有活动名称(sid,pid)及这些活动的执行时间(date)、各个活动对哪些变量进行了读写操作(to)以及变量的中间值(message,details)。
3、检测数据竞争。
通过对OrderBooking流程中共享变量inputVariable和outputVariable进行后向切片操作,得到对变量inputVariable进行写操作的活动集为{a1,a4,a5,a9,a13}、读操作活动集为{a2,a6,a10,a14},对变量outVariable进行写操作活动集为{a14}、读操作活动集为空
依据上述的检测算法可知且故存在第一种类型的数据竞争Racet1,即变量inputVariable是活动a6的输入也是活动a13输出,且活动a6和a13之间不存在Happens-Before约束关系,会导致a6的输入具有不确定性。
此外,且O(a9)∩O(a13)≠Φ,故存在第二种类型数据竞争Racet2,也即活动a9和a13都对共享变量inputVariable进行了写操作,且a9和a13之间不存在Happens-Before约束关系,故存在数据竞争。
4、预测性分析方法生成新的执行轨迹并动态执行,发现隐藏的数据竞争。
在上述步骤3中得到了对变量inputVariable进行写操作的活动集为{a1,a4,a5,a9,a13}、读操作活动集为{a2,a6,a10,a14}。这些活动间的部分Happens-Before关系有:
{<a1,a2>∈R,<a2,a4>∈R,<a4,a5>∈R,
<a5,a6>∈R,<a5,a10>∈R,<a6,a9>∈R,
<a10,a13>∈R,<a9,a14>∈R,<a13,a14>∈R}
将上述Happens-Before约束关系进行重新编码,如下所示,使其符合Z3求解器的输入规范:
(1)a1<a2,
(2)a2<a4,
(3)a4<a5,
(4)a5<a6,
(5)a5<a10,
(6)a6<a9,
(7)a10<a13,
(8)a9<a14,
(9)a13<a14.
然后通过Z3求解器求解生成大量符合约束条件的非等价的执行轨迹,如{<a1a2a4a5a6a9a10a13a14>,……,<a1a2a4a5a10a13a6a9a14>,<a1a2a4a5a6a10a9a13a14>,<a1a2a4a5a10a6a9a13a14>,……}。再通过BPEL引擎执行上述活动,验证是否存在新的数据竞争。在执行这些轨迹的过程中,除了检测到上述步骤3中已经提出的数据竞争<a6,a13>和<a9,a13>,还发现活动a9和a10之间也存在数据竞争,即按照<a1a2a4a5a6a10a9a13a14>和<a1a2a4a5a6a9a10a13a14>的顺序分别执行BPEL程序时,会导致结果的不一致。经分析可知且故a9和a10之间存在第一种类型的数据竞争。
可见,本发明方法能够高效精确的检测到BPEL流程中的数据竞争。
Claims (7)
1.用于检测Web服务组合中BPEL流程数据竞争的方法,其特征是基于BPEL设计规则构造BPEL活动间的先后序关系集,并通过BPEL执行引擎插桩收集BPEL流程的执行轨迹,然后分析轨迹中对变量读写操作的活动是否满足先后序约束条件,从而判断是否存在数据竞争,最后再通过预测性分析方法检测隐藏的数据竞争,完成数据竞争的检测,包括以下步骤:
1)根据BPEL设计的流程编排规则和并发机制提取出BPEL活动间的先后序关系;
2)通过BPEL引擎动态执行BPEL插桩,收集BPEL程序执行轨迹的日志;所述日志为执行轨迹最小闭包集TMS,执行轨迹最小闭包集TMS满足收集到的执行轨迹覆盖BPEL程序中所有的活动,且执行轨迹数目尽可能少;
3)静态分析执行轨迹中对共享变量读写操作的活动是否满足先后序约束,从而判断是否存在数据竞争:利用切片技术提取TMS中对变量进行读写操作的活动,并检查其中有共享变量读写的、可并发执行的活动是否满足先后序约束,若不满足且至少有一个活动是对该变量进行写操作,则存在数据竞争;
4)通过预测性分析方法,在满足先后序关系的前提下通过约束求解得出可能的执行轨迹,并按求解得到的新的轨迹实际运行程序,进一步查找出隐含的数据竞争;
5)给出BPEL流程中的数据竞争检测报告。
2.根据权利要求1所述的用于检测Web服务组合中BPEL流程数据竞争的方法,其特征是步骤1)中,先后序关系是可传递的,通过部分活动间的先后序关系构造出所有活动间的先后序关系,设<A,R>表征BPEL活动间的先后序关系:
A是BPEL中所有活动集<a1,a2,...,an>,R是A中所有活动间的先后序关系闭包集:R=Set<aj<ak|j,k∈[1,n]∧j≠k>,R不满足对称性但满足传递性,如果aj,ak满足先后序关系,则有<aj,ak>∈R∨<ak,aj>∈R,否则其中j,k∈[1,n]∧j≠k,先后序关系的传递性表示为:如果有<ai,aj>∈R∧<aj,ak>∈R,i,j,k∈[1,n]且i≠j,j≠k,则<ai,ak>∈R。
3.根据权利要求1所述的用于检测Web服务组合中BPEL流程数据竞争的方法,其特征是步骤2)中,采用BPEL引擎Oracle BPEL PM执行插桩,先在BPEL源程序上进行插桩操作,然后用BPEL引擎执行插桩后的BPEL程序,每执行一次程序得到一条执行轨迹,轨迹是由不同的活动序列组成,轨迹的信息包括:执行过程被调用的活动名及活动的执行时间、每个活动对哪些变量进行了读写操作及变量的中间结果。
4.根据权利要求1所述的用于检测Web服务组合中BPEL流程数据竞争的方法,其特征是步骤2)中,执行轨迹最小闭包集TMS具体为:
设T为程序执行轨迹的闭包集<T1,T2,...Tn>,对于T中任意一条轨迹Ti,是由不同的活动序列组成,将Ti中出现的所有活动看做一个集合,记为TAi,执行轨迹最小闭包集TMS:<Ta,Tb,...,Tx>需满足TAa∪TAb∪…∪TAx=A,其中a,b,x∈[1,n],A是BPEL中所有活动集,且对于任意TMS的真子集<Ta′,Tb′,...,Tx′>,TAa′∪TAb′∪…∪TAx′≠A或且|<Ta′,Tb′,...,Tx′>|<|<Ta,Tb,...,Tx>|,其中a′,b′,x′∈{a,b,…,x};
其中TMS的构造过程为:通过不断调整BPEL的输入参数,并执行BPEL程序,得到不同的执行轨迹,那些使得所有活动都至少执行一次的轨迹集合即为TMS,TMS中的执行轨迹记为Seed Trace。
5.根据权利要求1所述的用于检测Web服务组合中BPEL流程数据竞争的方法,其特征是步骤3)中,对于TMS的执行轨迹中出现的每个变量,进行静态后向切片操作,然后分别提取出对该变量进行写操作的活动集合和读操作活动集合,具体为:根据先后序关系以及TMS构造BPEL中所有活动间先后序关系的有向图BARG,基于有向图BARG中的可达性,对TMS的执行轨迹中出现的每个变量v进行回溯搜索,搜索出执行轨迹中对该变量进行读、写操作的活动,然后分析这些活动是否满足BARG中构造出的先后序关系约束,若不满足且至少有一个活动是对该变量进行写操作,则存在数据竞争。
6.根据权利要求1所述的用于检测Web服务组合中BPEL流程数据竞争的方法,其特征是存在的数据竞争类型包括:1)一个活动的输出是另一个活动的输入,且这两个活动间不存在先后序关系;2)两个活动共享一个输出变量,且这两个活动间不存在先后序关系。
7.根据权利要求1所述的用于检测Web服务组合中BPEL流程数据竞争的方法,其特征是步骤4)具体为:首先,将TMS的执行轨迹中对共享变量最近L次读写操作活动顺序进行重组,假设TMS的执行轨迹中对共享变量共有X个读操作,Y个写操作,则可衍生出种可能的执行轨迹,其中L≤X+Y,然后,结合约束求解器求解出最近L次读写操作的可行执行轨迹,得到待确认的可能会有数据竞争产生的执行轨迹,按照所述可能会有数据竞争产生的执行轨迹的要求,运行BPEL,查看实际结果中是否真的存在数据竞争;
其中,约束求解器采用Z3求解器,求解可行执行轨迹的过程为:根据先后序关系以及TMS构造BPEL中所有活动间先后序关系的有向图BARG,将TMS的执行轨迹中最近L次对共享变量的读写操作和BARG中先后序关系的约束条件进行编码,之后代入约束求解器中,得到可行解空间,解空间即为满足约束条件的所有可行执行轨迹。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410787154.XA CN104572445B (zh) | 2014-12-17 | 2014-12-17 | 用于检测Web服务组合中BPEL流程数据竞争的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410787154.XA CN104572445B (zh) | 2014-12-17 | 2014-12-17 | 用于检测Web服务组合中BPEL流程数据竞争的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572445A CN104572445A (zh) | 2015-04-29 |
CN104572445B true CN104572445B (zh) | 2017-10-27 |
Family
ID=53088577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410787154.XA Active CN104572445B (zh) | 2014-12-17 | 2014-12-17 | 用于检测Web服务组合中BPEL流程数据竞争的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572445B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183655B (zh) * | 2015-09-25 | 2017-12-12 | 南京大学 | 基于预测性分析的安卓应用程序数据竞争检测 |
CN108182147A (zh) * | 2017-12-28 | 2018-06-19 | 南京理工大学 | 基于复杂性度量的bpel过程数据流错误预测方法 |
CN108829524A (zh) * | 2018-06-20 | 2018-11-16 | 中国联合网络通信集团有限公司 | Bpel流程图形化设计中检测死锁的方法和装置 |
CN109741026A (zh) * | 2018-12-27 | 2019-05-10 | 北京字节跳动网络技术有限公司 | 基于活动对的流程引擎处理方法及装置 |
CN112764788B (zh) * | 2021-01-19 | 2023-06-16 | 南京大学 | 基于程序源码切片重组的软件动态更新热补丁合成方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7506072B2 (en) * | 2003-10-14 | 2009-03-17 | Sun Microsystems, Inc. | Web browser as web service server in interaction with business process engine |
CN101895555A (zh) * | 2010-07-30 | 2010-11-24 | 中国科学院软件研究所 | 一种基于bpel的安全访问业务集成建模方法 |
CN104156313A (zh) * | 2014-08-12 | 2014-11-19 | 南京大学 | 一种Web服务测试用例自动生成方法 |
-
2014
- 2014-12-17 CN CN201410787154.XA patent/CN104572445B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7506072B2 (en) * | 2003-10-14 | 2009-03-17 | Sun Microsystems, Inc. | Web browser as web service server in interaction with business process engine |
CN101895555A (zh) * | 2010-07-30 | 2010-11-24 | 中国科学院软件研究所 | 一种基于bpel的安全访问业务集成建模方法 |
CN104156313A (zh) * | 2014-08-12 | 2014-11-19 | 南京大学 | 一种Web服务测试用例自动生成方法 |
Non-Patent Citations (2)
Title |
---|
BPEL流程的故障模式及其静态分析技术的研究;杨学红;《中国博士学位论文全文数据库 信息科技辑》;20130115;第77-80,85-86页 * |
多线程程序数据竞争静态检测方法研究;简道红;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130815;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104572445A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572445B (zh) | 用于检测Web服务组合中BPEL流程数据竞争的方法 | |
Padalkar et al. | Six decades of project management research: Thematic trends and future opportunities | |
Casado-Vara et al. | Web traffic time series forecasting using LSTM neural networks with distributed asynchronous training | |
Xiao et al. | Knowledge diffusion path analysis of data quality literature: A main path analysis | |
Shallcross et al. | Set‐based design: The state‐of‐practice and research opportunities | |
Ramadani et al. | In search for holistic ICT4D research: A systematic literature review | |
Malavolta et al. | A preliminary study on architecting cyber-physical systems | |
Xie et al. | Improving web image search with contextual information | |
Tamine et al. | Social media-based collaborative information access: Analysis of online crisis-related twitter conversations | |
Styles et al. | Automatically configuring algorithms for scaling performance | |
TeBlunthuis et al. | Identifying competition and mutualism between online groups | |
Bonifazi et al. | A framework for investigating the dynamics of user and community sentiments in a social platform | |
Yan | Mapreduce and semantics enabled event detection using social media | |
Yang et al. | Utilizing a multi-developer network-based developer recommendation algorithm to fix bugs effectively | |
Verma et al. | APASL‐ACLF Research Consortium–Artificial Intelligence (AARC‐AI) model precisely predicts outcomes in acute‐on‐chronic liver failure patients | |
Kirchner et al. | Researching alignment research: Unsupervised analysis | |
Ju et al. | Focus on informative graphs! Semi-supervised active learning for graph-level classification | |
Li et al. | Expertise network discovery via topic and link analysis in online communities | |
Zhang et al. | Network Characteristics of Innovation Ecosystem: Knowledge Collaboration and Enterprise Innovation | |
Debroy et al. | On the consensus-based application of fault localization techniques | |
Wu et al. | Supporting navigation in Wikipedia by information visualization: extended evaluation measures | |
Wedgwood et al. | What lies beneath: Forecast transparency to foster understanding and trust in forecast models | |
Tiddi | Explaining data patterns using background knowledge from Linked Data | |
CN103870520B (zh) | 用于搜索信息的设备和方法 | |
Johnson et al. | CNA-TCC: campaign network attribute based thematic campaign classification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |