没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记117(2005)229-248www.elsevier.com/locate/entcs正式检查表对于远程代理可靠性Grit Denkera,Rising,and Carolyn L.Talcotta,美国aSRI,Menlo Park,California,USA{grit.denker,carolyn.talcott}@ sri.com摘要在深空任务中使用的远程代理,如漫游车或太阳能飞机,必须在行星探索期间长时间自主运行。任务数据系统(MDS)框架已经开发,以解决这些复杂系统的设计和部署。 我们正在使用Maude环境开发一个正式的框架,方法和支持工具,以提高MDS空间系统的可靠性。这是通过制定MDS框架及其特定任务适应性的正式可执行规范,并提供一套可用于实现更好的可预测性和可靠性的正式检查表(正式分析套件)来实现的。 在本文中,我们提出了我们的正式模型的MDS框架,适应 远程漫游者的初步清单和远程代理的初步清单关键词:重写逻辑,面向目标,基于模型,形式检查表1介绍几年来,NASA一直在执行机器人深空任务,这些任务依赖软件来执行任务功能。深空任务涉及物理和软件系统的紧密集成这些系统的设计、构建和部署都很任务数据系统(MDS)框架[1]已被开发来解决这个问题。MDS提供了一个可重用组件的体系结构、工具和库,用于设计和实现空间任务系统,主要用于机器人深空探测器。*由NSF资助CCR-0234462**由NSF资助CCR-9900326、CCR-0234462*感谢匿名评论者提供的有用意见。1571-0661 © 2005由Elsevier B. V.出版,CC BY-NC-ND许可下开放获取。doi:10.1016/j.entcs.2004.06.021230G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229需要对物理系统进行自主分布式监测和控制的空间任务。MDS建立在两个关键思想之上:基于状态的系统设计方法和面向目标的操作方法。基于状态的方法使得领域知识以全局共享的状态变量和指定用于控制状态变量的值的约束和操作的领域模型的形式显式。面向目标的操作允许用什么而不是如何来描述任务。 目标是对某个状态变量的约束,该状态变量在某个时间间隔内保持不变。目标实现者软件负责将高级目标细化为目标网,目标网描述了要执行的操作以及对它们的时间和执行顺序的约束。目标实现者的可靠性和正确性,以及他们与并发活动组合的可预测行为对任务成功至关重要。我们项目的主要目标是开发一个正式的框架,包括方法(称为正式检查表)和支持工具,以提高空间系统面向目标的操作的可靠性。为了阐明基本思想,我们在Maude [2]中建立了MDS框架的简化版本。虽然简单,但Maude模型的模块化结构遵循MDS组件的结构,并且详细填写以获得MDS架构的完整规范将是直接的。一个名为SCRover的远程漫游车正在南加州大学(USC)开发,作为MDS的特定任务适应通过抽象MDS组件的漫游器特定扩展和漫游器设备模型的规范,在Maude中开发了SCRover适配的正式可执行规范(简化版本)第一组检查表项目已经定义并应用于SCRover模型,使用Maude的执行,搜索和模型检查功能。本文的其余部分组织如下。第2节是对Maude语法和工具的相关方面的简要回顾。 第3节讨论了基于目标和模型的系统设计的概念,概述了MDS框架,并描述了我们对MDS框架的规范。第4节描述了我们对SCRover适配的规范。第5节介绍了初步的检查表想法,并显示了它们在SCRover规范中的应用。第6节总结并讨论了今后的工作。 Maude代码和更详细的技术报告可以在http://www.csl.sri.com/users/denker/remoteAgents/上找到。G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)2292312关于MaudeMaude [3,2]是一种基于重写逻辑的多范式可执行规范语言[4,5]。Maude解释器非常高效,允许对相当复杂的测试用例进行原型化。Maude还提供了高效的内置搜索和模型检查功能。Maude是respective[6,7]提供了一个元级别的模块,它反映了Maude的语法和语义使用反射,用户可以编程专用执行和搜索策略,模块转换,分析和用户界面。Maude源代码、几个平台的可执行文件、手册、入门、案例研究和论文可从Maude网站http://maude.cs.uiuc.edu获得。我们简要地总结了Maude的语法,这是在我们的案例研究中使用。我们使用两种类型的模块:• 函数模块,是用于指定代数数据类型的等式理论;它们用语法fmod...endfm• 系统模块,是指定并发系统的重写理论;它们是用语法mod.恩德姆这些模块具有初始模型语义。在模块的关键字之后,立即在此之后,可以添加导入的子模块还可以声明排序、子排序和运算符。运算符是通过op关键字引入的,后面跟运算符名称、参数和结果排序。一个操作符可能有混合的fix语法,名字中包含方程公理是用关键字eq(或条件方程的ceq)引入的,后跟两个被等号=分隔的项。重写规则是通过关键字rl(条件规则为crl),后跟一个可选的规则标签,以及与规则的前提和结论相对应的术语(由重写符号=>分隔)来引入的。出现在公理、规则(和命令)中的变量可以使用关键字var或vars全局声明,或者功能模块中不允许重写规则。我们使用Maude表示法和并发对象的约定对MDS框架的各个组件及其适应性进行建模。系统状态(排序配置)(快照)是对象(排序对象)和消息(排序消息)的多重集合。配置的多集并运算符用空语法(并置)表示,并且(通过多集的定义)是结合的和交换的。对象具有其中O是对象标识符(sort Oid),C是类标识符(sort Cid),而att-1,.,att-n232G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229环境模型参数基于策略的分布式应用目标政策认知Agent应用模型是属性(排序属性)。上述内容在模块CONFIGURATION中公理化,该模块是标准Maude库的一部分一个典型的系统配置将由几个对象和消息组成。并发对象系统的动态行为通过为每个类指定重写规则来公理化,这些规则决定了,例如,一个对象响应一个消息做什么为了MDS应用程序的目的,我们定义了一个名为MYCONF的模块,指定了一个构造函数op o:String-> Oid,它将字符串转换为对象标识符,一个消息内容的排序MsgBody,以及消息编译器op msg:Oid OidMsgBody -> Msg和op noMsg:-> Msg。这给出了消息的标准形式,便于一般交互框架的公理化。3MDS架构3.1基于模型和目标的系统设计监 测 报告认知Agent分析-推理-配置-适应Fig. 1. 自适应系统设计MDS框架是一种通用方法的一个例子,我们称之为基于模型和目标的系统设计(见图1),用于设计能够适应动态变化的需求和环境的分布式、情境感知系统。这种方法的一个关键要素是使用正式的模型和正式表示模型之间的关系,并与系统参数和可观的。这些模式分为三个主要领域:G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229233(i) 底层系统基础设施的形式化模型,包括设备相关方面的模型和环境系统软件组件的模型。(ii) 表达所设想系统的各种需求的高级目标和策略,包括端到端功能、性能、安全性、服务类别和服务质量,以及管理、计算或物理分布需求。(iii) 描述威胁和故障模型、预期使用模式、传输负载或物理环境约束等的环境模型智能体提供目标细化和态势分析服务,这些服务使用模型以及传感器(被动监视器或主动探测器)和基于策略的配置服务,以实现态势感知和自适应系统的总体目标。目标细化服务使用其系统和环境状态的模型来分析当前情况,并计算约束的初始值,即,低级别的策略规范,关于预期满足目标和执行策略的系统参数。基于策略的配置服务使用这些参数限制来计算实际的系统配置。传感器观察系统执行事件,并通知认知代理正在进行的系统行为。根据当前系统和环境模型,分析报告以确定观察到的行为是否符合预期。如果存在问题,则尝试对模型进行调整,使用由目标细化服务产生的当前期望的合理性。当模型被更新,或者新的目标被指定时,目标细化服务基于改变的模型和目标重新计算系统除了MDS框架,我们目前正在研究这种方法的适用性认知网络,实时,嵌入式系统。本节的其余部分组织如下。首先,我们简要概述MDS体系结构组件和连接。然后,我们描述了Maude模块,形式化这个体系结构的接口和组件之间交换的消息,和类的模型,每个组件的共同结构。迄今为止的工作主要集中在具体的模型和简单的目标上。下一步是目标细化。在MDS中,调度程序扮演基于策略的配置服务的角色。3.2MDS概述任务数据系统(MDS)[1]及其先驱远程代理体系结构[8]已经确定了开发远程代理系统的两个关键思想,这将简化并降低设计、测试和操作的成本:(1)A234G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229目标状态知识状态状态模型状态测定状态控制测量硬件代理行动传感器致动器基于状态的系统设计方法和(2)面向目标的操作方法。系统状态是任务操作决策的基础。系统状态包括设备操作和故障模式、设备健康状况、资源水平以及有关动态的信息,例如车辆位置和姿态、角度和车轮旋转。任务目标描述了一项任务行动的预期结果,以便圆满完成整个任务。在数学上,目标是在时间间隔内对状态变量值硬件图二. MDS基于状态的体系结构MDS架构的主要组成部分如图2所示(摘自[1],略有修改)。在MDS中,所有的状态信息都保存在一组所谓的状态变量中。用于控制系统的系统状态的所有方面都必须作为状态变量的值显式化。状态变量是访问系统状态的唯一方式。因此,系统设计的一个关键部分是状态变量的选择领域知识在模型中单独表示。这些模型表达了对状态变量值的约束,并预测它们在给定动作下将如何变化状态变量从调度器接收原始目标目标是在一段时间间隔内对状态变量值的约束目标被转发到状态变量的控制器。为了满足该目标,控制器基于状态变量的当前值发出命令。命令经由硬件代理中的致动器传输到硬件。传感器通过代理将测量值从硬件传送到估计器(在图2中也称为状态确定)。估计者解释测量G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229235并更新状态变量的值。状态变量的更新值可以与目标进行比较,并且可以采取进一步的步骤来实现尚未满足的目标,或者解决下一个目标。3.3Maude中的MDS体系结构我们的正式模型基于描述MDS架构的出版物,包括[1],SCRover测试平台工件库中的可用文档(包括架构规范,试图满足目标的各种组件之间交互的UML图,以及C++头文件)以及与喷气推进实验室(JPL)MDS团队成员和南加州大学SCRover团队成员的几次对话。我们用以下六个模块对MDS架构进行建模,每个模块定义一个类:状态变量、控制器、估计器、执行器、控制器和设备。这些类对应于MDS组件状态知识(或状态变量)、状态控制(或控制器)、状态确定(或估计器)、致动器、传感器和硬件(或设备)。我们将详细讨论STATE-VARIABLE模块,以给出规范的概念,并简要总结其余模块的关键特性。我们使用异步消息传递建模MDS组件之间的通信有些消息交换是为了对方法调用(函数调用的面向对象模拟这是使用一个特殊的属性waitAfter来指定的,该属性将消息作为参数,条件规则使用waitAfter属性的值来控制哪些消息可以接收。每个方法调用消息都有一组对应的可能应答。单独的模块用于指定组件之间的通信接口(交换的消息)。图3显示了Maude类和在组件之间发送的消息,其中箭头指示消息的流向。这些类的规则大致如下指定信息和控制流。向状态变量发出目标请求,状态变量将其转发给控制器。控制器确定动作过程并通过致动器向设备发出命令。由此产生的设备状态由传感器读取并发送到估计器。估计器从传感器值中创建测量值,并向状态变量发送更新请求。当状态变量接收到更新时,它会向估计器发送一条消息确认这一点,并将新值通知其控制器。控制器可以根据目标检查新状态并决定进一步的动作。它要么继续向执行器发出命令以实现目标,要么向状态变量报告目标是成功实现还是失败。状态变量将信息转发给环境实体236G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229startConstraintconstraintSuccess约束失败状态变量readyReqstartCstrnewValuereadyRependCstrackUpdStateRequpdStateReq控制器估计器issueCmd新测量致动器传感器执行命令传感器值装置图三. MDS组件消息交换在目标请求中指定。3.4接口的Maude规范我们将讨论限制在状态变量与环境和控制器的接口上。其他接口具有类似的结构。国家价值观。状态值由估计器计算,在消息中通信,由控制器测试约束满足度,并由目标阐述器使用。模块STATE-VALUE声明状态值的排序,未知状态值的子排序,以及常数uk来表示状态变量的值可能未知的事实。在这里和其他地方,Maude模型的排序和类层次结构反映了MDS框架的类层次结构,以便于将模型与实现联系起来。fmod STATE-VALUE是对StateValue进行排序。对UnknownStateValue进行排序。子排序UnknownStateValue< StateValue。op uk:-> UnknownStateValue.endfm状态变量/环境接口。环境向状态变量发送启动约束请求。状态变量向环境报告约束是否可以G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229237实现与否。如果失败,它会给出一个原因。模块CONSTRAINT声明了一个sortConstraint,用于约束,以及一个sortConstraint的常量noCstr,它代表总是满足的约束,类似于布尔值true。模块REASON声明了一个排序Reason,for reasons。下面的模块指定了状态变量和环境之间接口的消息,如下所示。fmod STATE-VARIABLE-ENVIRONMENT-INTERFACE包含MYCONF。inc约束。incREASON.op startConstraint:约束-> MsgBody。opconstraintSuccess:约束-> MsgBody。op constraintFailure:约束原因-> MsgBody。endfm状态变量/控制器接口。在请求控制器启动约束之前,状态变量必须询问控制器是否准备好接受新的约束。如果收到肯定的以下模块指定状态变量及其控制器之间接口fmodSTATE-VARIABLE-C ONT R O LLE R-INT ER FA CE是incMYCONF。inc约束。incREASON.inc STATE-VALUE。* 控制器op readyReq:-> MsgBody.*** 到控制器opstartCstr:Constraint Oid StateValue ->MsgBody。op newVal:StateValue -> MsgBody。* 状态变量op readyRep:Bool-> MsgBody。op endCstr:Constraint Oid Bool Reason -> MsgBody。endfm3.5MDS组件3.5.1状态变量STATE-VARIABLE模块包括属性模块以及与控制器和估计器的接口它声明状态变量类标识符排序SVCid是CONFIGURATION中定义的预定义Cid的子排序。这样,状态变量类就是泛型对象类的子类每个特定的状态变量类都有自己的类标识符排序,它又是238G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229SVCid.这样,一般为状态变量对象定义的规则将适用于特定子类的状态变量对象。为状态变量声明的其他属性包括当前值、正在处理的约束(如果有的话)以及用于记住该约束的请求者的对象标识符。最后,声明一个原因常量notReady,以在控制器对就绪请求做出否定答复的mod STATE-VARIABLE是incATTRIBUTES。包括状态变量环境接口。包括状态变量控制器接口。incSTATE-VARIABLE-EST IM ATO R-INT E FA CE.sort SVCid.subsort SVCidAttribute。opreq:Oid ->Attribute。opcstr:约束->属性。** 原因OP NOT READY:->原因。状态变量模块中定义的规则集决定了状态变量的行为。我们只展示用于处理启动约束请求的两个规则。vars sv o 'czech:Oid. varsvcid:SVCid.var cstr cstr':约束。varsvatts:AttributeSet. varv:StateValue.只有当状态变量没有等待某个应答时,也就是说,waitAfter的值为noMsg时,才能接受startConstraint消息。在这种情况下,它记录请求并向其控制器发送readyReq消息。rl[startConstraintReadyReq]:< sv:svcid| svatts,mycounts(cstr),req(o'),cstr(cstr '),waitAfter(noMsg)>msg(sv,o,startConstraint(cstr))=>< sv:svcid| svatts,mycode(cstr),req(o),cstr(cstr),waitAfter(msg(sv,o,startConstraint(cstr)>msg(css,sv,readyReq).一个状态变量只能接受一个readyReply从它的控制器,如果它是等待-ING后startConstraint。 如果回复是肯定的,则将约束转发到控制器,并且状态变量保持其等待状态。否则,它会向请求者报告失败,并准备接受另一个约束.rl[forwardConstraint]:G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229239< sv:svcid| svatts,mycode(cstr),req(o),cstr(cstr),val(v),waitAfter(msg(sv,o,startConstraint(cstr)>msg(sv,cv,readyRep(b))=>如果b然后msg(codeRep,sv,startCstr(cstr,o,v))elsemsg(o,sv,constraintFailure(cstr,notReady))菲请注意,状态变量rules使用SVCid排序的类标识符变量svcid,而不是这种排序的特定常量。这是为了使规则将适用于具有类标识符的特定状态变量,其排序是SVCid的子排序。这是Maude中建模子类化的标准技术其余的状态变量规则涉及状态值更新和约束结束报告。状态变量可以在任何时间从其估计器接收状态值更新请求。当更新到达时,状态变量存储新值,向估计器确认更新请求的接收,并通知控制器关于新值。如果状态变量正在等待cstr的报告,则它只能接受来自其控制器的消息endConstraint(cstr,r)。如果原因r是noReason,则将ConstraintSuccess(cstr)发送给约束请求者,否则将发送ConstraintFailure(cstr,r)3.5.2其他组件在下文中,我们将概述其他MDS组件的功能。 所有MDS组件的完整Maude规范可在http://www.csl.sri.com/users/denker/remoteAgents/上找到。Controller.在这个版本的MDS架构规范中,我们指定了一个具有通用控制策略的控制器:控制器确定满足目标的行动过程并发出适当的命令。当控制器从状态变量接收到针对新目标的就绪请求时,如果它不在实现约束的过程中(指示waitAfter(noMsg)),则它将以肯定答复进行响应。否则,它会做出负面反应。当控制器从状态变量接收到消息startConstraint(cstr,o,v)时(之前已经报告它已就绪),它保存约束、请求者和当前状态值。控制器决定是否240G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229当前状态值使用操作satisfy来满足约束。如果当前状态值已经满足了约束,则它会使用成功的endCstr消息回复状态变量。如果当前状态不满足约束,控制器通过调用其coa函数来确定动作过程,发出第一个命令并存储命令列表的其余部分如果控制器正在满足一个约束,并且它收到一个新值newVal(v)的消息,它首先确定新值是否满足约束。如果是,则向状态变量发送endCstr消息,指示成功。如果不满足约束,并且控制器没有更多的命令要发出,则endCstr消息被发送到状态变量,原因为COANoSuccess,指示控制器确定的动作过程不成功。在上述两种情况下,控制器都将其waitAfter属性设置为noMsg,以允许处理新的约束否则,控制器在其存储的命令列表中发出下一个命令,并保持在处理约束状态。控制器的满足和coa操作必须针对MDS架构的每个特定适配分别执行器.当致动器act接收到消息msg(act,act,issueCmd(cmd))时,它将msg(d,act,executeCmd(cmd))发送到其相关联的设备d。executeCmd操作将控制器命令转换为设备可接受的形式传感器.当传感器sens从其设备接收msg(sens,d,sensorValues(sval))时,d,它发送msg(est,sens,newMeasurement(sval))其相关的估计,est。操作“测量”用于将感测值转换为测量值。估计。当估计器est从传感器接收msg(est,sens,newMeasurement(m))时,它将msg(sv,est,updStateReq(verifyState(m)发送到相关联的状态变量sv。函数verifyState用于估计状态值。估计器在接受进一步的测量之前,通过将新的测量消息存储在其waitAfter属性中,等待来自状态变量的确认。这可确保状态变量接收值G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229241与估计器发送的顺序相同。 这也意味着状态变量必须接受和确认所有更新。设备.MDS体系结构的器械组件在软件外部。在正式模型中包括设备有两个原因。一个是这使得目标和控制器所依赖的“物理”变得明确;另一个是设备的可执行模型可以用于目标实现者规范的仿真和分析。设备的所有行为都取决于特定的MDS适配。因此,通用设备模块只为通用设备类提供排序声明。4SCRover可执行文件规范我们的一个小型远程代理系统的例子是一个漫游者在网格上移动,其中一些网格位置包含障碍物。漫游者可以顺时针旋转45度的增量,如果这个方向是90度的倍数,并且如果该方向上的相邻位置没有被阻挡或阻挡在网格之外,则它可以沿着它前进的方向移动。模块GRID指定网格,声明排序Loc(自然数对(x,y)),LocSet(位置集)和Dir(罗盘点方向的符号名称,N,S,E,W)。函数被定义为将符号方向转换为度数(dir(N)= 0),并计算移动后的新位置newLoc。模块ROVER指定基于网格的漫游器。漫游者知道它所操作的网格(它的grid属性指定了网格的高度,宽度和被阻挡位置的集合),它自己的位置(包含网格坐标的loc)和航向(hd)。航向是一个自然数,对应于从网格的北方顺时针方向的度数此外,漫游器知道它当前是在行驶、转弯还是处于空闲状态(st属性)。mod ROVER是...排序RoverCid。subsort RoverCid Attribute。* Grid:ht wd blocked op pos_:Loc -> Attribute的维度。op hd:Nat -> Attribute。* 度顺时针从网格北排序状态。ops driving turning idle:-> Status.242G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229op st:Status-> Attribute。...恩德姆漫游器可以从其致动器接收驱动命令。如果漫游者不是朝北、东、南或西的方向前进,它将无法沿着网格移动。如果有障碍物占据目标网格位置,它也将无法移动。在这种情况下,漫游者将简单地向传感器报告其当前位置和航向。漫游器还可以从其致动器接收转向命令。在这种情况下,它执行命令,然后向其传感器报告其当前位置和航向位置和航向状态值和接口。我们使用一个状态变量来模拟漫游车状态,称为位置和航向状态变量。正如其名称所示,该状态变量的值域由给出x和y网格坐标的三元组组成,以及漫游者前进的模块POSANDHEAD-STATE-VALUE指定了这个值域。特别是,它声明了StateValue的子排序PosAndHeadStateValue和构造函数op_ ' , _ d i r _ : N a tN a tD i r- >P o s A n d H e a d S t a t e V a l u e 。在漫游器自适应中,必须进一步细化路由器-致动器、设备-致动器、设备-传感器和估计器-传感器接口,以指定组件之间要通信的数据两个命令drive和turn被添加到执行器接口。这些也可以使用重载作为消息体添加到执行器-设备接口。构造函数posAndHead: Loc Dir -> SensorValue被添加到设备-传感器接口,用于漫游器向传感器报告值。位置和航向状态变量。如上所述,设计MDS远程代理系统的一个重要部分是识别状态变量并确定如何测量和控制它们。漫游车系统的目标包括移动到网格上的某个位置并面向给定方向。因此,我们在模块POSANDHEAD-STATE-VARIABLE中为位置和航向状态变量定义了一个类。mod POSANDHEAD-STATE-VARIABLE是inc POSANDHEAD-STATE-VALUE。inc STATE-VARIABLE。对PosAndHeadSVCid进行排序。子排序PosAndHeadSVCid< SVCid。G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229243恩德姆这个模块通过为POSANDHEAD-STATE-VARIABLE类标识符声明SVCid的子排序PosAndHeadSVCid来定义STATE-VARIABLE的子类。类似的约定用于定义其余组件(控制器、致动器、传感器和估计器)的位置和航向子类。位置和航向控制器。该模块通过定义位置和航向约束的语法、给出约束满足的方程以及给出动作过程函数coa的方程来扩展通用控制器。位置和标题约束是PosAndHeadConstraint排序的元素,PosAndHeadConstraint是Constraint的子排序。位置和航向约束简单地是由两个自然数的并置(预期位置被理解为(x,y))和方向组成的三元组。如果它们对应的坐标和方向相同,则位置和航向值满足位置和航向约束用于确定实现给定约束的动作过程的算法实现了一种简单的策略,以确定应该向漫游器发出哪些命令该战略有三个步骤。(i) 首先,获得最终位置的x位置。这是通过确定漫游车必须沿着x轴的哪个方向(东或西)行驶以及漫游车是否需要转向以到达其初始位置来完成的。然后计算漫游器需要沿着x轴前进的步数。生成适当的转弯和驱动命令列表(ii) 第二,目标的最终位置已经实现。控制器确定漫游器是否需要沿着y轴在南方向或北方向上前进,发出所需的转弯命令,然后确定漫游器的驾驶步数(iii) 最后,控制器确定还需要发出多少个转弯才能使漫游器朝着期望的方向前进这是一个头脑简单的策略,不考虑网格的阻塞位置。因此,可能的是,控制器成功地发出所有命令,并且漫游器仍然没有结束在期望的位置,因为驱动命令导致位置没有改变,因为 一个街区。244G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229位置和航向致动器、传感器和估计器。位置和航向致动器、传感器和估计类的规格非常简单。因此,致动器从控制器获取命令,并将其转换为正确的格式以在设备中执行因为我们为命令和执行器-漫游者消息选择了相同的名称,所以这只是一个排序转换。将传感器值转换为测量值(executeCmd)和测量值转换为值(verifyState)的操作也被定义为排序转换,只是返回它们的参数,这些参数被视为不同排序的元素。5走向正式的检查清单清单思想通过为特定的规范族提供遵循的步骤来完善Maude形式方法论[9],在这种情况下,规范是基于MDS框架的自主空间系统。这种方法的本质是,一点形式化可以有很长的路要走,不同层次的保证可以通过不同层次的任务来获得:开发形式化模型;执行测试场景;轻量级分析,如搜索和模型检查;以及定理证明。我们在SCRover规范的背景下说明MDS检查表的想法。• L0。检查规范是否格式良好。此检查只需将规范加载到Maude中并确保没有报告任何问题即可实现。• L1。执行级别检查代表性配置是否表现出预期和期望的行为。对于每个测试用例· 定义测试模块并定义初始系统配置。· 扩展测试模块,定义要检查的目标。这应该涵盖所有的基本目标。· 对于每个目标,指定预期结果以及不应使用配置定义的谓词出现的情况。· 使用一个默认的重写策略执行测试场景(初始配置加目标),并根据指定的· 使用搜索确定所有执行是否满足预期。• L2. 分析水平检查· 用系统不变量的定义扩展测试模块,即,所有系统配置都应具备的特性。· 使用搜索(内置或专用),检查测试的不变量G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229245场景· 用系统应该满足的时间属性的定义(用Maude的LTL表示)扩展测试模块· 使用模型检查检查时态属性请注意,每个检查表级别都建立在前一个级别的基础上,因为在一个级别使用的模块被扩展以获得在下一个级别使用的模块。此外,用于定义场景和属性的模块可作为预期和检查内容的文档。此外,在开发MDS应用程序时,检查表程序应单独应用于每个组件以及组合系统。在组件的情况下,“目标”被替换为组件接口中的消息。此类消息的序列将由扮演被测组件环境角色的通用测试仪组件随着系统变得越来越复杂,有多个设备和多个并发目标,检查表过程也会相应地变得更加复杂,但它将建立在基本元素的基础上。有了更多的经验,我们希望像“定义目标”和“定义不变量”这样的步骤我们已将检查表应用于SCRover规范。每个漫游器系统组件都有一个测试模块,用于定义组件的初始状态,以及发送组件接口消息的测试执行。例如,状态变量测试模块如下所示。mod POSANDHEAD-STATE-VARIABLE-TEST是inc POSANDHEAD-STATE-VARIABLE。op PosAndHeadStateVar:-> PosAndHeadSVCid .op myphsv:-> Object。eqmyphsv = .恩德姆完整系统测试模块导入组件测试模块,并定义初始配置,以包含处于初始状态的六个组件还定义了约束请求消息的构造函数。mod系统是包括POSANDHEAD-STATE-VARIABLE-TEST。包括POSANDHEAD-控制器-测试。包括POSANDHEAD-ACTUATOR-TEST。incPOSANDHEAD-STATE-TEST. 包括POSANDHEAD-ESTIMATOR-TESTincROVER-TEST.246G. Denker,C.L.Talcott/Electronic Notes in Theoretical Computer Science 117(2005)229操作系统:->配置。eq sys = myphsv myphcv myphactuator myphsensor myphest rov. 操作mkm:Nat Nat Dir -> Msg.vars x y:Nat. var d:方向等式mkm(x,y,d)=msg(o(“MyPosAndHeadStateVar”),o(“MyPoster”),startConstraint((x yd)。操作:Nat Nat Dir ->配置。等式ic(x,y,d)= sysmkm(x,y,d)。恩德姆我们详细说明了图4所示的情景和预期结果(以最终状态的子配置表示)。预期成果1. ic(1,0,E)msg(o(“MyPoster”),o(“MyPosAndHeadStateVar”),constraintSuccess(1 0 E))2. ic(2,0,E)msg(o(“MyPoster”),o(“MyPosAndHeadStateVar”),constraintSuccess(2 0 E))3. ic(1,2,E)msg(o(“MyP
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功