法律状态公告日
法律状态信息
法律状态
2019-07-23
授权
授权
2017-02-08
实质审查的生效 IPC(主分类):G06F9/44 申请日:20160811
实质审查的生效
2017-01-11
公开
公开
技术领域
本发明公开了基于Prolog的AADL行为模型时间一致性验证方法,属于软件工程的技术领域。
背景技术
随着通信、微电子等技术的飞速发展,嵌入式实时系统广泛应用于汽车、航空航天等任务关键领域中,为了保证实时系统的安全性及可靠性,基于模型驱动架构(Modeldriven architecture,MDA)思想的体系结构分析与设计语言AADL被广泛的应用到实时系统的建模及验证中。实时系统的复杂性逐渐增加,随之AADL规范及附件内容也在不断的扩展,围绕其展开的模型验证工作也成为了热点。在系统开发的早期阶段,就对系统模型的时间一致性、安全性等方面进行验证,可以避免开发阶段时对模型进行反复的修改,大大提高开发的效率。基于逻辑程序语言Prolog,借助SWI-Prolog工具对实时系统行为模型的时间一致性进行前期的验证是一种可行的方法。
AADL行为模型是对AADL标准语言所构建模型的进一步精化,是以AADL的行为附件为基础、描述AADL标准组件内部详细行为的模型。国内的胡凯等人采用时间抽象自动机对实时系统进行建模分析,给出了AADL子集和TASM的抽象语法,并基于语义函数和类ML的元语言形式定义转换规则,并在此基础上对实时系统的隐式时间约束进行验证,但对于时间区间并没有做详细验证;倪水妹通过将带时间约束的MARTE转化为基于连续时间的ZIA,实现了在相对低的特征空间维度上有效的对带时间约束的实时系统的验证,并刻画出系统的节点状态信息及系统时间数据方面的属性。国外的Maciel P、Andrade E在实时系统建模阶段采用Petri网,其具有图形化描述、精确的语义和强大的表达能力,但Petri网具有很高的空间复杂度,若为了降低复杂度限制Petri网有界,则会降低其表达能力。现有技术中鲜有将实时系统的时间约束和状态信息统一表述在验证方法中,存在实时系统时间一致性验证不完整的缺陷。
发明内容
本发明的发明目的是针对上述背景技术的不足,提供了基于Prolog的AADL行为模型时间一致性验证方法,对实时系统的状态信息和隐式时间约束信息及显式时间约束进行了形式化描述,使用逻辑编程语言Prolog较为完整地验证了实时系统的一致性,解决了现有技术中对实时系统时间一致性的验证不够完整、实时系统模型的表达能力不佳的技术问题。
本发明为实现上述发明目的采用如下技术方案:
基于Prolog的AADL行为模型时间一致性验证方法,包括如下步骤:
A、建立包含隐式时间约束和显式时间约束的AADL行为模型,形式化描述AADL行为模型的隐式时间约束和显式时间约束;
B、将步骤A建立的AADL行为模型分解为仅包含活动节点的执行路径集合;
C、将步骤B中所述执行路径中活动节点及时间约束转换为Prolog事实;
D、借助步骤C所述Prolog事实将步骤A中形式化描述后的隐式时间约束和显式时间约束转换为Prolog规则;
E、结合步骤C所述Prolog事实及步骤D所述Prolog规则对实时系统的时间一致性进行验证。
作为所述基于Prolog的AADL行为模型时间一致性验证方法的进一步优化方案,步骤A所述包含隐式时间约束和显式时间约束的AADL行为模型为一多元组B,
作为所述基于Prolog的AADL行为模型时间一致性验证方法的再进一步优化方案,步骤A采用逻辑表达式:
其中,LB为控制流,ni、nk为AADL行为模型中的活动节点i、活动节点k,P为控制流LB走到活动节点i的前置条件,Q为控制流LB走到活动节点k的前置条件,
作为所述基于Prolog的AADL行为模型时间一致性验证方法的更进一步优化方案,步骤B采用如下方法将步骤A建立的AADL行为模型分解为仅包含活动节点的执行路径集合:
对于事件节点不做处理,
直接将活动节点添加至执行路径,
获取当前或元素节点后的各分支的活动节点集合,将各分支的活动节点集合分别添加至后继节点是当前或元素节点的路径中,
根据当前与元素节点相邻活动节点的最短开始时间、最长开始时间、最短结束时间、最长结束时间建立新的活动节点,将新建立的活动节点添加至后继节点为当前与元素节点的路径中。
进一步的,所述基于Prolog的AADL行为模型时间一致性验证方法中,步骤C的具体方法为:
将执行路径中活动节点以及活动节点本身持续时间的约束转换为Prolog事实:activity(Nj,Nnext,Smin,Smax,Emin,Emax,Sstatue),
将执行路径中不同活动节点之间的时间距离约束转换为Prolog事实:TimeCons(Nfor,Nend,MinTime,MaxTime),
其中,Nj为执行路径中的活动节点j,Nnext为活动节点j的后续节点,Smin、Smax、Emin、Emax为活动节点j的最短开始时间、最长开始时间、最短结束时间、最长结束时间,Sstatue为活动节点j的状态,Nfor为存在时间约束关系的两个活动节点中的头节点,Nend为存在时间约束关系的两个活动节点中的尾节点,MinTime、MaxTime为所述存在时间约束关系的两个活动节点之间时间距离约束的最小持续时间、最大持续时间。
再进一步的,所述基于Prolog的AADL行为模型时间一致性验证方法,步骤D借助步骤C所述Prolog事实将步骤A中形式化描述后的隐式时间约束转换为Prolog规则的方法为:采用borderlink函数和routelink函数判断AADL行为模型中任意两节点是否符合相邻两节点间的时序逻辑,
借助步骤C所述Prolog事实将步骤A中形式化描述后的显式时间约束转换为Prolog规则的方法为:采用minbordercons函数、maxbordercons函数、minroutecons函数和maxroutecons函数计算任意两相邻节点间的最短时间距离和最长时间距离。
本发明采用上述技术方案,具有以下有益效果:
(1)本申请提出了基于Prolog的AADL行为模型时间一致性验证方法,在AADL行为附件的基础上进行扩展以建立带有时间约束的AADL行为模型,AADL行为模型描述了节点状态信息、时间约束信息,节点状态信息能够定性描述实时系统的属性,时间约束能够定量描述实时系统的时间区间,为完整验证实时系统时间一致性奠定了基础,将AADL行为模型分解得到的执行路径转换为Prolog事实,将形式化描述的隐式时间约束以及显式时间约束转换为Prolog规则,利用Prolog规则刻画实时系统的一致性,即可实现实时系统时间一致性的完整验证,对隐式时间约束和显式时间约束进行分类的形式化描述,增强了AADL行为模型的表达能力,有助于提高实时系统时间一致性验证的准确率。
(2)限制在模型上的时间约束形式随着实时系统的扩充(隐式时间约束和显式时间约束)也会有所变化,通过Prolog语言描述时间约束则不需要改变事实部分,只需要针对变化后的时间约束对规则进行修改,即,可以在新的时间约束情况下,通过增加相应的规则来适应时间约束形式的变化,将已有的事实和既定的规则分离作为对外提供的事实库与规则引擎,并封装事实库与规则引擎内部的实现,在需要验证或扩展现时间约束时调用相应的接口,从而实现了与具体实例的分离,达到了通用性验证与可扩展性验证的效果。
附图说明
图1为将活动节点添加至执行路径规则的示意图。
图2为将或元素节点添加至执行路径规则的示意图。
图3为将与元素节点添加至执行路径规则的示意图。
图4为船舶控制系统中对空作战实时系统的示意图。
具体实施方式
下面结合附图对发明的技术方案进行详细说明。本文提出一种基于逻辑程序语言Prolog的实时系统时间一致性的验证方法,通过将模型与时间约束转换成Prolog语言中的事实,定义Prolog规则对系统进行时间一致性验证。
1.AADL行为模型及时间约束
AADL行为模型定义了各节点的详细动作,是以AADL的行为附件为基础,对AADL标准语言所构建模型的进一步细化。AADL的行为附件基于扩展自动机理论,通过6个可选块进行描述:
<state variables>声明类型表示符,这里的类型代表AADL行为模型的数据分类器。<initialization>代表状态变量的初始化。<states>声明了自动机的状态,也即构件内部行为状态的变化,状态被分为初始态(initial)、完成态(complete)、返回态(return)、紧急态(urgent)和复合态(composite)。<transition>定义了状态之间迁移过程的描述。构件内行为状态的迁移过程描述遵循以下的格式:
<state>-[<guard>?]→<state>[{<action>*}]
AADL行为附件通过定义使能条件<guard>和执行的动作<action>,从而描述状态迁移的过程包括具体的动作行为及约束条件;<connections>描述构件内部运行时数据、事件的传输路径;<composite_declaration>是对组合状态下子状态机的层次化及并发状态的阐述,主要为了支持更加复杂的行为描述。基于以上理论形式地给出如下定义:
定义1.带时间约束的AADL行为模型为一个多元组
1.N表示状态变量的集合,即代表模型中的各个节点;
2.Γ={Activity,Event,EXCL,INCL}表示节点类型,包括:活动节点、事件节点及两种入口元素(或元素和与元素);
3.τ:N→Γ是将节点标注成某一节点类型的函数;
4.Σ={initial,complete,return,urgent,composite},表示节点状态集合;
5.
6.
7.C是定义在该行为模型上的时间约束集合。
1.1隐式时间约束
实时系统的时间约束一般分为两种:显式时间约束和隐式时间约束,隐式时间约束是由于实时系统结构控制间的时序关系确定,显式时间约束根据实时系统的活动节点本身的持续时间或活动节点间的时间距离约束确定。
实时系统中状态的变迁是由实时系统的执行控制结构决定的,这种执行时的时序约束没有明确的定义,但在执行过程中必须要满足,因此我们称为隐式时间约束。为给出隐式时间约束的形式化表达,我们引入时序算子“@”,包含分别代表下一时刻(at the nextmoment)和未来某一时刻(some time in the future)的
定义2.隐式时间约束。在行为模型
其中,LB是控制流,代表当前系统的状态;P、Q是一阶逻辑公式,代表系统处于当前状态下为真的条件(本申请默认考虑为真的情况),P为控制流LB走到活动节点i的前置条件,Q为控制流LB走到活动节点k的前置条件;
1.2显式时间约束
实时系统的显式时间约束包括:
状态本身的持续时间约束:在实时系统中,状态节点从开始到结束往往需要一定的时间,为保证实时系统运行的正确性,需要为每个节点分配一定的时间,其中包含了该节点对应相应程序的装载、实例化、相关数据及运算等。节点本身持续时间约束的形式化表述如下:
定义3.在行为模型
例如,在图4所示船舶指控对空作战系统中,舰空弹准备(n1)的开始时间为一个区间段[0,1],结束时间是一个时间段[3,5],则需满足3≤E(n1)-S(n1)≤6。
状态间的时间距离约束:除了节点运行所需要的时间约束外,在实时系统中,各不同节点间往往也存在着时间距离约束,节点间的时间距离约束的形式化表述如下:
定义4.在行为模型
例如,在图4所示船舶指控对空作战系统中,从舰空弹目标解算(n5)到舰空弹发射(n10)之间需要在时间区间[65,75]内完成。以S(n5)表示状态节点n5的开始时刻,E(n10)表示状态节点n10的结束时刻,节点n5和n10间时间距离约束为[65,75],即n5和n10两活动节点之间应满足如下关系式:65≤E(n10)-S(n10)+E(n8)-S(n8)+E(n5)-S(n5)≤75。
2.基于Prolog的模型验证方法
采用Prolog对AADL的行为模型的性质进行验证,首先基于节点转换规则提出AADL行为模型分解算法,将模型转换为实时系统运行周期内的路径集合;将各个路径中的节点及路径中的时间约束转换成Prolog事实,提出一种从执行路径集合到Prolog事实的转换算法;最后根据实时系统的两种时间约束转换成的Prolog规则,对模型进行一致性验证。
因实时系统在实际中选择与并行(即AADL行为模型中的与或元素)结构的出现,对于实时系统在一个周期内中多条执行路径的情况,也相应的给出了解决方案。下面先介绍路径概念,定义如下:
定义5.在行为模型
2.1AADL行为模型的分解算法
AADL行为模型中的节点类型分为活动节点(Activity)、事件节点(Event)、与元素(EXCL)、或元素(INCL)。根据节点类型的不同,模型在经过此类节点时所采用的方式也应有所区别,除开始事件与结束事件外,活动节点应遵循图1所示规则,或元素节点应遵循图2所示规则,与元素节点应遵循图3所示规则。图1所示规则直接将活动节点添加至执行路径中;图2所示或元素中包含的两个活动节点N1、N2分别对应两条不同的执行路径;图3所示与元素要求模型在某一事件内同时执行活动节点N1与活动节点N2,可将两活动节点等价转换成一个活动节点加入到路径中。则新活动节点的开始时间S(n)取[a,b]和[e,f]的交集,结束时间E(n)取[c,d]和[g,h]的交集。
根据以上节点转换规则,给出AADL行为模型的分解算法。算法的输入为AADL行为模型B,输出为B的执行轨迹集合T={T0,T1,T2…Tn},算法如下:
算法的输入为AADL行为模型
2.2AADL行为模型到Prolog转换
AADL行为模型到Prolog转换的思路是将AADL模型分解得到的执行路径集合T及每条执行路径中的约束集合转换为Prolog语言中的事实,实现用Prolog语言来对该AADL行为模型的描述。
算法的输入为AADL行为模型分解后得到的执行路径集合。用Facts(B)表示转换成Prolog事实的集合。具体算法如下:
算法分为两步骤,首先将执行路径中的各个活动节点及活动节点本身的时间约束转换成Prolog事实;其次将AADL行为模型的不同活动节点间的时间距离约束转换成Prolog事实。
算法遍历T集合中个各个执行路径,将其中的活动节点及节点本身的时间约束转换成Prolog事实,函数GetStatue(N)用来获取活动节点当前所处的状态{initial,complete,return,urgent,composite};函数FindNextActivity(N)获取N的下一个活动节点;用activity(Nj,Nnext,Smin,Smax,Emin,Emax,Sstatue)来对活动节点进行描述,其中,Nj表示该节点的序号,Nnext表示该节点的后续节点,Smin表示该节点最短开始时间,Smax表示该节点最长开始时间,Emin表示该节点最短结束时间,Emax表示该节点最长结束时间,Sstatue表示该节点当前状态;活动节点间的时间约束用TimeCons(Nfor,Nend,MinTime,MaxTime)表示,其中,Nfor、Nend表示存在时间约束关系的两节点中的头节点、尾节点,MinTtime、MaxTime表示两活动节点间的时间距离约束的最下持续时间、最大持续时间。
以图4为例,状态节点n1转换成Prolog事实:activity(1,3,0,1,3,5,complete);状态节点n11转换成Prolog事实:activity(11,-1,0,1,1,3),这里用-1代表状态节点n11作为非Event节点的最后一个节点;n0到n12的时间距离约束转换成Prolog事实TimeCons(1,11,0,92)。以此类推,可将AADL行为模型转换成Prolog中的Facts(B)集合。
2.3Prolog验证规则
通过前面算法转换将AADL行为模型转换为Prolog事实。对于规则部分根据实时系统的隐式时间约束与显式时间约束,并给予Prolog事实将它们转换为Prolog规则。定义Prolog规则对其一致性进行验证,提出使用Prolog来描述模型中时序限制的转换规则。
●规则1
通过使用borderlink函数以及routelink函数对AADL行为模型中的状态节点进行时序限制方面的判定。Behavior事实中给定了相邻两个状态节点间的时序逻辑,borderlink(A,B)则判断给定的两个状态节点A和B是否满足这种邻接的时序关系(其中A和B代表两状态节点的编序,后文中的C和D也是一样,Z代表临时变量);routelink(C,D)函数通过递归的思想将这种邻接的时序关系延长,从而判断出给定的状态节点C和D是否有着时序关系。
borderlink(A,B):-
not(A=B),
activity(A,B,_,_,_,_,_).
routelink(C,D):-
not(C=D),
activity(C,D,_,_,_,_,_).
routelink(C,D):-
activity(C,Z,_,_,_,_,_).
routelink(Z,D).
●规则2
使用minbordercons(A,B,T)来计算在给定的相邻的状态节点A和B之间(包括状态节点A与B)所需要花费的最短时间,并将计算后的结果赋值给T;minroutecons(A,B,T)函数则通过递归的思想完成不相邻状态节点之间最短时间距离的计算,为计算显式时间约束提供了保障。Prolog程序如下:
minbordercons(A,B,T):-not(A=B),
activity(A,B,S1,_,E1,_,_),
activity(B,_,S2,_,E2,_,_),
T is S1+E1+S2+E2.
minroutecons(A,B,T):-
not(A=B),activity(A,B,S1,_,E1,_,_),
activity(B,_,S2,_,E2,_,_),
T is S1+E1+S2+E2.
minroutecons(A,B,T):-
activity(A,Z,S1,_,E1,_,_),
minroutecons(Z,B,T1),
T is S1+E1+T1.
●规则3
使用maxbordercons(A,B,T)来计算在给定的相邻的状态节点A和B之间(包括状态节点A与B)所需要花费的最长时间,并将计算后的结果赋值给T;maxroutecons(A,B,T)函数则通过递归的思想完成不相邻状态节点之间最长时间距离的计算,为计算显式时间约束提供了保障。Prolog程序如下:
maxbordercons(A,B,T):-
not(A=B),activity(A,B,_,S1,_,E1,_),
activity(B,_,_,S2,_,E2,_),
T is S1+E1+S2+E2.
maxroutecons(A,B,T):-
not(A=B),activity(A,B,_,S1,_,E1,_),
activity(B,_,_,S2,_,E2,_),
T is S1+E1+S2+E2.
maxroutecons(A,B,T):-
activity(A,Z,_,S1,_,E1,_),
maxroutecons(Z,B,T1),
T is S1+E1+T1.
前面提到的实时系统的时间约束(隐式时间约束和显式时间约束),在Prolog中做以下的说明:
●隐式时间约束
针对任务关键的实时系统,各个任务的执行应该严格地满足一定的先后关系。结合隐式时间约束的形式化表述:
除了任务间的时序关系,系统对于任务本身及任务之间有着一定的时间约束。结合显式时间约束的形式化表述,针对状态本身的持续时间约束:MinT1=(a+c)≤E(n)-S(n)≤MaxT1=(b+d),通过Facts(B)中状态节点找到对应节点的MinT以及MaxT;针对状态间的时间距离约束:MinT2≤E(ni)-S(ni)+E(ni+j)-S(ni+j)+……+E(nk)-S(nk)≤MaxT2,使用规则2中的minroutecons(A,B,T)函数和规则3中的maxroutecons(A,B,T)函数进行显式时间约束的验证。验证代码如下:
3.实例验证与分析
本章节将以船舶自控系统中的对空作战子系统为例,介绍基于Prolog并采用AADL行为模型描述原模型的验证方法。
3.1实例验证
本文对AADL行为模型进行验证分析其时间一致性。船舶指控系统中拥有大量的子系统,系统中存在大量的行为流程,这类的行为流程对实时性都有较高的要求,如;状态活动的开始时间、执行时间以及网络时延等达到秒级甚至毫秒级,所以对于此类实时系统,保证其实时性有至关重要的意义。
利用实时系统描述语言描述如图4所示船舶指控系统中一个典型的实时子系统--对空作战的实时系统,节点含义如表1所示。
表1节点含义
从图4中可知,该对空作战模型中含有7个分别带有各自时间约束的状态节点,根据2.1提出的模型分解算法分解后得到该模型的执行路径集合T的表达式为:{(n1,n3,n5,n8,n10,n11),(n1,n3,n6,n8,n10,n11)}。执行路径集合作为输入应用到2.2中的模型转换算法中可以得表2中Prolog事实:
表2活动节点的Prolog事实
对于对空作战模型中n5-n10的时间约束,以及整个系统开始到结束的时间控制[0,92],根据2.2算法计算单条路径中的时间约束TimeCons,转换后得到表3中的Prolog事实:
表3时间约束的Prolog事实
将上述Prolog事实与2.3节中的验证规则作为输入运行在SWI-Prolog中可得到表4、表5的结果。
表4隐式时间约束实验结果
表5显式时间约束实验结果
从表4的实验结果可以看出,当行为执行过程不满足实时系统控制结构的内在要求时,系统必定出错,舰空弹目标解算(n5)必须在舰空弹发射(n10)前完成。从表5的实验结果可以看出虽然对空作战系统在整个行为执行的过程中能满足[0,92]的实时性能指标,但是在其子过程中,即舰空弹目标解算到舰空弹发射(n5-n10)的时间约束超出既定的时间约束maxroutecons(E(n10)-S(n10)+E(n8)-S(n8)+E(n5)-S(n5))>75。通过实验结果分析我们可以轻松地发现实时系统中存在的安全隐患。例如,上述舰空弹目标解算到舰空弹发射(n5-n10)的最大执行时间超出既定的时间约束(b10)-S(b5)>75,这就导致了在某些极端的情况下,实时系统在某一阶段未通过既定的时间约束,从而导致实时系统的崩溃。为解决实时系统时间一致性问题,针对现有实时系统时间一致性验证的不足,本文提出了扩展的AADL行为附件与实时系统隐式时间一致性和显式时间一致性的验证方法,对隐式时间和显式时间一致性进行了分类描述,并使用逻辑编程语言Prolog进行验证,设计了AADL行为模型的分解算法及分解后的路径集合到Prolog的转换算法,并对实时系统的时间一致性进行了形式化描述。本文方法和其他类似建模验证方法在验证方面的比较如下。
表6与现有方法对比
从上表可以看出,针对现有的方法去验证实时系统的时间约束及描述实时系统的状态信息时,现有的方法很少能将其统一的表述在同种方法中进行验证。
Prolog语言通过事实对AADL行为模型的行为节点及时间约束进行描述,利用规则刻画实时系统的一致性。随着实时系统的扩充限制在模型上的时间约束形式(隐式时间约束和显式时间约束)也会有所变化,通过Prolog语言则不需要改变事实部分,只需要针对变化后的时间约束对规则进行修改。即在新的时间约束情况下可以通过增加相应的规则来实现,将已有的事实和既定的规则分离作为我们对外提供的事实库与规则引擎并封装其内部的实现,在需要验证或扩展现有的时间约束时调用相应的接口,从而实现了与具体实例分离达到了通用性验证与可扩展性验证的效果。
机译: 通过行为模型聚类以及基于行为模型聚类的偏好编程进行定向广告的系统,方法和软件应用
机译: 通过行为模型聚类进行定向广告的系统,方法和软件,以及基于行为模型聚类的偏好编程
机译: 通过行为模型聚类以及基于行为模型聚类的偏好编程进行定向广告的系统,方法和软件应用