没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记182(2007)155-170www.elsevier.com/locate/entcs一种基于自适应的构件系统增量构建帕斯卡尔·普伊扎IBISCFRE2873CNRS-Universit′edinria.frGwenSalaunVASYProject,INRI ARhhe-Alpes,FranceEmail:Gwen. inria.fr马西莫·蒂沃利POP ARTProject,INRIARone-Alpes,FranceUniversita`degliStudidell电子邮件地址:tivoli@di.univaq.it摘要软件构件现在被广泛用于系统开发。然而,其行为界面之间的不兼容性可能使其无法组成。软件自适应的目的是补偿这种不兼容性,尽可能自动地建立校正连接器或组件。从头开始构建基于组件的系统是困难的,特别是当组件不能直接使用时,因为它们必须相对于它们的配偶进行调整。因此,渐进式构建方法至关重要,因为它们使逐步构建系统成为可能,从而掌握适应系统的复杂性。 在本文中,我们提出了一个渐进的方法,构建基于组件的系统,该系统依赖于适配器的生成来克服行为不兼容性。适配阶段可以被自动化,被给予形式化要适配的系统的属性的抽象映射。关键词:软件构件,行为失配,自适应,增量构造。1介绍软件构件现在被广泛地用于系统的开发,包括嵌入式系统、Web服务和分布式应用。基于组件的软件工程的主要挑战是组件应用程序的组合、适配和验证。软件适配[16,7]旨在尽可能自动地生成组件适配器。它们的作用是补偿由通信实体组成的系统中出现的不兼容性。现在1571-0661 © 2007 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2006.09.037156P. Poizat等人理论计算机科学电子笔记182(2007)155被接受的是,组件,特别是它们的公共接口-大多数时候,由于它们的黑盒性质,组件的唯一可观察部分-必须考虑动态行为。在本文中,我们处理适配器在此行为水平上修复不兼容性,例如,消息名称不匹配或死锁协议。从头开始构建软件系统是一项艰巨的任务,即使基于组件的方法的承诺之一是使现有软件实体的重用此外,组成组件是一项必须考虑不兼容组件的适应性的任务。我们提出了一种方法来构建增量式的基于组件的系统,并且如果软件架构师给出了要适配的系统的属性的抽象描述,则适配器的生成是完全自动化的,即,适应映射。在这种情况下,软件架构的概念承担了关键的角色,因为它代表了用于组成组件并让它们交互的参考框架在我们的方法中提出的架构关联适配器到每个组件。如果组件不需要适配,适配器(称为无操作适配器)将从外部角度复制与组件完全相同的行为。我们以这样一种方式增量地构建系统,即它能够发展到架构更改,例如组件添加或抑制。这种架构非常接近分布式系统,可以使用自适应中间件来实现[1,12]。然而,我们的目标是自动检索所需的行为适配器协议,而不是它们的实现。我们的适配器生成过程是基于以前的工作,使用一个表达符号的映射(同步向量的正则表达式),算法和工具[8]。我们这里的重点是当架构师添加或删除一个组件时,由组件和适配器我们的方法是交互式的,架构师在应用修改(稳定,添加新服务,抑制服务等)之前被告知系统的状态大多数步骤都是完全自动化的,例如检查接口的兼容性,生成适配器,评估适配器的正确性。此外,为整个系统生成全局适配器的全局方法[16,13,5,15,8因此,增量式构建基于适配器的系统是解决这些问题的一种解决方案本文的其余部分组织如下。第2节介绍了组件的形式化模型和我们所依赖的架构风格。第3节重点介绍了适配,并介绍了检查是否需要适配、计算适配器和评估适配器的机制。在第4节中,我们的方法涉及组件和适配器的增量编译。我们描述了当添加或删除一个组件时,系统如何尽可能自动地更新。第5节通过几个案例说明了我们的增量方法。第6节结束时,我们做一个总结。P. Poizat等人理论计算机科学电子笔记182(2007)1551572组分体系2.1组件接口组件接口使用签名和行为接口给出。签名模板是一组操作配置文件。这个集合是提供的操作和要求的操作的不相交的联合。通过使用标记转换系统(LTS),行为接口也被纳入考虑范围。 LTS是元组(A,S,I,F,T),其中:A是字母表(事件标签的集合),S是状态的集合,I∈S是初始状态,F<$S是最终状态,T<$S×A×S是过渡函数。LTS的字母表是建立在签名上的。这意味着对于签名中提供的每个操作p,都有一个元素p?在字母表中,并且对于每个所需的操作r,元素r!。两个LTS之间的通信涉及一个具有互补动作的事件p?/p!表达性行为语言(如进程代数)可以用来以更简洁的方式定义行为接口。例如,CCS符号中仅限于顺序过程的部分足以描述行为间的关系。面1:P::= 0| a?P| a!P|τ.P| P1+P2|其中0表示正确的终止状态,P是一个进程,它接收到a,然后表现为P,a!。P是一个过程,它发送a,然后表现为P,τ。P是一个过程,它随着内部动作τ而演化,表现为P,P1+P2是一个过程,它可以表现为P1或P2,A表示对由主体定义方程A定义的过程的调用。= P。由于进程代数不能定义初始状态和最终状态,我们将CCS符号扩展到具有初始[i]和最终[f]属性的标记进程。0和0[f]是等价的,在这种情况下我们只使用02.2建筑风格组件通过对等样式的消息传递进行通信。组件之间的连接器是简单的通信通道,也定义了所需的和提供的签名接口。所需的(resp。组件的提供的(provided)接口可以连接到提供的(resp. 一个或多个连接器的接口。我们还将区分两种实体:组件和适配器。组件实现系统的功能,并且是系统的主要计算组成部分。另一方面,适配器通过遵循不同的协调策略来路由消息,这些策略取决于要执行的适配,其属性由软件架构师以抽象的方式指定。我们的架构风格考虑了出现分布式适配器的系统:它被称为基于分布式适配器的体系结构(DABA)。系统定义作为一组组件,它们中的每一个直接连接到其本地适配器;每个适配器通过连接器以对等方式连接到其它适配器(一个或多个)。显然,DABA可以包括空1CCS描述可以转换为LTS模型,这对于计算目的特别必要(参见3.2节关于适配器的自动生成)。158P. Poizat等人理论计算机科学电子笔记182(2007)155在这种架构中,不存在组件,因此不存在适配器和连接器这种空架构是我们构建基于组件的系统的增量方法的起点。我们指出,连接器,然后底层的通信模型,是同步的:两个组件同步一个事件(renewal-vous),然后继续自己的演变。这个概念与某些基于组件的开发框架中存在的概念略有不同,例如COM/DCOM架构[15]或Web服务的XML [2]。在这种从面向对象编程继承其通信特性的模型中,通信基本上是方法调用或远程过程调用(RPC)。因此,调用方在继续其自身的演进之前,这在我们的模型中用两个显式消息来描述,一个用于请求,另一个对应于确认。异步通信可以建模,描述使用附加组件的消息队列,这些组件与它们所代表的组件同步交互3适应在定义添加和删除组件的方法之前,我们提出了自动检查系统是否需要自适应(行为不匹配)的机制,适配器生成过程以及评估自适应对系统影响的方法。3.1行为不匹配在软件适配和软件架构分析领域,已经提出了各种行为失配的定义。我们建立在最普遍接受的一个基础上,即无死锁。直观地说,由几个被识别的组件组成的系统是无死锁的,因此不需要任何适配,如果它的同步产品没有死锁。在DABA风格中,组件通过它们的适配器来查看,因此将适配器而不是组件作为输入来计算行为失配在添加的情况下,没有必要考虑添加的组件,因为该组件与其适配器之间的交互通过用于构建该适配器的算法来确保正确。定义3.1 [同步积] n个LTS的同步积Li=(Ai,Si,Ii,Fi,Ti),i ∈ {1,. ,n}是LTS(A,S,I,F,T),使得:• A{1,.,n}Ai, Si∈{1,.,n}Si, I =(I1,.,In),• F{(s1,.,sn)∈S|i∈{1,.,n}si∈ Fi},• T使用以下规则定义:(s1,. ,s,n)∈ S,i,j ∈ {1,. ,n},i ,其中n ∈ {1,. ,n} ej∈Aj<${ε}; ε表示组件不参与同步。 给定n个LTS Li=(Ai,Si,Ii,Fi,Ti),以及向量V的集合,可以通过以下语法生成这些LTS的(向量)正则表达式:160P. Poizat等人理论计算机科学电子笔记182(2007)155(vector)|R1.R2(序列)|R1+R2(可选)|R*(迭代),其中R,R1,R2是正则表达式,v是V中的向量。使用这样的映射和组件行为接口列表,可以使用[8]中提出的算法自动生成适配器,其中我们提出了两种适配,即有或没有重新排序的适配。当两个通信实体具有未按要求排序的协议消息时,需要重新排序(改变事件的顺序)以确保正确的交互。我们强调,其他算法可以用于适配器生成目的,如[5,13,15]。在没有重新排序的自适应的情况下,从映射正则表达式(具有识别正则语言的转换上的向量的LTS)和组件接口的LTS编码计算同步乘积。然后,导致死锁的路径被删除[15],消息被镜像(输入代替输出,反之亦然),以使与适配器的通信成为可能,最后,生成由向量描述的每个同步的所有可能的交织(从接收开始,然后发射),以获得构成适配器的最终LTS。在适应与重排序的情况下,其思想是编码,到一个Petri网,镜像组件接口和向量中描述的消息之间的对应关系,然后,从Petri网标记图(非递归适配器)或从其覆盖图(递归适配器)计算适配器的LTS。最后,路径死锁被删除,并在Petri网编码过程中添加的τ动作被抑制使用行为约简。请注意,我们的算法完全自动化到一个工具,ADAPTOR,这是正在开发中。该工具依赖于外部工具,即用于标记和覆盖图计算的TINA[4]和用于同步产品计算和行为约简的CADP[9例 3.4 在 我 们 简 单 的 客 户 机 / 服 务 器 示 例 中 检 测 到 的 行 为 不 匹 配 通 过 映 射(v1.v2.v3.v4)*计算出来,其中v1= c:req!,s:req?,a:ε> v2= c:args!,s:ε,a:ε>v3= c:ack?,s:ack!,a:ε> v4= c:ε,s:count!,a:添加?>使用上述算法计算得到的适配器无需重新排序:A[i,f]=c:req?. s:req!. c:args?s:ack?. c:ack!.史:算吗?a:add!.一3.3评估一旦生成了新的适配器,我们提出了不同的方法来评估新系统,并使架构师确保该系统仍然包含所有预期的服务。给定一组组件及其适配器,计算同步产品。然后,我们提出了几种技术来评估适应系统。首先,架构师可以检查系统中已经实现的服务(内部的,同步的)或仍然可用的服务(外部的,可观察的)。已达到P. Poizat等人理论计算机科学电子笔记182(2007)155161从标签(l1,.,ln),其中ε至少有两个l1导数。可用的服务是从标签(l1,.,ln),其中ε只有一个li导数。死锁自由度也可以在适应的系统上检查。让我们回想一下,生成的适配器在构造上是无死锁的。然而,只有与适配器交互的组件才保持无死锁,而整个系统仍然可以包含死锁。因此,当最后一个适配器只使用系统中涉及的一部分组件计算时,有必要检查整个系统是否存在死锁(参见第5节以进行说明)。4系统的增量构建在本节中,我们将重点介绍构建系统时出现的两种主要情况,即添加和抑制组件。4.1添加组件我们提出的方法可以被看作是一个交互式的助手架构师,因为它可以帮助他一步一步地作为一个指南,以建立系统。算法1(加法)输入:系统S = ΣC1,...,Cn,A1,.,An,组分C添加(i) 检查行为不匹配的CNOC,A1,.,A n(a) no deadlock→生成no-op适配器,并转到步骤(iv)(b) 死锁→需要适配,转到步骤(ii)(ii) 得到映射M(iii) 从映射M、组件C和连接的适配器Aj∈I,I∈ {1,...,n}(iv) 评估系统SJ = ΣC1,.,Cn,C,A1,.,An,An(a) 已验证→转到步骤(v)(b) 错误→返回步骤(ii)(v) 在S中添加C和A,并将A连接到C和连接的适配器Aj第一点涉及两种检查(行为不匹配和系统评估)。它们不是强制性的,只有在建筑师要求时才计算死锁检查可以将CADP计算的阻塞路径返回给架构师,以帮助他理解问题,然后写下纠正它所需的适配映射。添加组件并不总是需要协议适配,例如,当添加第一个组件时或当不匹配测试未检测到时僵局然而,我们的方法将自动生成的no-op适配器与每个组件相关联,如[15]所示。这样一个适配器基本上从外部的角度复制与其组件相同的行为,然后路由162P. Poizat等人理论计算机科学电子笔记182(2007)155JJJ从其他适配器到组件的消息,反之亦然。 更正式地说,无操作适配器建设的过程中提到的p变换分别接收和排放如下:a?~p:a?.一个!,a!~a?. p:a!.步骤(iv)(b)考虑了两种稍微不同的情况,因为错误的系统可以被计算出来,或者提出新的映射而不是前一个映射,然后替换最后一个适配器,或者保留最后一个适配器,并提出附加的映射来构建另一个适配器以连接在前一个适配器之上我们将在5.2节中说明这种情况。最后,在构建系统时必须保留映射,因为在抑制的情况下,它们可能会被修改,并且它们对应的适配器会被更新。4.2组件的抑制删除一个组件会导致其对应的适配器被抑制,但也可能导致与之交互的所有组件和适配器的更新。请注意,在最坏的情况下,这对应于重新计算所有适配器,这与非增量方法中的常规情况一样昂贵,其中为所有组件重新计算算法2(移除)输入:系统S = C1,.,Cn,A1,.,Ann∈,分量Ck,k∈{1,.,n}要删除(i) 检测所有适配器Aj∈I,I∈ {1,.,n}连接到组件的适配器AkCk(ii) 更新连接适配器Aj的映射Mj:将所有Ck标签抑制为向量并修改映射Mj(iii) 生成新的适配器AJO型线(iv) 评估系统Sj= ΣC1, . . ,Ci,i=k, . . ,Cn,A1, . . ,Ai,i(a) 已验证→转到步骤(v)(b) 错误→返回步骤(ii)(v) 删除Ck,Ak,并用AJ替换Ajk, . . . ,An[AJ/Aj]:计算步骤(i),遍历所有映射并从向量检测要移除的组件/适配器与之交互的适配器。步骤(ii)中提出的两个解决方案是互补的:在第一步中,ε替换映射中所有相关的标签,然后架构师可以更新这些映射。至于复杂性结果,在两个先前的算法中,最昂贵的步骤是指数的适配器的计算[8]。然而,我们的方法可以应用于非平凡系统,如第5节所示。5应用在这一节中,我们展示了我们在三个例子中的工作方法,分别涉及视频点播系统,哲学家用餐问题和音乐播放器系统。P. Poizat等人理论计算机科学电子笔记182(2007)155163......5.1视频点播系统我们的第一个例子是[6]中描述的基于组件的视频点播(VOD)系统的简化版本我们考虑由两种组件构成的客户机-服务器系统,一个服务器组件,称为VOD,和一个或多个客户机,点播服务器视频点播服务器服务看电影。 如果客户没有注册以前他只能预览电影,如果客户已经注册,他可以观看电影。在注册客户端的情况下,电影可以直接播放或录制(即,首先存储电影,然后播放)。这里,我们的目标是使用适配器来考虑注册和未注册客户端之间的差异。点播与客户端的行为接口如下:VOD[i,f] =搜索?list!. VOD +预览?.stream!. VOD+ 景观?(play?. stream!. VOD+记录?.stream!. VOD)Client[i,f]= menu!.信息?(看!数据?客户端+商店!.数据?客户端)现在,让我们展示如何从一个空架构(即,没有组件和连接器)并逐步添加新组件。在图1中,我们展示了架构师想要执行的增量构建过程的三个步骤,以便增量地构建由一个VOD服务器和两个客户机组成的VOD系统。下面我们将详细讨论每个步骤。空的建筑Step1:添加点播服务器步骤2:添加C1客户端VOD...视频点播VOD...视频点播步骤3:添加C2客户端Fig. 1. VOD系统最初,系统没有组件,因此没有连接器。让我们假设VOD系统的架构师决定添加VOD服务器。在这个阶段,不需要测试行为失配,因为系统由单个组件形成,因此自动生成无操作适配器。让我们表示这个适配器由一个视频点播.值得一提的是,A VOD具有严格的顺序性,输入输出行为,即,每个输入后面跟着相应的输出。此外,我们还记得,从外部的角度来看,它将再现与组件完全相同的行为。 在下面,我们展示了 一个VOD行为界面:一VOD[i,f]= 视频点播:搜索?搜索!名单?vod:list!.的VOD+ vod:preview?预览!. . . ...这是什么?跳过自适应评估(见第3.3节),因为只有一个...VOD...视频点播...A_C1...C1A_C1A_C2......C1C2164P. Poizat等人理论计算机科学电子笔记182(2007)155成分让我们假设添加了一个未注册的客户端C1。它具有与客户端相同的界面(如上所示),即,C1 =客户端。 在这种情况下,VOD和C1是不兼容的,因为它们使用不同的动作名称(例如,搜索和菜单操作不匹配)。因此,架构师提供了以下用于生成A C1的映射,即,C1的适配器:M1=(c1:menu!,视频点播:搜索?>+ +的+ +的)*通过参考3.2节,映射M1是同步向量的正则表达式。它定义了C1执行的动作名称之间的对应关系(即,“一”字,“一”字vod:view?,vod:玩?视频点播:录制?在映射中没有对应物,因此它们没有对应关系。M1是仅描述向量的非确定性选择的正则表达式,因为没有要执行的消息排序。从A VOD、C1和M1自动合成适配器A C1(使用第3.2节机制):AC1[i,f]=c1:menu?. vod:search!. vod:list?. c1:info!. (c1:手表?vod:preview!.视频点播:流?。c1:data!.的C1+c1:store?. vod:preview!. 我的意思是,我的意思是,c1:data!.AC1)接下来,架构师在A VOD和(A C1)之间执行外部行为比较|一个视频点播),其中“|“代表LTS的同步产品,可以观察到只有动作vod:view?,vod:玩?视频点播:录制?保持外部可见。因此,架构师确认在系统中添加C1现在让我们假设添加了一个C2 =Client注册的客户端类似于添加C1,架构师可以观察到C2与VOD不兼容,因此跳过行为不匹配的测试架构师给出了以下映射,以匹配观看和播放或存储和记录:关于Vectors:M2=(v1.v2.(v3.v5.v7+ v4.v6.v7))*v1= c2:menu!,视频点播:搜索?>v2= v3=< c2:观看!,视频点播:查看?>v4=< c2:store!,视频点播:查看?> v5=< c2:ε,vod:播放?>v6= v7= c2:数据?,视频点播:流!>从A VOD、C2和M2自动合成适配器一 C2[i,f]=c2:menu?. vod:search!. vod:list?. c2:info!.(c2:手表?(vod:view!. vod:play!.一C2'+vod:play!. vod:view!. A C 2 “ )+c2:商店?vod:view!. vod:record!.视频点播:流?。c2:data!.一C2)A C2' = vod:stream?。c2:data!.的C2通过参考上面所示的A C2的行为接口,注意适配器并不总是对应于指定的映射。事实上,映射表示适配器的抽象描述,一旦合成,由于消息的隐藏,可能导致更复杂的行为(参见,例如,在一个实施例中, 两 消息序列vod:view!. vod:play!和vod:play!. vod:view!). 由于这个原因,适配器合成过程值得P. Poizat等人理论计算机科学电子笔记182(2007)155165专用算法和工具,如[8]中所述的算法和工具。 架构师再次执行A VOD和(A C2)之间的外部行为比较| A VOD), and can see that the single action visible from an external point of view是VOD:预览?这是正确的。通过参考第3.3节,我们记得,当仅使用系统中涉及的部分组件计算适配器此外,自适应评估过程还应验证整个系统中是否存在可能的死锁。因此,在添加C2及其适配器之前,对(A VOD)的死锁检查|的C1| C2)进行。由于没有检测到死锁,因此添加C2,并将C2连接到其他组件。注意,对于这个例子,组件抑制是没有意义的:要么架构师删除客户端(因此其相应的适配器),并且它对系统没有任何影响,或者他/她移除服务器并且不再工作。5.2哲学家用餐问题在本节中,我们考虑一个基于组件的系统,它模拟了两个哲学家和两个叉子的情况下的经典哲学家用餐问题为了吃饭,每个哲学家都需要两把叉子。在我们的模型中,我们考虑了三种组件:Fork,Phil1和Phil2。Fork的行为界面如下:叉[i,f]叉?。好的!释放?叉Phil1和Phil2具有不同的行为接口(如下所示)。 在这个问题的经典表述中,哲学家们共享相同的行为,当他们都交互访问两个叉子时,这可能会导致死锁在这例如,我们简化了经典公式,只隔离了可能导致僵局的每个哲学家的行为,当他们都在场时。Phil1和Phil2的行为规范如下:Phil1[i,f]=fo1!.好吗?fo2!. ok2?rel1!. rel2!. Phil1Phil2[i,f]=fo2!. ok2?fo1!.好吗?rel2!. rel1!.Phil2如果没有适配器,系统(f1:叉|f2:分叉|Phil1| phil2)由于操作名称不匹配而死锁。虽然可以将匹配不同名称的适配器插入到系统中,但这两位哲学家也有一个不匹配的交互协议。 系统在任何时候都会死锁,例如:Phil1问对于并获得对第一个fork的访问,然后,Phil2请求并获得进入第二个岔路口。在这个阶段,两个哲学家都被阻塞了,等待他们永远不会被分配给他们的互补叉子。两个Fork组件F1 = f1:Fork和F2 = f2:Fork的添加类似于我们在5.1节中为添加VOD服务器所做的操作。F1和F2的无操作适配器分别为A F1和A F2。在图2中,我们展示了架构师想要执行的增量构建过程的两个步骤,以便增量地构建由两个已经添加的叉子和两个哲学家(即,,Phil1Phil2)。下面我们将详细讨论这些步骤166P. Poizat等人理论计算机科学电子笔记182(2007)1552-Forks架构添加Phil1图二. 哲学家餐厅系统让我们假设添加了一个Phil1组件Phil1与F1和F2不兼容。因此,给出以下映射M1:M1 =(+< phil 1:ok1?, f1:好的!, f2:ε>+++)*从AF1、AF2、Phil1和M1计算适配器AFil1:APhil1[i,f]=phil 1:fo1?。f1:fork!. f1:好吗?phil 1:ok 1!. phil 1:fo2?.f2:fork!.外国人2:好吗?phil 1:ok 2!. phil 1:rel1?. F1:释放!phil 1:rel2?. F2:释放!A Phil1类似于我们在5.1节中所做的,适配器被评估,该系统(A F1|的F2|A Phil1| phil1:phil 1)没有服务丢失(wrt. F1和F2提供的服务)。因此,添加了Phil 1及其衔接子。现在,必须添加Phil2。Phil 2的添加类似于Phil 1的添加进行,因此给出映射M2并产生衔接子Phil2连接到Phil2,F1和F2。这个例子指出了我们的方法的一个有趣的应用场 景。当架构师对整 个系统执行死锁检 查时,发现(A F1| 的F2|APhil1|Phil2)可能会死锁。这种死锁来自我们在本节开始时提到的Phil1和Phil2之间的不匹配交互在这种情况下,建筑师,在确认添加Phil2(及其适配器)之前,必须在APhil1和APhil2之上生成一个新的适配器,以解决该死锁。该衔接子通过考虑APhil1、APhil2、A F1、A F2和映射M3而产生:M3=(++.. .)* 的文本M3可以自动生成,因为APhil1、APhil2、A F1和A F2的接口签名匹配,并且不需要特定的适配。 实际上,只需要修剪导致全局系统中死锁的跟踪(参见3.2节)。让我们用A表示最后生成的适配器。此时,不需要进行死锁检查,因为架构师知道A在构造时是无死锁的,因此(A F1|的F2|A Phil1|一个Phil2|A)是无死锁的,好.建筑师确认Phil2和A Phil2的添加,A最终连接到A F1,A F2,A Phil1和APhil2。F1和F2......A_F1A_F2......一......A_Phil1A_Phil2......Phil1Phil2F1...A_F1......添加Phil2A_Phil1...Phil1F2...A_F2F1...A_F1...F2...A_F2...P. Poizat等人理论计算机科学电子笔记182(2007)155167HF5.3音乐播放器系统最后,我们考虑了一个基于组件的Hi-Fi系统,该系统由四个组件组成:HF,TR,PDA 1和PDA 2。 HF控制Hi-Fi电台,可要求其(i)播放mp3文件,即,读?,(ii)停止阅读,即停下来?,(iii)暂时停止阅读,即,暂停?及(iv)恢复暂时停止,即,简历?. 其行为界面定义如下:HF[i,f] =读取?。HFReadHFRead=暂停?简历?HFRead停一下。HFTR实现了一个翻译器,它可以(i)读取ogg文件,即,inogg? 和(ii)将其转换为MP3文件,即,outmp3!.其行为界面定义如下:TR[i,f] = inogg?。outmp3!. TRPDA 1是一个PDA,除了其他可能的动作外,它还可以要求音乐系统(i)播放选定的mp3文件,即,播放!,(ii)停止播放,即住手!(iii)暂时停止播放器,即,暂停!及(iv)恢复暂时停止,即,恢复!.它的行为接口是:PDA1[i,f] = play!.PDA10PDA10=停!PDA1+ 暂停!恢复!PDA10PDA 2是一种不同的PDA,它可以要求音乐系统(i)通过合适的播放器播放选定的文件,即:,playmp3!或者玩狗及(ii)停止播放,即住手!. 我们将其行为界面定义为:PDA2[i,f]=playmp3!.停!PDA2+ playogg!.停!PDA2建筑师先后添加HF和TR。产生两个无操作适配器,A HF和A TR在图3中,我们展示了增量构建过程的剩余两个步骤,架构师希望执行这两个步骤,以便增量构建由两个已经添加的服务器(即,HF和TR)和两个PDA客户端(即PDA 1和PDA 2)。2−服务器架构添加PDA1添加PDA2...PDA1图三. 音乐播放器系统让我们假设添加PDA1。PDA1在与HF交互时死锁。因此,给出以下映射:M1=(v1.(v3.v4)*.v2)*...A_PDA1...A_HF...TR...A_TRHF...A_HF...A_PDA1...PDA1TR...A_TR...A_PDA2...PDA2HF...A_HF...TR...A_TR...168P. Poizat等人理论计算机科学电子笔记182(2007)155关于Vectors:v1= pda1:play!,hf:读?>v2= pda 1:停止!,hf:halt?> v3= pda 1:暂停!,hf:暂停?>v4=< pda 1:恢复!,hf:简历?>从A HF、PDA1和M1计算适配器,A PDA1:APDA1[i,f]=pda 1:play?. hf:读!一出戏APLAY=pda1:pause?. hf:暂停!pda1:你是我吗?.hf:res!. 一出戏+pda 1:停止?hf:停!APDA 1执行自适应评估,系统(A HF| APDA 1)没有服务丢失,因此,架构师确认在系统中添加A PDA 1和PDA 1。现在,添加了PDA2。在ogg文件的情况下,TR必须用于将ogg文件转换为使用HF播放的mp3文件。PDA2的添加与PDA1的添加类似地进行,因此给出映射M2并生成连接到PDA2、HF和TR的适配器A PDA2:关于Vectors:适配器:M2=(v1.v4+ v2.v3.v4)*v1= pda2:playmp3!,hf:读取?,tr:ε>v2=< pda2:playogg!,hf:ε,tr:inogg?> v3=< pda2:ε,hf:read?,tr:outmp3!> v4=< pda2:停止!,HF:停?tr:ε>A PDA2[i,f]= pda2:playmp3?.发挥+pda2:playogg?.文:我不知道!.问:我的p3出了吗?.PLAYPLAY=hf:read!. pda2:停止?hf:哈!. PDA2进行外部行为比较,表明(A HF|一架TR|PDA 2)只有hf:pause?和HF:恢复?.架构师确认添加PDA2及其适配器。关于抑制,如果PDA1或PDA2被移除,则其抑制是直接的,因为对系统没有影响。如果删除HF,则不再起作用,因为PDA 1和PDA 2都需要使用它来完成其任务。唯一有趣的情况是当TR被移除时,因为PDA2的一个所需服务将变得不被其环境提供。在这种情况下,PDA2只能播放mp3文件,因此必须更改其适配器,以便不再接收播放ogg文件的请求。这通过用计算不执行播放日志动作的适配器的新映射M2'替换M2用载体M2v1= pda2:playmp3!,hf:读?>v4=< pda 2:停止!,hf:halt?>让我们用PDA 2'表示检查字母表差异AAPDA2\AAPDA2J,架构师被告知PDA2上的ogg文件的播放现在是可观察的。根据系统要求,这可能是可接受的或不可接受的。如果可以接受,则架构师确认TR及其适配器的抑制,如果不能接受,则他/她也可以考虑断开PDA 2 A PDA2适配器被连接PDA2到HF的A PDA2'取代在确认A PDA 2 '添加之前,在系统上执行死锁检查(A HF|A PDA 1P. Poizat等人理论计算机科学电子笔记182(2007)155169| A PDA2’) to be sure that no deadlock is introduced.由于此检查成功,因此添加了PDA26总结发言在本文中,我们提出了一种交互式的方法来建立由多个通信组件组成的增量式系统,通过它们的外部接口来查看。该方法由特定的软件架构支持,该软件架构避免了在重新配置系统时构建全局适配器的昂贵计算步骤(如果可能的话)。此外,大多数过程步骤是自动计算的:行为失配、适配器生成、适配器评估、在抑制的情况下系统的据我们所知,与我们更接近的工作致力于渐进式协议增强。在[14]中,展示了如何组合组件包装器以增强连接器行为。在[15]中,作者重新讨论了[14]提供方法自动化。在[15]中,起点是始终生成的集中式适配器。与此相反,我们试图通过仅产生本地适配器来解决失配,并且我们仅在不可避免时才产生集中式适配器(例如,哲学家的问题)。这项工作的主要观点是将我们的方法应用于现有的实现语言和框架,如COM/DCOM架构[10]或Web服务的扩展[2]。引用[1] 关于Adaptive Middleware的文章 Commun. ACM,45(6):30 -64,2002.[2] T. Andrews等人Web服务业务流程执行语言(WSBPEL)。IBM、Microsoft、SAP AG和IBMSystems,2005年2月。[3] A.阿诺德 有限迁移系统 国际计算机科学系列。 Prentice-Hall,1994年。[4] B. Berthomieu,P. O. Ribet和F.维纳达工具TINA 国际生产研究,42(14),2004年。[5] A. Bracciali,A. Brogi,和C.运河一种构件自适应的形式化方法。Journal of Systems andSoftware,74(1):45-54,2005.[6] A.布罗吉角Canal和E. 皮门特尔 通过灵活的子服务进行组件适配。 计算机科学,2006年。地出现。[7] C. Canal,J.M. Murillo,and P.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 藏经阁-应用多活技术白皮书-40.pdf
- 藏经阁-阿里云计算巢加速器:让优秀的软件生于云、长于云-90.pdf
- 藏经阁-玩转AIGC与应用部署-92.pdf
- 藏经阁-程序员面试宝典-193.pdf
- 藏经阁-Hologres 一站式实时数仓客户案例集-223.pdf
- 藏经阁-一站式结构化数据存储Tablestore实战手册-206.pdf
- 藏经阁-阿里云产品九月刊-223.pdf
- 藏经阁-2023云原生实战案例集-179.pdf
- 藏经阁-Nacos架构&原理-326.pdf
- ZTE电联中频一张网配置指导书
- 企业级数据治理之数据安全追溯
- MISRA-C 2012-中文翻译版.pdf
- 藏经阁-《多媒体行业质量成本优化及容灾方案白皮书》-37.pdf
- 藏经阁-浅谈阿里云通用产品线Serverless的小小演化史-23.pdf
- 藏经阁-冬季实战营第一期:从零到一上手玩转云服务器-44.pdf
- 藏经阁-云上自动化运维宝典-248.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功