没有合适的资源?快使用搜索试试~ 我知道了~
可在www.sciencedirect.com在线获取理论计算机科学电子笔记279(2)(2011)43-57www.elsevier.com/locate/entcs结合证明和模型检查来验证可重构体系结构Arnaud Lanoix1LINA,南特大学,法国Julien Dormoy2 Olga Kouchnarenko2李福昌,法国贝桑松法国大学摘要本文讨论了基于构件的系统动态重构的形式化描述与验证。 为了验证这种复杂的系统,需要检查模型的一致性,并确保动态重新配置满足架构和完整性约束、不变量以及对(重新)配置序列的时间约束由于体系结构约束涉及一阶公式,并且重构的行为语义产生无限状态系统,因此我们建议将证明和模型检查关联在成熟的B方法中,以支持此类系统的建模及其动态重构的(部分)验证。本文件的目的是双重的。首先,给出了一个基于构件的体系结构的层次B模型,通过证明其一致性来验证它其次,给定线性时序逻辑公式表达系统的理想动态行为,我们通过使用支持B方法的有界模型检查工具来验证可重构系统架构的主要贡献说明了一个HTTP服务器架构的例子关键词:构件,体系结构,重构,证明,模型检测,B方法1引言本文致力于基于组件的系统的动态重构的自动检查,其开发提供了显著的优势,如可移植性,适应性,可重用性等。分布式应用程序的动态重构是一个活跃的研究主题[2,3,17],其动机是实际的分布式应用程序,例如,[9]《易经》云:“君子之道,焉可诬也?”在最近的许多工作中,使用时态逻辑来指定动态重构和在运行时管理应用程序的想法已经被探索[7,15,12]。1电子邮件:arnaud. univ-nantes.fr2电子邮件:{jdormoy,okouchnarenko}@ lifc.univ-fcomte.fr1571-0661 © 2011 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2011.11.01144A. Lanoix等人理论计算机科学电子笔记279(2)(2011)43实例化(二实例化上下文上下文(1)一致性证明AtelierB质量标准(五)质量标准(三看到重建数据+LTL属性建筑元素+基本重建包括(4)(6)+动画一致性ProB+模型检查FTPL性能重建数据组件体系结构在[12]中,已经提出了具有重新配置的基于组件的系统架构的形式语义以及(重新)配置序列上的线性时间时态逻辑。这种逻辑称为FTPL,基于架构约束和事件属性。为了验证这种复杂的系统,需要检查模型的一致性,并确保动态重构满足架构和完整性约束、不变量以及FTPL约束。由于这些约束涉及一阶公式,并且重新配置的行为语义会产生无限状态系统,因此我们建议将证明和模型检查技术结合在成熟的B方法中[1]。Fig. 1. 原则和贡献让我们解释一下我们目前基于B的验证方法和对图1的贡献。1.一、首先,我们建议使用B形式框架对组件和基本动态它允许我们定义和验证组件架构的通用B模型。我们使用AtelierB工具来交互式地证明架构约束的一致性(1)。然后,这个通用架构被实例化以表示正在考虑的架构(2);动态架构重构通过使用先前定义的本原B操作来指定(3)。请注意,我们没有考虑使用这些动态重新配置的控制器的指定(例如通过自适应策略)。因此,实例化的架构模型的验证不能使用交互式证明来完成。尽管如此,我们通过运行模型的样本动画对这些动态重构进行了部分验证,这要归功于ProB模型检查器的功能(4)。此外,FTPL中表示的配置序列的时间特性被转换为LTL(5)。这些属性可以用ProB模型检查器(6)来检查。论文的其余部分组织如下。在门派中做了一个激励性的例子之后2、介绍了B方法及其工具支持。3 .第三章。我们正式定义了一个通用的B模型的组件架构在节。四、然后,在第5节中实例化该模型以验证特定架构。为了自动验证时态属性,第6节介绍了FTPL,并给出了它到LTL的翻译。最后,第7节在讨论相关工作之前结束2激励的例子为了激励和说明我们的方法,让我们考虑一个HTTP服务器的例子[10]。该服务器的架构如图所示二、A. Lanoix等人理论计算机科学电子笔记279(2)(2011)43451 action AddCache(root)2i f ($context/child:∈RequestList/attribute:∈deviation)>( 50)3newCache = new(“缓存”);$root,$newCache);5bind($root/child:∈RequestCache/interface:∈getcache,$newCache/interface:∈cache);RequestReceiver组件从网络读取HTTP请求并将其传输到RequestReceiver组件。为了保持响应时间尽可能短,RequestDispatcher可以使用缓存(使用组件CacheCache)或直接将请求传输到RequestDispatcher组件。请求数(负载)和相似请求的百分比(偏差)是为RequestList组件定义的两个参数:• 只有当类似的HTTP请求数量很高时,才会使用缓存• 缓存组件的memorySize必须取决于服务器的负载• 缓存中数据的validityDuration还必须取决于服务器的总体负载• RequestDispatcher使用的文件服务器(如FileServer1和FileServer2组件)的数量取决于服务器的总体负载HttpRequest请求获取RequestReceiverHttpServer处理程序getDispatchergetCache请求(偏差,负载)dispatchergetServerRequestDispatcher缓存卡谢什(validityDuration,memorySize)Server1FileServer1Server2FileServer2图二. HTTP服务器架构我们认为HTTP服务器可以在执行过程中通过以下重新配置操作进行重新配置:(i) AddCachetric和RemoveCachetric,分别用于在偏差值增加/减少到50左右时增加和删除Cachetric分量(ii) AddFileServer和removeFileServer,分别用于添加和删除FileServer 2组件;(iii) MemorySizeUp和MemorySizeDown,分别用于增加和减少MemorySize值;(iv) DurationValidityUp 和 DurationValidityDown 分 别 增 加 和 减 少 ValidityDuration值。作为示例,我们指定了用FScript语言表示的AddCache重配置[11]。当偏差值超过50时,重构包括实例化Cachetron组件。然后,将组件集成到架构中,并与RequestStream的所需接口建立绑定。最后,启动组件Cachetram46A. Lanoix等人理论计算机科学电子笔记279(2)(2011)43return($nums);7个文件夹3基于证明的方法:B方法B是一种形式化的软件开发方法,用于对系统进行建模并对其开发进行推理[1]。当建立B模型时,原则是表达系统属性,这些属性在模型的每个演化步骤之后总是真实的,演化由B操作指定。因此,对模型正确性的验证类似于验证这些属性的保持,无论系统采取哪一步进化B方法基于集合论、关系和一阶逻辑。约束在模型的“不变”条款中指定,其演变由“操作”条款中的操作指定。这里我们假设初始化是一种特殊的操作。在这种情况下,B模型的验证包括验证每个操作-假设其前提条件和不变式保持-满足不变量,即模型是一致的。B方法的一个优点是它的逐步细化功能:每个细化都通过引入类似编程语言的功能使模型更确定,也更精确工具支持,如B4free或AtelierB3,自动生成证明义务(PO),以确保B [1]意义上的一致性。其中一些是明显的PO,而其他PO必须交互式证明,如果它不是由嵌入AtelierB的不同证明器完全自动完成的话。另一个名为ProB4的工具允许用户为调试和测试制作B规范的动画。在验证方面,ProB包含一个基于约束的检查器和一个具有特定功能的LTL有界模型检查器;两者都可以用于检测B规范中的各种错误[18,19]。4使用B语言构建通用体系结构模型在[12]中,我们将配置定义为一组架构元素(组件,接口和参数)以及与结构的关系,并通过基于图形的表示将它们联系起来我们提出的模型受到[16,17]中为分形给出的模型的启发。与[16,17]不同,在我们的模型中,只考虑基本和通用概念,以允许它们应用于各种层次组件模型:组件作为运行时实体,所需和提供的接口作为组件之间的交互点,绑定到链接组件接口。组件可以是基本组件或复合组件。只有基本组件可以有一些属性用作配置参数。基于一致性的模型必须为系统提供机制,以便在其运行期间通过重构动态地适应其环境。3http://www.atelierb.euhttp://www.b4free.com4http://www.stups.uni-duesseldorf.de/ProBA. Lanoix等人理论计算机科学电子笔记279(2)(2011)4347集元件;接口;接口类型;参数常数ProvidedInterfaces,ProvidedInterfaces,InterfaceType,Provider,Providerer,Contingency,Definer性能智能接口产品介绍提供的接口提供的接口提供的接口=接口网络提供的接口∩接口类型=接口类型∈接口 →接口类型Provided接口→组件用户接口→组件应急接口→应急定义符∈参数→组件变量InstantiatedComponents,Parent,Binding,ProvDelegate,ReqDelegate,State,Value不变InstantiatedComponents实例化组件Parent∈InstantiatedComponents→ran(Parent)›InstantiatedComponentsclosure1(Parent)辈子这些动态重新配置可能是由于原始操作中指定的架构修改而发生的。请注意,重构并不是使架构进化的唯一方式。不同组件的正常运行也会通过修改参数值或停止组件等方式更改架构。本文给出了文献[12]中构件体系结构通用模型的一个B规范。首先,我们将架构元素之间的所有架构约束表示为B属性和不变量;其次,我们将架构重构操作建模为B操作;最后,我们证明了该架构B模型的一致性。4.1用B语言描述建筑结构我们考虑的架构元素是基于组件的系统的核心实体:组件、接口、接口类型和组件参数;以及它们之间的关系,以表达这些架构元素之间的各种联系。其中一些关系在系统重构期间不会发生变化。然后将它们定义为BCONSTANTS,并在PROPERTIES子句中表示对它们的架构约束。ProvidedInterfaces和ProvidedInterfaces被定义为INTERFACES的子集。他们的结合是分离的。InterfaceType是一个总函数,它将类型与每个必需的和提供的接口相关联。提供者是一个全满射函数,它给出至少有一个提供接口的组件,而提供者只是一个全满射函数。应急是一个总功能,它为每个必需的接口指明它是强制性的还是可选的。定义符是一个全函数,它给出了所考虑的参数的分量。我们考虑的其他架构关系可能会演变。定义为B变量,以及对它们的架构约束用不变量表示。条款。48A. Lanoix等人理论计算机科学电子笔记279(2)(2011)43Binding∈ProvidedInterfaces→电子邮件(iprov,ireq)。(iProv <$→ireq ∈Binding <$)›已安装的接口Increasingrer(ireq)∈InstantiatedComponentsProvider(iprov)∈InstantiatedComponentsii(iprov)=/电子邮件(ireq)父级(Provider(iprov))=父级(Provider(ireq))dom(Binding)接口类型(iprov)=接口类型(ireq)Because you're a baby.ReqDelegate(ReqDelegate)状态∈InstantiatedComponents →状态Ireq(Ireq).((ireq ∈req接口紧急情况(ireq)=强制性紧急情况Increasingrer(ireq)∈InstantiatedComponents状态(值∈参数→整数(ireq∈ran(Binding)InstantiatedComponents是COMPONENTS的子集。父级是将子组件链接到相应复合组件的部分函数。复合构件没有参数,子构件不能是包括其父构件在内的复合构件,等等。绑定是一个部分函数,它将提供的接口连接在一起,一个必需的:所提供的接口可以仅链接到一个所需的接口,而所需的接口可以是多于一个所提供的接口的目标。此外,两个链接的接口不属于同一个组件,但它们对应的实例化组件是同一个复合组件的子组件所考虑的接口必须具有相同的接口类型,并且它们尚未参与委托。ProvDelegate∈ProvidedInterfaces>∧ ∀ (isub , isuper ) .(isub ›→ isuper ∈ ProvDelegate(›提供的接口服务提供商(isub)∈InstantiatedComponentsisub/=isuperProvider(isuper) ∈InstantiatedComponents父级(Provider(isub))= Provider(isuper)请求委托(ReqDelegate)InterfaceType(isub)= InterfaceType(isuper)∧ ∀ (isub , isuper ) .(isub ›→ isuper ∈ReqDelegate<$)›已安装的接口构造器(isub)∈InstantiatedComponentsisub=/伊苏佩尔instantiatedComponents()Parent(parent(isub))= parent(isub)InterfaceType(isub)= InterfaceType(isuper)ProvDelegate和ReqDelegate表示委托链接,定义类似。它们都是部分双射,将提供的(分别) 接口(必填)具有提供的(或,它的复合体的接口:提供(相应地,requires)isub必须是isuper的提供者(res.requirer)。最后,这两个接口必须具有相同的类型,并且它们还没有参与绑定。状态是一个总函数,它将来自{started,stopped}的值与每个实例化的组件相关联:只有当所有强制要求的接口都被绑定或委托时,组件才能启动。最后,Value是一个总函数,它给出了所考虑参数的当前值A. Lanoix等人理论计算机科学电子笔记279(2)(2011)4349add(subcomponent,复合)=PREsubcomponent∈ COMPONENTS <$composite ∈COMPONENTSTHEN选择subcomponent ∈InstantiatedComponents实例化组件子组件/=复合计算位置∈/ran(定义r)subcompont∈/dom(Parent)subcompponent›→composite∈/Parentcomposite›→subcomponent∈/closure1(Parent)异丙肾上腺素(iprov)。 ((iprov ∈ ProvidedInterfaces_Provider(iprov)=subcomponent)(iprov∈/dom(Binding)<$iprov∈/dom(ProvDelegate)THEN(ireq∈/ran(Binding)<$ireq∈/dom(ReqDelegate)父组件(子组件):=复合组件ENDEND;Ireq(Ireq). ((ireq ∈ interfaces_req(ireq)= subcomponent)4.2用B建立动态重构模型一旦给出了基于配置的模型,原始的重构操作就可以被指定为这个B模型的B操作也就是说,我们规定:•instantiate(newComponent)和delete(component)来实例化/销毁组件;•add(subComponent,composite)和remove(subComponent)向/从组合添加/删除子组件;•bind(iprov,ireq)和unbind(iprov)来绑定/取消绑定组件接口;•delegate(isub,isuper)和undelegate(isub)来委派/取消委派组件接口;•start(component)和stop(component)启动/停止组件;•set(parameter,newValue)设置新的参数值。让我们详细介绍其中的一些B操作。下面的例子在B中定义了将子组件添加到复合组件的原始重构操作add(subComponent,composite)操作必须建立两个组件都是实例化组件,composite是复合组件(即没有参数的组件)。此外,subComponent不是另一个复合组件的子组件,也没有被使用:它的接口都没有被绑定或委托。最后,修改没有将循环引入Parent。的结合的组件接口由bind(iprov,ireq)表示:该操作必须确定所考虑的接口是正确的,即,它们被提供(分别地,必需的)接口,它们不被绑定也不被委托,并且它们的类型是兼 容 的 。 此 外 , 尚 未 进 行 绑定。bind(iprov,ireq)=PREiprov∈ INTERFACES< $ireq∈ INTERFACESTHEN选择ireq∈iprov∈ ProvidedInterfacesProvider(iprov)∈InstantiatedComponentsIncreasingrer(ireq)∈InstantiatedComponentsiprov∈/dom(绑定)iprov∈/dom(ProvDelegate)/dom(ReqDelegate)InterfaceType(iprov)= InterfaceType(ireq)然后iprov<$→ ireq∈/Binding绑定(iprov):=ireqENDEND;50A. Lanoix等人理论计算机科学电子笔记279(2)(2011)43stop(component)=PREcomponent∈ COMPONENTSTHEN选择然后component∈ InstantiatedComponents状态(component)=已启动ENDEND;状态:=状态D−({component}关闭(关闭1(Parent)D{component})×{停止ped}解绑定原语操作具体如下:该操作表示为所考虑的接口由实例化组件提供的先决条件。必须停止此提供程序。此外,与所考虑的接口绑定的所需接口必须存在。然后,从绑定中删除所考虑的接口。当考虑启动的组件时,应用stop(component)更改来停止所考虑的组件的状态及其所有子组件的状态(如果存在);依此类推。一旦这些原始的重新配置操作被指定,就可以编写更复杂的重新配置操作,如第2节所述二、4.3验证架构B模型我们使用AtelierB来验证组件架构的通用B模型的一致性。该工具生成证明义务(PO),以检查INVARIANT中表示的所有架构约束的一致性,以及每个B重构操作都遵守这些架构约束的事实。AtelierB生成139个PO。请注意,PO的工作正在进行中:此时,其中114个PO已自动或交互放电。还有25项采购订单的证明工作有待完成。这并不意味着它们是假的,而是AtelierB证明器仍需进行一次电子排序,以手动证明未经证实的PO。unbind(iprov)=PREiprov∈ INTERFACESTHEN选择Provider(iprov)∈InstantiatedComponentsiprov∈ ProvidedInterfaces服务器状态(提供程序(iprov))=已停止Ireq(Ireq).(一)Increasingrer(ireq)∈InstantiatedComponentsireq ∈req接口停止状态(停止器(ireq))=停止Ireq/=IreqTHEN_iprov<$→ireq∈Binding)InterfaceType(iprov)= InterfaceType(ireq)ENDEND;绑定:={iprov}−D绑定PO证明未经证实(closure1())%证明初始化30300100实例化2018第二章(1)90删除2721677添加1814第四章(三)77A. Lanoix等人理论计算机科学电子笔记279(2)(2011)4351COMPONENTS={HttpServer,RequestReceiver,RequestServer,CacheServer,接口={ httpRequest,request,getDispatcher,handler,getDispatcher,{FileServer1,FileServer2};接口类型={ Trequest,Thandler,Tdispatcher,Tcache,Tserver};getCache,cache,dispatcher,getServer,server1,server2};PARAMETERS ={deviation,load,validityDuration,validitySize}初始化组件初始化父级初始化绑定={ HttpServer,RequestReceiver,RequestServer,FileServer1,={RequestReceiver›→HttpServer,RequestServer ›→HttpServer,请求调度器}={handler›→ getDispatcher,dispatcher›→getDispatcher,RequestDispatcher›→HttpServer,FileServer1›→HttpServer}请求InitProvDelegate={request›→httpRequest}server1›→getServer}初始化请求委托=初始化状态初始值={HttpServer›→已启动,RequestReceiver›→已启动,请求›→已开始,RequestDispatcher›→已停止,={deviation <$→49,load <$→75,validityDuration <$→2,validitySize <$→100}FileServer 1 ›→停止}5验证特定体系结构如图1所示,我们的方法包括实例化通用架构B模型,以指定和验证特定架构。原始重构操作用于给出与运行示例相对应的复杂重构操作。正如第1节所解释的,一般模型的实例化不能用证明方法来检查。事实上,我们不考虑任何控制器的规范来管理动态重新配置。然而,为了部分验证模型,我们应用有界模型检查来验证实例化模型。5.1实例化运行的体系结构为了使用通用B模型实例化一个特定的架构,我们只需给Subsect中所有先前定义的集合、常量和变量赋值。4.1,使它们代表运行的架构。现在,让我们指定与HTTP服务器示例相对应的不同操作的基本架构元素PROPERTIES子句被扩展为体系结构关系的状态值ProvidedInterfaces ={httpRequest,request,handler,cache,dispatcher,server1,server2}已验证的RedInterfaces ={getCache,getDispatcher,getServer}意外开支接口类型={getDispatcher →mandat mandy,getDispatcher→mandat mandy,={httpRequest›→Trequest,request›→Trequest,handler›→Thandler,getCache›→可选,getServer›→强制执行}getHandler›→Thandler,getDispatcher›→Tdispatcher,getCache›→Tcache,cache›→Tcache,dispatcher›→Tdispatcher,服务提供商电子邮件德芬纳={httpRequest›→HttpServer,request›→RequestReceiver,getServer›→Tserver,server1›→Tserver,server2›→Tserver}处理程序›→请求程序,缓存›→缓存服务器,服务器1 ›→文件服务器1,={getReceiver ›→RequestReceiver,getDispatcher›→RequestReceiver,dispatcher›→RequestDispatcher,server2›→FileServer2}={偏差<$→请求量,负载<$→请求量,getCache›→ RequestCache,getServer›→RequestDispatcher}validityDuration ›→ Cachebooks,缓存大小›→ Cachebooks}最后,我们初始化剩余的架构关系如下:52A. Lanoix等人理论计算机科学电子笔记279(2)(2011)435.2用B对运行中的重构进行建模在详细说明子节中的原始重建之后。4.2,我们可以编写更复杂的重构操作,调用原始的重构操作,通过顺序组合它们并使用SELECT,IF和/或WHILE语句。AddCache重新配置来自秒2可以使用这里描述的B重构基元来表示运行示例的所有重新配置都可以用B操作以类似的方式表示。此外,不同组件的正常运行也会改变例如,通过修改参数值来修改架构为了处理这种行为,一个解决方案是将系统运行的抽象定义为一个(一组)B操作。在我们的示例中,添加了一个名为RUN的B操作:基本上,它更改RequestList组件的(load)和(deviation)参数的值5.3验证正在运行的体系结构B模型在工作的这一步,使用证明过程来解决实例化B模型的验证是不可能的。 事实上,我们没有考虑到指定必要的关联控制器来管理动态重新配置(例如,通过自适应策略)。然后,没有关于调用重构操作的上下文的信息。AtelierB不能用来验证实例化的模型,因为它的证明者没有假设来帮助他们证明重构保持了架构不变。然而,为了(部分地)验证实例化的B模型,ProB可以用来检查实例化的B模型的样本的一致性:在每个重构步骤中,ProB检查架构约束以找到违反不变量的示例。因此,可以产生包含运行和重构操作序列的轨迹。AddCachetype =SELECT(值(偏差)>50)然后instantiate(CacheBook); add(CacheBook,HttpServer);bind(cache,getCache); start(Cachetype)结束语:A. Lanoix等人理论计算机科学电子笔记279(2)(2011)4353五十二:九十一:例如,很容易重现这个简短的场景(右侧图描述了ProB生成的相应轨迹):(i) HTTP服务器的初始配置没有缓存和文件服务器2组件;(ii) 下一个配置是通过运行架构并改变负载和偏差值来获得的;(iii) 在此阶段,我们在AddCache配置操作之后将Cache(iv) 之后,通过AddFileServer重新配置,将FileServer 2组件添加到架构中(v) 体系结构正在运行;(vi) 通过应用RemoveCachetron重新配置,组件Cachetron将从全局体系结构中删除。自动随机探索允许我们以更一般的方式检查实例化的例如,ProB模型在5301毫秒内检查了1000个节点:既没有发现不变量冲突,也没有发现死锁,并且覆盖了所有操作根:$setup_constants第0$initialise_machine一曰:运行第二十一AddCachetumAddFileServer八十一:运行删除缓存一百五十五:6在重构上检验时态公式在本节中,我们利用线性时序逻辑进行动态重构,在[12]中引入并称为FTPL。它允许我们通过使用架构不变量和线性时序逻辑模式来验证基于重构的系统的正确性。FTPL的灵感来自[13]中的提议,以及它们对JML的时间扩展[21,8,14]。在这项工作中,我们建议将FTPL模式转换为LTL公式,以检查FTPL属性与ProB模型检查。6.1FTPL语法和语义让我们考虑下图中FTPL的子集。它基于跟踪属性,每个跟踪属性都是对动态重构模型执行(的一部分)的时间约束。配置属性,称为conf,是集合上的一阶逻辑公式,以及原始集合上的关系运算和4.1节中定义的关系。此外,对于重组操作操作,其结束被认为是一个事件。54A. Lanoix等人理论计算机科学电子笔记279(2)(2011)43跟踪属性指定了要确保重构序列我们主要指定总是和最终约束,分别描述了一个属性必须由序列的每个配置或至少一个序列的配置来满足。每个时态公式都涉及执行跟踪的一部分,属性应该保持:它是用特殊的关键字指定的,例如,之后/之前一个特定的事件已经发生,或者在两个特定的事件之间。现在,让我们通过在第二节中的HTTP服务器示例二、示例1下面的属性表达了一个体系结构约束,即总是至少有一个文件服务器。换句话说,总是有至少一个提供的接口连接到RequestDis-patcher的所需接口getServer:总是iprov∈ProvidedInterfaces。Binding(iprov)= getServer示例2重新配置AddCache(resp.RemoveCachetype)添加(分别为移除)当偏差值较大时缓存(分别减)超过50。以下属性指定偏差值最终变为在考虑的重新计算之间小于50AddCache终止之间RemoveCache最终终止偏差50<这些例子表明,FTPL比[11]中的建议更具表达力,后者只处理架构不变量。事实上,FTPL允许表达事件属性和时间属性,涉及不同种类的时间模式,这些模式已被证明对实际应用有用[13]。6.2从FTPL到LTL我们采用[21]和[8]中的结果,并提出将FTPL模式翻译为ProB考虑的LTL方言,称为LTL[e] [19]。表示为LTL(x)的转换过程是在FTPL公式的结构上归纳定义的设conf为配置属性,B,B(conf)是一个重写过程,给出对应于conf的B谓词,并打开一个重构。设trace、trace1和trace2为trace属性,event为event属性,临时属性。请注意,跟踪属性根据使用该属性的时间上下文被转换为LTL,这就是为什么我们定义辅助函数LTLB。event::=opeterminatestrace::=alwaysconf|最终 confTemp::=||trace1trace2trace1trace2|事后温度事件前跟踪|跟踪直到事件|be tweene vent1e vent2t raceLTL(conf){B(conf)}LTL(opeterminates)[开]LTL(alwaysconf)G(LTL(conf))LTL(最终确认)F(LTL(conf))LTL(trace1trace2)LTL(trace1)LTL(trace2)LTL(trace1trace2)LTL(trace1)LTL(trace2)A. Lanoix等人理论计算机科学电子笔记279(2)(2011)4355G({x(iprov).(iprov∈ProvidedInterfaces Binding(iprov)= getServer)})LTL(事件后温度)G(LTL(事件)和LTL(温度))事后追踪G(LTL(事件)和LTL(跟踪))LTL(事件跟踪前)F(LTL(事件))LTLB(事件,跟踪)LTL(跟踪至事件)F(LTL(事件))LTLB(事件,跟踪)LTLB(事件,始终配置)LTL(conf)ULTL(event)LTLB(事件,最终配置)<$(<$(LTL(conf))ULTL(event))LTL(在事件1事件2事件之间)LTL(事件1之后(事件2之前))实施例1中呈现的FTPL性质已被转化为以下LTL公式。这个公式已经在126毫秒内用ProB进行了部分检验。当新状态的最大数量为1000时,模型检查器生成2002个原子和16064个转换。将上面的转换应用于示例2中的属性会产生下面的LTL属性,在1802毫秒内检查。当新状态的最大数量为1000时,模型检查器生成16048个原子和129704个转换。G([AddCacheList])F([RemoveCacheback])<$$>(<$({Value(deviation)50})U[RemoveCacheback])<由于FTPL [12],可以编写涉及架构约束的更复杂的时间属性。 然后,由于我们的翻译过程,它们的验证可以用ProB进行研究。请注意,由于ProB的特征,这种验证是有大小限制的和部分的7结论本文提出的不同建议涉及基于组件的并发系统的动态重构的验证。动态架构约束可以用(重)配置序列上的线性时间时态逻辑表示,如FTPL [12]。由于架构约束涉及一阶公式,并且重构的行为语义会产生无限状态系统,因此我们提出了一种结合证明和模型检查的方法,以支持此类系统的建模及其动态重构的验证,如图1所示。我们首先提出了一个通用的B模型的组件架构,我们已经证明了模型的架构约束的一致性。然后,我们已经实例化了通用模型来解决特定的架构验证:其一致性和(重新)配置序列上的一些时间属性(以FTPL表示并转换为LTL)已经过模型检查。我们对时间属性规范和验证的贡献-包括静态和动态分析-允许在运行时监控仪器和管理应用程序,这要归功于可用的动画规范工具。相关工作。在动态重构的背景下,ArchJava [4]提供了重构Java架构的方法,ArchJava语言保证了运行时的通信完整性。Barringer等人给出了一个基于时序逻辑的框架来推理系统的演化[6]。在[5]中,时态逻辑是56A. Lanoix等人理论计算机科学电子笔记279(2)(2011)43建议指定和验证图形转换系统的属性。在基于分形的框架中,[17]中的工作定义了基于分形的图形表示的完整性与[17]不同,我们的模型只规定了一般的架构约束,从而为其他基于组件的系统提供了操作语义在完整性约束方面,FTPL逻辑允许指定比[11]中的架构不变量更复杂的为了在增加自适应行为的同时增强软件的鲁棒性,[20]中的工作与我们基于B的提议一样,FracL静态方法允许验证应用程序架构的一致性。然而,我们的建议允许检查模型的一致性和监测时间属性,都是完全自动的。在其他应用中,我们的建议旨在监控基于组件的系统。在[7]中,Basin et.al已经展示了使用用于度量一阶时态逻辑(MFOTL)的运行时监控方法来监控时态安全属性(以及最近的安全属性)的可行性。喜欢这种型号在[7]中,我们的模型是一阶结构,但不是考虑时间戳序列,而是关注重构操作。在[15]中,基于知识的可控性被研究用于构造分布式控制器。这里的问题与我们的有些不同:目标是使系统的行为完全符合给定的基于知识的优先级属性,而这里的重构必须满足某些给定的架构和时间约束。引用[1] Abrial,J.-R.,[2] Aguilar Cornejo,M.,H.加拉韦尔河Mateescu和N. De Palma,Specification and Verification of a DynamicReconfiguration Protocol for Agent-Based Applications,Research Report RR-422
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- 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
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功