基于执行片段的嵌入式软件时序特性检测方法分析
2019-04-23王传俊
王传俊
(烟台汽车工程职业学院 机电工程系, 烟台 265500)
0 引言
当前,各种软硬件系统越来越庞大和先进,但是系统的异常还是时不时地在发生。虽然计算硬件和软件的快速发展已经极大提高了应用程序的可靠性,但是在大型集群中仍然存在大量的软件错误和硬件故障。很多外在、内在的因素导致了异常的出现,如流量的突涨、系统一个组件的失效、一次运维误操作、一个代码上线的引发的未知漏洞等等。时序特性的使用就是可能会给系统造成一定的破坏,特别是对实际应用领域要求较高[1]。
1 国内外研究现状
国外研究中,传统的时序测试需要控制软件才能进行检测,其核心是用例测试,一般是在规定的场景下运行,利用目标软件建立环境数据预置、激励设置,根据预期设计进行运作,之后观察采集的结果,检查是否与要求相符合。随着人们对嵌入式软件的复杂程度和规模进行完善,传统的时序测试方法也开始面临各种问题[2]。
接口自动机(IA)就是一种构建轻量级的接口模型。AI模型可以实现利用状态机接口行为描述构件的交互和通信内容,从而记录其外部系统的行为,也能隐藏内的构件结构,它是将嵌入式软件进行组合建模工具。
扩展语义的接口自动机(ESIA)是让IA变量执行约束而完成扩展,同时支持反应式的软件嵌入式特性行为建模。ESIA模型需要引入输入、计算内部变量、输出相关行为、约束参数条件、后置/前置条件,并描述软件运行中的数据。
在ESIA模型上进行设计,是建立在符合上实现测试,从而生成算法,在检测有效的数据序列或是事件,从而生成例子的测试或是场景的测试[3]。
本次研究是国内有学者提出,建立完整和精确的建模是更好的描述目标系统的时序特性,同时也是检测时序缺陷的基础。近几年提出很多关于描述时序特性的模型,比如:描述时序逻辑、时间自动机、建模统一语言、时间Petri网和马尔科夫链等这些都是具有精确嵌入式时序特性的。
嵌入式软件时序特性检测方法是在交付运转目标执行系统运行中运转,它可以不间断的收集执行任务的片段,积累更多程序运行场景,对各种目标软件的异常和正常进行进行充分检测,主要内容包括:时间约束、时序特性和建模分析、时序特性检测方法和算法[4]。
2 嵌入式系统时序特性
2.1 示例
本文将会根据门禁控制系统,分析嵌入式系统的时序特性。门禁控制软件属于比较典型的嵌入式系统,在特定条件触发事件,可以根据特定时序来打开或是关闭门禁。门禁控制软件是在接收到相关人员的接近或是离开指令,根据时序来设置打开的或是关闭的门禁,并将其当前的状态上报给控制中心。其中:(1) 在系统软件初始化完成后,会进入1等待状态;(2) 在发现人员离开之后,会进到状态4,这时自动门关闭,进入等待状态1;(3) 如果发现抵近人员后,会进到状态2,准备自动打开门;(4) 在门打开后,会进入到打开状态3;(5) 如果门禁系统状态是0表示电是初始状态;(6) 在处于状态3时,门禁软件会给监控中心上传状态信息,同时进入报告状态5,指导检查人员退出上报过程[5]。
门禁控制软件中建立了一列的时间约束条件:
DC-TR1:门禁控制系统通电后5s进行初始化;
DC-TR2:检查人员到达后,自动门会在区间[3 s,7 s]范围内打开;
DC-TR3:发现人员离开之后,在区间[3 s,5 s]门自动关闭;
DC-TR4:人员到达后,在时间区间[3 s,5 s]内检查人员是否离开;
DC-TR5:在打开自动门后,其会在30 s内关闭,打开时间不超过30 s;
DC-TR6:在自动处于状态3时,门禁软件会15 s给自动监控中心上报一下门打开的状态。
2.2 时间约束分析
在嵌入式系统中,使用时间约束为了实现在时间限制内完成任务,比如:任务的结束、开始和持续的时间等。在满足条件下就可以执行任务,该程序设计就是具有预期时序特性。Dasarathy曾经将时间约束分成最大值和最小值约束,还有持续约束。其中最大值与最小值是描述事件之间间隔的最大和最下时间,而持续页数就是一件事从发生到结束的时间段[6]。
关于ESIA模型中置零行为、时间变量、时间约束等程序扩展情况如下:
一般情况下,嵌入式系统具有处理异常的机制,就是处于各种异常的时序。在SEIA模型设计中,需要标记异常时序状态,同时需要区别正常的状态,假设ESIA模型中有一个P,其异常状态的表示是v.Etag,v∈VP,zaiEtag的值是1时,说明v是异常的状态;如果值是0时,说明是正常的状态。另外,行为action出现异常情况时会执行actionE这个分支,在actionE设置下,软件会迁移到异常的时序状态下,完成处理异常任务。在ESIA模型中,action和action_E有一样的触发事件,但是应对命令迁移的目标状态是不一样的。action_E后置条件和前置条件是约束action前置和后置条件的变量,还有约束取反(符号:),action的行为前后置条件是Cstr(τ2)、Cstr(τ1),而Cstr(τ1)、Cstr(τ2)表示异常时序actionE前后置分支条件[7]。
对于建立在时间约束上的门禁软件控制ESIA模型,说先定义几个不同时器的时间变量τ1、τ2和τ0,计时需要从零开始,将时间约束当做点结束,将每个时间变量作为记录规定条件下的迁移序列时间。在检查到人员到达后,需要将τ0、τ1值归零;τ1,并将门禁迁移的时间序列情况详细记录下,从State2→State3执行的任务需要的时间,这时τ2会将执行State2→State3→State4消耗的时间进行记录;如果发现人员离开后,需要将τ1归零,同时记录序列State4→State1迁移的时间进行记录[8]。门禁时间约束软件控制定义如下。
DC-TR1:系统上电之后归零τ0,相关定义是P_Cstr(τ0)=5 s(τ0=5 s)作为initialization的行为后置条件。
DC-TR2:在检查到人员到达后置τ1时间状态2时,定义D_Cstr(τ1)=[3 s,7 s]作为open行为的后置条件。
DC-TR3:在人员立候之后置零τ1处于状态4,这时定义D_Cstr(τ1)=[3 s,7 s]作为close的行为后置条件;
DC-TR4:在检查人员达到事件后τ2处于状态2,定义是D_Cstr(τ2)=[3 s,30 s]作为leave?的后置条件。
DC-TR5:在打开自动门后τ2处于状态3,定义是是D_Cstr(τ0)=[3 s,30 s]行为是close后置的条件。
DC-TR6:在打开自动处于τ0状态3是,定义是C_Cstr(τ0)=15(Mod(τ0,15)=0)行为是report!前置的条件。
3 基于相关性检测时序缺陷
检测时序缺陷时,需要根据软件ESIA模型对执行路径相关的约束时间进行分析,首先提取的有时间信息片段的自动检测,需要对软件系统异常情况进行检查,之后需要检查软件的异常处理功能设计是否。这里将执行时间信息的片段设置为一个执行序列,主要是描述任务的执行序列。
定义2:包括执行时间信息片段。将Trace作为包含时间的执行信息片段作为一个执行序列:
(1) Trace={λj|j=1,2,…,n},λj是执行的第j行的程序;
(2) ∀λj是六元组,λj=(e,τi1=v,reset(τj2),a,τj2=v,reset(τj4));其中λj.e表示执行事件的触发行为,λj.a表示对应行为;τj1、τj2、τj3、τj4∈X是时间变量的4个项,τj1是从λj.a开始进行计时,计时的时间v;τj2是执行λj.a行为之后进行计时,时间是v;τj3是完成置零同时启动行为后λj.a进行计时;τj4是在结束λj.a行为置零并进行计时。
在利用TBTDD方法时,需要规范和完整执行片段,这样方便执行之后的检测和解析程序。在执行提取片段的过程中,如果不存λj某项信息,表示有元素空缺。如果在完成包含时间信息的片段,不需要描述和它相关的执行任务时间、时间关联变量、置零行为。利用TBTDD方法不仅可以检测正常的时序,同时可以对异常软件进行检测和处理,这样可以避免出现非预期性的事件和结果。正常的时序片段:在执行一个片段时包括执行相应的分支和正常的时序;异常时序的片段是处于异常和对应的分支。
4 实验
本文设计的ATES原型平台系统,是利用TBTDD序检测方法,来支持离线自动的检测,以及嵌入式时序特性软件的建模,从而实现检测和管理各类故障。
ATES平台具有一下几种功能:
(1) 建立在可接受性的准则完成片段匹配性;
(2) 根据实施片段集完成计划检测,同时报告并管理时序故障;
(3) 建立在ESIA模型中的嵌入式软件时序特性程序建模;
(4) 检测软件运行中出现的片段异常,并验证异常时序,标识并检测到软件时序存在的缺陷;
(5) 根据执行的片段建立片段集制定的检测制度,报告并处理时序故障。
5 总结
在实验中,通过ATES平台提供的资源,同时有人工编写的检测软件代码ESIA模型,描述该时序的定向特性;在ATES平台上,根据模型ESIA,使用内奸的TBTDD方法,对提取的执行片段进行时序检测。在实际测试中,需要在ATES平台上,有测试人员建立灵活的计划,从而调用平台上的功能,实现动态的检测。