没有合适的资源?快使用搜索试试~ 我知道了~
自动生成行为适配合同的方法及工具
理论计算机科学电子笔记229(2009)115-131www.elsevier.com/locate/entcs自动生成适配合同Jos'eAntonioMart'n1,2Deptoo.deLenguajesyCienciasdelaComputacio′nUniversityofMa′lagaM'alaga,SpainErnesto Pimentel3Deptoo.deLenguajesyCienciasdelaComputacio′nUniversityofMa′lagaM'alaga,Spain摘要基于黑盒软件(如Web服务和软件组件)组合的软件开发受到其接口不兼容性的阻碍。通过使用中间进程(称为适配器)来允许服务之间的正确交互,软件适配已经成为这些不兼容性有几种方法专注于在适配契约的指导下自动生成适配器,该适配契约指定如何解决不兼容性然而,这些合同的生成不是自动化的,大多数现有的方法需要手工指定这些在本文中,我们提出了一种方法来自动生成适应合同的行为描述的服务。这些契约克服了签名和行为层面的不兼容性最后,我们提出了我们的原型工具,接受作为输入的服务行为写在抽象的抽象和生成适应合同使用的A* 算法和专家系统的组合。关键词:行为自适应,适配器规范,专家系统,A* 算法。1介绍使用黑盒软件(如Web服务和软件组件)进行应用程序设计有几个优点,如更高的生产力和软件可重用性。然而,这种基于黑盒软件的设计必须面对一个重要的问题,1.我们认为,Gwen Salaun完成了这一工作,并对这一工作进行了重新评估。该项目由西班牙科学和教育部(项目TIN2007 -67134)和Junta de Andaluc′sica(项目P06-TIC-02250)提供部分资金。2电子邮件地址:jamartin@lcc.uma.es3电子邮件地址:ernesto@lcc.uma.es1571-0661 © 2009 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2009.06.032116J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115服务行为抽象化探索一种新部分合约[A*]部分合同的生成[专家系统]新 的 部 分合 同 的估 价 〔 专 家 系统〕返回有效的[探讨了适应合同[探索一个完成不完全改编合同]改编合同]部分合同图图1.专家系统与A*问题:组件/服务4的适配在签名和行为级别上不匹配[4]。接口描述语言(如分别用于组件和服务的CORBA和WSDL)允许用不同语言编写的软件的组合本文重点研究了签名和行为不一致的自适应问题。大多数情况下,服务不能按原样重用,因为它们之间的交互会导致错误的执行,即不匹配。形式上,不匹配的情况导致整个系统进入死锁状态。在实践中,不匹配的情况可能是由于消息名称不对应(经常使用服务使它们在相同的消息名称上相互作用),或由于不遵守消息的顺序,或一个服务所需的消息不是由其伙伴提供的。克服这种不匹配的一个可能的解决方案是使用适配器作为能够在参与方之间进行中介的“中间”服务适配器可以被看作Web服务编排器,它拦截客户机请求并将其转发给服务,同时保持无死锁的组合。通过这种方式,适配器充当了服务替代品,它可以正确地支持客户端所期望的接口。Brogi、Bracciali、Canal和Pimentel [6,7]开发了一种正式的方法,旨在从服务的接口(包括口头描述)自动派生适配器。这种方法是基于一个抽象的适应合同所涉及的部分之间的初步协议。该契约包含服务操作之间的映射,当适配器应用这些对应时,所有服务都正确协作,并最终处于最终状态。 然而,没有深入了解这份合同是如何构建的,它被认为是手工制作的。这是一个容易出错的任务,它迫使设计人员对所有服务细节有充分的了解。 在这项工作中,我们介绍了解决这个问题的方法。我们建议逐步生成合同。我们将一步一步地探索将找到的消息添加到合约中的服务的行为,4在下文中,我们使用服务作为涵盖软件组件和Web服务的通用术语,即,在系统中组成的软件实体。J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115117n的方式一个详尽的探索将导致爆炸的部分合同,所以我们引导搜索与启发式限制合同的数量探索。探索是由一个信息搜索算法(A* [17]),而合同验证是由一个专家系统[11](图1)。论文的其余部分组织如下。在第2节中,我们介绍了用于描述服务接口的抽象描述符的子集.我们在第3节中介绍了一个文件交换系统的简化示例,该示例将在整个论文中用于说明合同生成过程。第4中描述了在提案制定过程中应用的概念和想法中使用的抽象合同符号。此后,在第5中,我们将探讨我们的方法的不同部分以及该过程的进一步细节。在第6节中,我们参考了一些相关的工作,最后在第7节中,我们提出了未来的扩展和一些结论。2抽象层我们提出了一个抽象的抽象语言[1]的子集作为语言来表示服务行为。 这个抽象数据集的子集包含了足够的信息来提取一种行为接口,可以用有限状态机(FSM)表示FSM将允许我们以一种更简洁的方式图形化地表示行为,并定义提取模型的操作语义定义2.1有限状态机(FSM)是一个五元组.ΣS,L,S0,F,→其中S是一组状态,L是一组标签,s0∈S是初始状态,F<$S是一个一组最终状态,→S×L×S是一个跃迁关系,记为sL1−→ s2。FSM的状态用以下演算表示:t::= 0|α.t|Στ。啊我!v'i.我不是|我Σ阿一?v'i. 我不是|不|不|P(v<$)我α::=a!v'|a? v'|τ当保留项可以保持沉默(τ)并且可以保持不动(CAct={a?v'a!v'|a∈Messa geNam es,v<$∈Args})。 共同的集体行动是由在这些数据存储时代,这些数据库的一个动态行为将在这些数据存储时代(v是参数的列表),以及这些消息是否被提供/接受(?)orrequired/invoked(!). L={τ} CAct. P(v<$)c表示在P(x<$)t定义期间过程的内部状态。我们使用与CCS [13]非常相似的操作语义(参见图2)。没有值传递。我们不考虑实际值,而是考虑参数的抽象参数名称或数据类型)。因此,当消息具有相同的名称和参数时,它们是同步的。在文献中有几种语言具有自己的语义来描述Web服务编排[5,10,18]。然而,我们选择这种形式化是因为它足够简单和抽象,可以满足我们对行为匹配的需求。118J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115−→−→−→−→−→J是吗?v'(输入)一个!v'一个!v'.t−−→t(输出)是吗?v'. t−→tlJ乌乌LJ(SUM2)t−→tlJ(SUM1)LJt+u−→ut+u−→tuLuJlJ(PAR2)t−→t(PAR1)不|ul不|uJL不|u−→t|u−→不ltJ(TAU)−→(任)τf(l)Jt[f]τ.t−→t−→t[f]ta?V'J一个! V'J−→tu−−→u不|uτtJ|uJ(COM)t[v<$/x<$]ltJP(v<$)lTJP(x′)t(REC)图2.服务接口模型的操作语义在我们的模型中,我们关注以下活动5(粗体):andd 活动已通过a 执行! v<$whh herguments ( v<$)是:单个inputVariable属性(或中的变量),或toParts>元素中包含的几个参数<。corres pon ds to a?v<$wherev<$ishandleddinasimilarrwayashe活动使用period操作符建模Σ对应于元素我是我?iv <$i表示一个不同的Σ<如果>活动表示为iτ。啊我!v'i. 蒂岛已对所有扩展进行了编码通过静默动作(τ),所以适配合约必须假设每个执行分支都是可能的。必须通知适配器选择了哪个分支,以便继续适配;因此,每个分支必须以不同<的invoke>活动开始。和。由于这些活动的条件所起的关键作用,我们将它们建模为或活动,这取决于决策是在本地做出的还是在接收特定消息时做出的。这些活动的分支可以是循环,因此我们区分pick-loop和if-loop。[5]参见[1]以获得对JavaScript语言的完整描述,以及清单1中这些活动的示例J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)1151193示例:文件交换系统。我们现在介绍一个案例研究,我们将在整个论文中使用它来说明我们的方法。它由一个客户端和一个服务器组成的文件交换系统组成,但这些系统是在不同的上下文中构建的,因此它们的签名和行为不匹配。我们在清单1中提供了服务器6的抽象JavaScript代码。就我们关注的双方之间的适配而言,我们的API代码假设每个消息都是从另一方接收/发送的,而不是使用partnerLink和portType来定义特定的源或目的地。清单1服务器进程的抽象代码。<进程名称=< <调用操作=true/conditionn><!− −pick-loop−−><选择> <在线留言 图3.示例过程。图3包含客户端和服务器进程的FSM。服务器(图3(b))接受给定用户名和密码(登录?)6.客户端的抽象代码是一个单一的活动序列。120J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115c0 =[user!(name),password!(通过)Q登录?(name,pass);//(m1)Q连接!();//(平方米)下载!(档案) QgetFile?(file);//(m3)数据?(filedata)Q结果!(data);//(m4)数据?(filedata)QnoSuchFile!();//(m5)Q退出?();]//(m6)表1客户端(图3(a))和服务器(图3(b))的适配合同它确认用户已登录(已连接!).用户可以在单个会话中执行多个请求(getFile?每个请求都有其唯一的响应。此响应可以是请求的文件(结果!404-页面不存在页面不存在.返回首页). 最后,当客户端不需要更多的文件时,它会离开会话(退出?)和结束。在左侧,客户端(图3(a))设计为比服务器具有更少的转换。名称不匹配发生在每个消息中,尽管客户端有类似的请求和数据检索方法(下载!和数据?,分别),则无法接收登录确认(已连接!)和noSuchFile的通知!从服务器。客户端将登录请求分为两个操作(user!密码!)参数name和pass满足登录中的对应项的位置?服务器的动作。客户端也无法调用服务器的退出很明显,即使这些服务不能适当地相互作用,但在大多数情况下,它们可以进行调整以进行合作。为了实现这个目标,我们必须获得具有签名不兼容性的操作之间的映射,但我们还必须合并消息(登录请求),并包括丢失的操作(连接和退出),以使两个服务最终都处于最终状态。4适应契约Brogi等人。 [6,7]介绍了一种简单的高级符号,用于描述两个正在调整的过程的转换之间的对应性。 这种表示法用于通过两个服务(我们将称为左服务和右服务)的操作之间的一组映射来表示抽象适配契约在这里,我们将简要介绍这个符号,它将用于表示生成的合同。定义4.1映射(la1,. laLQra1,. raR)由两个动作序列组成,使得lai,raj∈CAct,并且它们分别属于左服务和右服务。映射的集合将由M表示。定义4.2适配合约c是映射[m1,. mn]。我们用(c∈)C表示合同集。[6,7]中提出的方法不需要在合约中指定映射顺序。然而,合约生成过程需要知道哪一个是最后生成的映射,所以我们将它们构造成一个数组。J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115121现在,我们将解释程序员如何为第3节中的示例设计抽象契约(表1)。程序员知道下载会话必须如何进行(它的行为)以及参数之间的相关性。 有了这些知识,登录必须与用户和密码的组合相匹配是一个常识。这是因为它们处于各自服务的开始,因此它们将在通信的同一阶段被调用或接收。此外,只要login需要其他两个操作的参数,它们都将合并到同一个映射(m1)中。映射m3和m4是相同情况的更简单版本。这两个是完美的映射,因为它们直接将单个调用与其接收相适应,并且所有参数都得到了满足。它们只能克服签名不匹配。映射m2和m5允许忽略服务之一不支持的转换并继续通信。映射m5需要额外的考虑,因为没有提供参数filedata,并且需要达到最终状态。最后,我们必须在事务结束时调用quit方法(由m6完成)。注意,m6的执行不是由任何其他交互触发的,因此遵守该契约的适配器必须基于其对进程行为的了解来触发m6。我们的方法利用以下信息,以实现与上述推理能力相似的推理能力:行为我们使用服务的行为接口遍历服务的执行。我们可以分析发生的动作序列,并评估这些序列的最兼容映射。要测量的一些特征是通信中的兼容性(调用和接收对),双方具有类似数量动作的良好平衡映射,以及参数的满意度。这些概念将在第5.1中详细解释。参数我们尽最大努力使映射的一方所需的参数与映射的另一方所提供的参数相匹配。仍然可以生成这样的合约,其中参数的接收在一个映射中,并且它在不同的映射中使用,但这需要适配器跟踪接收到的参数因此,为了可扩展性,我们推广了不需要参数内存的自适应契约无论如何,如果没有其他的选择,带有这些参数的操作将被分割成不同的映射。5生成适应合同我们通过一步一步地将新的映射ping添加到空合约来处理适应合约的生成在这个过程中,我们可能只修改最后一个映射,或者在最后添加一个新的映射(参见图4)。服务行为被遍历,找到的操作以所有可能的组合被引入到契约中(带下划线的操作)。通过这种方式,我们迭代地创建更完整的合同。122J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115Σ图4.增量合同图的一部分7.在示例中(图3),参数已经在服务之间匹配。这是我们方法的一个要求,即,这两个服务必须使用相同的参数名称集进行定义。实现这种匹配的一种方法是通过参数的数据类型来表示参数。在这种情况下,我们的方法将促进映射,适应具有相同数据类型的消息。5.1使用A* 进行图形搜索对服务行为的所有可能组合的评估将导致状态的爆炸(部分契约)。因此,必须引导通过这些状态的搜索,以大大减少探索状态的数量。 第4节结尾处陈述的概念可以被翻译成启发式,以使用信息搜索算法(特别是A* [17])来指导搜索。信息搜索算法需要成本和启发式函数。前者是到达搜索的特定点的成本,而后者是对解决方案可能距离该点有多远的猜测。 在合同的增量施工期间,一个合约的“不匹配”是指有多少不匹配被假定,以及在通往该合约的路径中有多少部分合约。 这种搜索的解决方案将是一个完整的适应合同,具有最低的成本和启发式。我们将设计的启发式和成本函数的基础上的映射构成的合同。定义5.1映射m=(la1,···,laLQra1,···,raR)的赋值v定义如下:.. Lv(m)=k3.EURRrec(lai)−....L..I3EURRsen(lai)−..I.(一)..i=1i=1 rec(ra).+ K...i=1i=1 森(ra)。.+mindet(m)(2)+k6个单位(m)(3)7函数f表示与给定合同相关联的惩罚,将在详情见第5.1。J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115123⎩哪里⎧当R= 0<$L>0时,k=4<$rec克什蒂尔克 如果L= 0<$R> 0,则取Rrec(ra);mindet(m)=4 1(mindet)当L>0且R> 0时,k= 5,k=rec(la1),k = rec.rec(x)=0否则1ifx=a?v';0否则(rec)sen(x)= 1−rec(x)(sen)函数ins:M→N的定义是这样的:ins(m)是m中未满足的参数的数量,也就是说,一方不需要/另一方不提供。 正常数k3、k4、k5和k6对不同的估值项进行加权。对映射(v)赋值的目的是表示单个映射有多差。映射值越高,适应性越差。 完美映射的值应该为0。 函数v被非正式地解释为:平衡:定义v的等式的第一行(1)包括不平衡映射的惩罚。如果两个服务是直接可适配的,那么理想的适配契约将包含每对动作的映射。这些映射中的每一个都将在每一端包含单个操作(每个服务一个),表示这些操作必须直接适配。因此,服务的操作是一对一适配的。映射不确定性:第2行代表映射的惩罚,它从两端的接收操作开始。这是因为适配器应该根据自己的职责触发这些映射,而不需要从服务接收任何指示这种情况的消息。尽管如此,在某些情况下,可以毫无歧义地知道何时应该触发这种映射。可满足性:发送的每一个参数都应该被使用,并且每一个需要的参数都必须被满足。我们可以通过提升那些所有参数都被使用和满足的映射来实现这些目标。如果所有的参数都在同一个映射中满足(而不是在随后触发的映射中),那么适配器中就不需要参数第3行中对未满足参数的惩罚用于根据参数关联动作,并提高适配器的效率。根据我们的适应策略,有常数来权衡平衡(k3),映射不确定性(k4和k5)和满意度(k6一个适配合约可以在两个方面是不确定的:当一个映射不是由任何接收到的消息触发时(映射不确定性),以及当同一个消息序列触发多个映射时(合约不确定性)。为了定义后者,我们需要知道两个消息序列何时124J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115≤J由适配器区分。第五章. 2两个相同数量的COMUNI CATIV E ACTIONS<$a=a1,. . ,ananda<$J=aJ,. . . 如果存在以下情况,则将其删除:1mJ J Jdist(a<$,a<$)优惠折扣j>0 |i,0 < i 0且la1=la1,sen(la1)=sen(la1)= 1;ii)J J JR,R>0且ra1=ra1,sen(ra1)=sen(ra1)= 1;如果两个映射是由相同的调用序列触发的,并且它们的边是不可区分的,则它们被认为是二义性的。定义5.4合同不确定性由函数cindet:C惩罚N,定义为:.cindet(c)=k7,如果ki,j,i=/0否则J|mi,mj∈ c和amb(mi,mj);(辛德)我们可以根据映射的糟糕程度来定义合约的启发式和成本(v)。正如我们在图4中看到的,任何子契约(右侧)都比其父契约多一个操作。 该操作将与其父映射的最后一个映射联合,或者将创建一个新映射。 因此,只有最后一个映射可以修改,所以所有其他映射在合约的后代中都是不可变的。最后一个映射的值(v)属于启发式,因为它的动态性质,而其他映射的值属于成本,因为它们不会改变。我们推广具有最低数量操作的合同,因此合同中包含的每个操作都会增加该合同的成本因此,→J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115125剩余行动是对最终解决方案的未来成本的良好估计,并且它属于启发式。5.5启发式(h)和代价(g)函数(h,g:C→N)建立了A* 算法的决策准则。给定合同c=[m1,. mn],h和 g的定义如下:h(c)=k2(cindet(c)+v(mn))+k1max(0,N−n(c))(h)乌斯季-1g(c)=k1n(c)+k2i=1v(mi)(g)其中N是服务中的通信动作的数量,n:C→N是给定合同中的通信动作的数量。常数k1>0和k2≥0分别调整合约中动作数量的重要性以及v和cindet的权重。在图4中,我们可以看到,最有希望的合约(顶部的孩子)将被选中进行探索,因为它具有最低的f(c)(=g(c)+h(c))值。 唯一的条件是参数的可满足性必须具有正权重(k6>0)。这种用于生成部分合同以及成本和成本的方法适用于任何知情的搜索算法。我们使用A* 变量来执行和指导搜索。我们修改了A* 算法,因为我们不需要一个A* 搜索,而是需要几个A * 搜索,这就是执行流程中分支的情况。当服务能够接收若干消息并且它基于接收到的消息遵循其执行时(即,),我们可以直接通过A* 树的不同分支来建模这些分支。这是因为沟通在决策中所起的关键作用。它在本地选择中完全不同,其中决定是由服务在没有任何通信的情况下做出的(即,)。因此,我们必须创建几个新的搜索树,每个不同的选择一个。最后,还应该考虑到这些不同的树最终会发生冲突(当条件行为结束时),因此,我们必须将这些部分契约合并为一个新的完整契约。我们不会详细讨论,但这些树的创建和合并对性能有重大影响。A* 是穷举搜索算法,即,它将探索每一个可能的合同(按其成本和启发式排序),直到找到一个解决方案。所以就(i) 它被馈送有遵循给定部分合同的每一个可能的组合,(ii) 服务行为具有一个或多个可达的最终状态,以及(iii)成本和启发式函数避免了有限路径,因为成本严格增加,搜索算法最终将找到无死锁的解决方案。在最坏的情况下,A* 算法具有指数级的时间和内存复杂度。如果找不到更好的解决方案,我们的方法将生成一个简单的契约,它描述了一个适配器,该适配器接受(并忽略)每个消息,并使用虚构的参数调用每个所需的操作。因此,没有作出任何决定,126J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115专家系统分割图(1条规则)单元测试(18条规则)标记解决方案(3条规则)定合同生成估价(3规则)子映射合同(4条规则)设置合同(8条规则)启发式(4条规则)Merge Prune等效图表合同(5规则)(2规则)辅助规则(14条规则)合约图承包勘探合同图表[更新]行为是否应调整所提供的服务。解决方案契约的启发式和成本值(f)是服务之间不兼容性的一个很好的度量,但是适配器-派生器必须最终决定是否它可以实现或不实现所生成的合同。5.2专家系统第5.1分节所述的所有估值标准都必须能够容易地被替换或修改。通过这种方式,我们可以测试新的估值技术,包括语义信息,或者根据我们的特定需求或环境限制定制我们的合同生成过程。这是使用专家系统实现的[11]。专家系统负责遍历服务的行为,以生成从给定的部分合同可用的不同的替代品它根据新包含的操作计算它们的成本和成本,并将生成的图提供给A* 算法搜索算法做出选择并标记它以进一步探索,因此专家系统从所选择的部分合同再次开始(图1)。专家系统还通过检查导致该部分合同的痕迹来识别何时生成的合同是可能的解决方案如果两个跟踪都到达最终状态,并且合约包含所有需要的映射,则合约完成。一旦A* 探索了这些完整契约中的任何一个,过程结束,返回该契约和所有其他具有相同f值的解决方案。所有这些功能都是通过62条规则实现的(图5),这些规则在A* 算法每次探索新的部分合约时都会执行图5.专家系统规则的活动图。每个活动对应于专家系统的一个或多个规则。清单2包含上述规则之一,特别是在查找条件分支时负责分割搜索图的规则客户端和服务器进程是由它们的?的方面想当合约被标记为A* 算法(childrenNeededTRUE)进行进一步探索,并且要处理的节点是?如果活动。 然后,它撤回了必须处理的事实,并将搜索拆分为与条件分支一样多的图J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115127清单2开始搜索分割的规则。(defrulesplit-graph)(BehaviorNode(nodeTypeif Activity))?事实-(活动到过程)(活动?if Activity)(side?(合约?合同)(行为?行为))(合同(对象)contract)(childrenNeededTRUE))=>>最大值(收回?事实)(foreach?孩子(?行为getChildren?if Activity)toArray)(splitGraph?活动?孩子?侧?合同)5.3原型工具:DINESTO我们已经在一个名为DINEST8的工具中实现了我们的提议。它把要调整的服务的行为作为输入,这些行为使用抽象语法来描述。这些行为在内部建模为两个有向图,将在自动生成合同期间进行探索。输出是一组适应合同,以第4介绍的符号表示。e01S02v03e06e10e07e04e12e02ce16选秀权1122203213Ifs0001011213环× × × × × × ×√ √×客户端3655925647服务器45647712667映射21415234764595315787树木111191504374155310Exp. 树木1119118314853116弊317912082191180341206440681Exp. 弊1025323843100142142258365无用0000002220解决方案11221940(1)41表2从DINE9得到的一些结果在表2中,有一些数据是在几个示例中从DINESTRON运行中收集的行如下:第一行(循环)是示例中循环的存在,而Picks和Ifs是服务中事件驱动条件()和常规条件行为()的数量客户端和服务器中的通信操作(、、和)的数量为8可在www.example.com上查阅http://sourceforge.net/projects/dinapter。128J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)1159 k1=k2=k3=1 ;k4=0 ;k5= 50 ;k6=3 ;k7= 100J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115129客户端和服务器分别。下一列是生成的映射总数,后面是搜索树的数量。 弊是部分合同的数量。Exp. 树和Exp。弊 是在找到解决方案之前探索的搜索树和契约的数量。无用的是尽管无死锁,但适配事件驱动条件的分支的解决方案的数量,其中从适配中没有仅连接和断开而不进行任何计算的客户端)。这是因为启发式和成本函数认为连接和断开连接比处理否则会发现的不兼容性。最后一行是找到的有效解决方案数。让我们来评论其中的两个例子。e12中的两个进程能够在执行其核心功能之前接受或拒绝通信,因此,由于它们的行为非常不兼容,Dinphon返回的第一个合约使它们拒绝通信并最终处于最终状态。 尽管如此,如果我们执行示例e12中的流程的另一次迭代,它会返回一个有效的解决方案。示例e02c是第3节中描述的示例。该表中的一个注释是,与我们的方法的复杂性最相关的因素是改变执行流程的节点的数量(,和循环),这比转换的数量重要得多;另一个重要的点是,如果参数(K1)没有根据我们的自适应策略进行调整(或者服务具有不可解决的不兼容性),则可能产生如示例E02 c、E04和E12中的无用结果另一个有趣的点是A* 算法和底层启发式函数所扮演的相关角色,即使在问题足够困难的情况下存在状态爆炸,它也会将探索节点的数量减少到生成节点的一半。正如我们在5.1小节结尾处所述,生成的搜索树(Trees)的数量与探索的合约数量成正比(Exp.弊).在启发式算法以及生成和合并这些树的过程中的任何改进都将大大提高我们工具的效率。6相关工作软件自适应是一个非常有前途的主题,它已成功应用于不同的实现平台,如Windows [8]或Windows工作流基金会[10]。一些建议[7,9,20]已经集中在签名和行为适应。然而,所有这些方法都需要手动设计适配合同,当服务协议复杂时,这可能是棘手的。我们的解决方案通过从服务的口头描述中生成适配合同来补充这些工作Moser等人 [14]开发了一个平台(VieDAME),基于ActiveData,用于监控和服务自适应的数据库流程。它们使用面向方面的编程以非侵入性的方式基于QoS他们使用变压器调整服务,但这些变压器必须设计为130J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115手工他们的工作可以通过我们的方法自动生成这些变压器来补充。关于自适应契约的自动生成,Schmidt和Reuss- ner [19]重点关注两个组件访问或被第三个组件访问的同步。他们引入了一种基于同步产品计算的算法来半自动地解决丢失消息的不兼容性,但他们的方法未能克服签名不匹配和行为不兼容性,如消息重新排序或消息拆分/合并。 Autili等人 [3]提出了一种自动合成适配器的方法,将组件的口头描述和必须在系统中实施的交互规范作为输入。然后,他们的工具(合成)生成只显示指定交互的组合与[19]类似,假设消息的名称相同,并且无法解决某些此外,这种方法依赖于对组合目标的高级描述,因此没有这种指定就无法工作。现在让我们提一下两个解决Web服务适配的相关工作[8,15在第一篇文章中,Brogi和Popescu [8]概述了一种自动生成适配器的方法,该适配器能够解决可重构进程之间的行为不匹配。在他们的适应方法中,他们使用YAWL工作流作为中间语言。一旦生成了适配器工作流,他们就使用锁分析技术来检查是否生成了完整的适配器或仅生成了部分适配器(某些交互场景无法解决)。它们解决了消息重新排序的不兼容性,但它们的方法在签名不匹配时失败。此外,即使我们也将我们的方法应用于Java服务,我们也希望我们的方法通过处理服务的抽象描述而更加通用,这些服务可以从Java中执行,也可以从其他编程语言和平台(如Windows Work Java Foundation)中执行[10]。Motahari Nezhad等人 [15]提出了一种帮助开发人员适应现有Web服务新版本的方法。在他们的方法中,他们在服务WSDL 签名上使用一个名为COMA++[2]的模式匹配工具。我们的方法与他们的工作有一些相似之处(我们的启发式算法与他们的证据起着类似的作用),他们介绍了一些关于死锁处理的有趣想法然而,尽管他们能够生成一个收集所有协议不匹配的不匹配树,但它的解决方案并不是自动的。7结束语在这项工作中,我们已经展示了一种自动生成适应合同的方法,该方法克服了签名和行为不匹配。生成的合约成功地解决了丢失的消息,并且能够根据它们的参数合并和拆分消息。在文献[7,9,20]中有几个作品使用这些契约来自动构建行为适配器。传统上,这些合同是手工编写的,J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115131以充分了解所涉及服务的详情。我们的建议通过自动生成这些合同来补充这些工作,并得到以下方面的支持:我们实现的一个原型工具。当我们的方法在生成适配契约的同时遍历服务行为时我们的方法的未来工作是组成一个图,说明适配器应该如何使用映射。该图将简化适配器的派生,并减少映射和契约的不确定性。A* 算法要求启发式函数是可接受的和单调的(因为部分契约的有限空间是可能的),以使解是最优的。所提出的启发式函数(h)可以在以下中急剧减小降低步骤,这导致启发式是不可接受的。这种不便可以通过常数k1和k2来控制。当k2≥k1时,我们可以进行更快、更窄的搜索,假设有错过最佳解的风险,否则,我们可以强制该工具找到最佳解决方案,生成更多的部分合同,k为2≤0。可以使用其他知情搜索算法来代替A*。我们的工作一直集中在两个服务之间的合同生成。未来的工作是将我们的方法扩展到更具表达力的语言和语义,如STS [12]或SCC [5],它专注于服务编排,并支持显式会话和异常处理。无论如何,这项工作表明了可行性所提出的方法。关于验证,我们未来的另一项工作是将我们的工具结果应用于其他适配器生成方法,并检查其与手写合同生成的适配器的双相似性与大多数映射生成[15]和模式匹配[2]的建议不同,我们的方法只依赖于服务的行为和参数。然而,我们的方法可以扩展到包括语义和句法信息,以提高其解释性。实现这一点的一种方法是使用Wordnet::Similarity[16]比较操作背后的语义及其参数。启发式、成本和A* 的组合可以快速解决简单的不匹配,但是,不兼容性越大,就需要花费更多的时间来探索其他方法来克服它们。这使得我们的方法可以解决不同程度的不兼容性,但当不兼容性无法补救时,它会浪费太多时间。一个行动方针是用一种算法来自动识别这些不可补救的不兼容性,或者用一种算法来将服务行为切割成更小的适应性片段,以补充我们的建议。引用[1] Andrews,T.例如,“Business Process Execution Language for Web Services (WSBPEL),” BEASystems, IBM, Microsoft, SAP AG, and Siebel Systems[2] Aumueller,D.,H. Do,S. Massmann和E. Rahm,Schema and ontology matching with COMA++,in:《SIGMOD906-908[3] Autili,M.,P. Inverardi,A. Navarra和M. Tivoli,综合:自动组装正确和分布式基于代理的系统的工具,在:Proc. of ICSE784-787132J.A. Martín,E.Pimentel/理论计算机科学电子笔记229(2009)115[4] Becker,S.,A.布罗吉岛Gorton,S. Overhage,A. Romanovsky和M. 面向组件适配的工程方法,在:S。B. . Heidelberg , editor , Architecting Systems with Trustworthy Components , LNCS 3938 ,Springer,2006 pp.193-215[5] Boreale,M.,R. 布鲁尼河德尼古拉岛拉尼斯湾Loreti,F.马丁斯大学Montanari,A.拉瓦拉D. Sangiorgi、V.Vasconcelos和G. Zavattaro,38比57[6] Bracciali,A.,A. Brogi和C. Canal,A formal approach to componen
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功