一种基于aadl模态时间自动机模型的嵌入式软件测试方法

文档序号:6340283阅读:202来源:国知局
专利名称:一种基于aadl模态时间自动机模型的嵌入式软件测试方法
技术领域
本发明涉及一种基于AADL模态时间自动机模型的嵌入式软件测试方法,涉及嵌 入式系统软件测试方法。
背景技术
随着嵌入式软件规模的增长,软件开发过程中的各种难题凸显出来,传统的软件 开发流程如V模型、W模型已经很难适应当今大规模软件开发的需求。为此,业界提出了模 型驱动架构方法(Model Driven Architecture, MDA),基于该方法构造出来的特定平台的 系统模型可以自动化的转换成代码。因此,系统模型成为软件开发过程的关键,如何评估模 型的质量自然成为模型驱动架构软件开发的关键。传统的基于代码的软件评估已经不能满 足大规模软件的评估需求。基于模型的软件评估正成为一种趋势。在软件模型设计出来以 后,对模型的各种功能属性和非功能属性进行评估,能在软件开发的最初阶段发现架构设 计中存在的缺陷,及时的修改模型,从而极大地缩短了软件开发的周期和成本。针对MDA的发展趋势,美国自动化工程师协会(Society of Automotive Engineers, SAE)发布了航空标准AS5506-—架构分析与设计语言(Architecture Analysis and Design Language, AADL),AADL是一种建模语言,它很好地支持了架构模型 的设计和复杂实时嵌入式系统的描述。AADL通过构件及构件间的交互对嵌入式系统架构模 型进行描述和分析。AADL不关心构件的内部实现,而更注重从软件构件的非功能属性(如 安全性、可靠性、实时性等)以及构件间交互去描述一个系统架构。因此,可以通过对AADL 模型的分析找出系统设计出现的缺陷,保证嵌入式软件在开发早期发现问题,及时在架构 级别对系统进行重构,保证嵌入式系统的可靠性并缩短开发周期和节约开发成本。AADL对系统操作模态进行了规范,嵌入式系统的执行过程由一系列操作模态组 成,每种操作模态下包含多个软件构件或硬件构件以及构件间的交互,当前模态决定被认 为是活动的线程集合和可行的传输数据和控制的关联。多模态系统是指包含多种操作模态 的应用系统,如巡航控制系统包括初始化模态、正常模态、备份模态以及故障模态等,每一 种模态下包含特定功能的系统。系统运行过程中,当检测到某个特定的事件(由外部环境 的改变或者控制系统内部的改变引起)时,系统根据模态转换协议初始化一个模态转换, 使系统在规定时间内从当前操作模态转换到一个新的操作模态。模态转换导致一些现有任 务被删除,一些新的任务被增加以执行新模态相关的一些功能,也有一些任务保持不变。在 实时环境中,操作模态转换需要考虑实时性和正确性。实时性指从一个模态转换请求到达 到进入一个新模态之间的最大延迟需满足实时嵌入式系统的时间约束。正确性指系统对模 态相关的事件的响应符合规格说明。为了描述多模态构件的分层组合,AADL标准定义了系统操作模态(System Operation Mode, S0M)的概念。一个SOM定义为一个模态容器,容器里的每一个元素都跟 一个构件关联。如果一个构件是活动的(active),它关联的元素赋值为该构件的当前模态。如果一个构件是非活动的(inactive),它关联的元素值为inactive。一个系统有且只有一 个初始S0M。在这个初始SOM中,根构件处于它的初始模态,在根构件处于初始模态时所有 那些处于活动状态的构件也处于它们的初始模态,其它构件处于非活动状态。当系统中一 个模态转换请求到达时,使能一个SOM转换,通过改变容器内涉及该模态转换的元素的值 使系统从旧的SOM转换到新的S0M。在模态转换过程中,新的模态转换请求将会被忽略,直 到模态转换完成,系统进入一个新模态后才开始响应新的模态转换请求。在嵌入式软件开发的过程中,软件测试扮演着重要的角色,伴随着软件开发的始 末,以保证嵌入式软件的功能性和非功能性需求。由于AADL是基于构件的嵌入式系统设计 语言,对应基于构件的软件测试模型有马尔科夫链模型、UML模型、状态图模型等。但是这 些模型对于基于AADL模型测试的支持较少,同时这些模型在描述系统的时间属性方面比 较欠缺,不能满足嵌入式实时系统的测试需求。嵌入式实时系统的实时性和正确性是系统 设计首先需要考虑的问题,如果一个嵌入式实时系统的执行不能满足响应实时性和操作正 确性,将会导致灾难性的后果。因此,对基于构件的嵌入式实时系统模型的分析和验证成 为至关重要的问题,为保证系统模型满足设计需求(实时性和正确性),需要提出新的基于 AADL模型的测试方法。

发明内容
要解决的技术问题为了避免现有技术的不足之处,本发明提出一种基于AADL模态时间自动机模型 的嵌入式软件测试方法,对AADL模型进行测试,保证AADL模型满足设计需求。本发明的思想在于根据AADL架构模型文件,生成带有模态信息的AADL系统构件 树,通过广度优先遍历构件树,构造AADL模型的时间自动机模型。利用现有的时间自动机 的验证工具,对AADL模型模态转换的正确性及时间属性进行验证。技术方案一种基于AADL模态时间自动机模型的嵌入式软件测试方法,其特征在于步骤如 下步骤1 构建AADL架构模型描述文件的构件树,以系统构件作为树的根节点,下一 层为子系统构件,依次向下为进程构件、线程构件;以构件的名称作为构件树中的每个节点 的标识,每个节点包含该构件的模态信息;所述的模态信息包括模态名称、引起模态转移的 事件、模态转移的目标模态和系统的初始模态;步骤2 对步骤1得到的构件树进行广度优先遍历,提取每个节点的当前模态,并 存储至时间自动机六元组< Σ,S,S0, C,I,Ε>的S集合中,提取到的系统初始模态信息存 储在&集合中。其中S是一个有限的状态集合,S = (SOM1, SOM2,…,SOMJ为模态的状 态空间,SOMi为任一模态是一个起始状态集合;Σ = Iep1, ep2,…,epk}是一个有限事 件集合,ePk是集合中某事件;C是一个有限时钟集合;I是一个映射,它为S中的每一个状 态SOMi指定Φ (C)中的某一个时钟约束;E是一个转移集合,E = Ie1, e2,…,ek},力表示 每条转移工[8><2><0)((^)><2°><8,每条转移(8, 1,δ , λ ,s')表示输入字符a时,从位置 s到s'的一个转移,S是定义在时钟集C上的一个时钟约束,在位置转移发生时必须被满 足,λ表示发生位置转移时被重置的所有时钟变量的集合,且满足;L ^ C;
步骤3 根据步骤2得到的模态的状态集合S,将S中父节点的模态向量与它的孩 子节点的模态向量作笛卡尔乘积,将得到的模态向量继续添加到S中,构造完成时间自动 机< Σ,S,S0, C,I,Ε>的状态集合S ;步骤4 根据步骤1得到的构件树,再一次对构件树进行广度优先遍历,提取每个 节点中引起模态转移的事件,以向量ePk(k彡1)表示,并存储至< Σ,3,&,C,I,E>中的Σ 中,Σ = Iep1,印2, ,印11},构造完成时间自动机<[,3,;(,14>的事件集合[;步骤5 根据步骤3和步骤4得到的状态集合S和事件集合Σ,按照如下的方法构 造时间自动机中的转移集合E 广度优先遍历步骤1得到的构件树,提取事件集合中每个事件ePi(l < i < k)的 源模态集合Mis= {S0Msi,…,S0Msj}和目标模态集合Mit = {S0Mti,…,S0Mtj},得到表示在 事件集合印iM发下,模态从Mis转移到模态Mit的每条转移ei =⑶化,印^-^,厘一,转移 集合为E= Ie1^2,…,ek}其中对Σ中的每个印i其转移函数为ei = (Mis,ePi,_,_,Mit), MlseS,MlteS;步骤6 为步骤5得到的转移集合E增加表示模态转移的时钟约束Cl,C = {cj ; 所述的C1包括模态转移发生时离开源模态的时间C11和到达目标模态的时间C12,将C1作为 每条转移函数的时钟约束,得到转移函数ej = (Mis, ePi, C1, {cj,Mit),所述C1获取步骤如 下步骤a 当源模态下线程间的同步属性Synchronized_Component为true,C11 = IT1中线程周期的最小公倍数},否则C11 = O ;步骤b 当目标模态下线程间的同步属性Synchronized_Component为true,C12 = IT2中线程周期的最小公倍数},否则C12 = 0 ;步骤c 得到转移时间记为C1 = cn+c12 ;步骤7 重复步骤6,直到E中的所有模态转移中都增加了时钟约束,E = Ie1, e2,…,%},得到各个元素都构造完成的时间自动机< Σ,S,Stl,C,I,E>, AADL模型到时间 自动机模型转换完毕;步骤8 根据步骤7得到的时间自动机模型,使用时间自动机模型的实时系统验证 工具UPPAAL验证AADL模型的模态转移是否满足实时性和可达性。有益效果本发明提出的一种基于AADL模态时间自动机模型的嵌入式软件测试方法,能够 在嵌入式软件设计早期阶段对模型实施测试,尽早发现软件模型的正确性和实时性是否满 足设计需求,及时修订设计方案,从而缩短了嵌入式实时系统开发的周期并节约了开发成 本。


图1为本发明方法流程图;图2为实施实例中AADL模型构件树;图3为系统模态迁移图;图4为UPPAAL自动机验证工具;
具体实施例方式现结合实施例、附图对本发明作进一步描述该实例描述了控制系统,系统由两个进程构件构成,每个进程构件下包含三个线 程构件,每个线程都是周期线程。系统包括5种模态081、082、01、02、03、04。系统初始化 后进入模态osl,模态osl下包含两种模态01和02。当线程tl和t2的事件端口 tls. el 和t2s. e2接收事件后,触发线程模态从01切换到模态02。在线程t3的数据端口 t3s. e3 接收到事件后,线程模态由02切换到01。系统模态os2下包含两个模态03和04,进程pi 在事件端口 pis. eventl接收到事件后触发系统模态从osl转换到模态os2,在模态os2下, 线程t4和t5的端口 t4s. e4, t5s. e5接收到事件时,从03模态切换到04模态,线程t6的 端口 t6s. e6在接收到事件后从04模态切换到模态03。下面为该系统的AADL架构模型代
码thread tlfeaturesel:out event port ;propertiesDispatch_Protocol = > Periodic ;Period => 50ms ;end tl ;thread implementation tl. impend tl. imp ;thread t2featurese2:out event port ;propertiesDispatch_Protocol = > Periodic ;Period => 50ms ;end t2 ;thread implementation t2. impend t2. imp ;thread t3featurese3: out event port ;propertiesDispatch_Protocol = > Periodic ;Period => 50ms ;end t3 ;thread implementation t3. impend t3. imp ;thread t4
e4out event port ;propertiesDispatch一Protocol = > PeriodicPeriod => 50ms ;end t4 ;thread implementation t4. impend t4. imp ;thread t5featurese5: out event port ;propertiesDispatch一Protocol = > PeriodicPeriod => 50ms ;end t5 ;thread implementation t5. impend t5. imp ;thread t6featurese6: out event port ;propertiesDispatch一Protocol = > PeriodicPeriod => 50ms ;end t6 ;thread implementation t6. impend t6. imp ;process pifeaturesevent2: in event port ;end pi ;process implementation pi. impsubcomponentstls:thread tl in modes(01)t2s:thread t2 in modes(01)t3s:thread t3 in modes(02)modes01: initial mode ;02: mode ;M12:01-[tls. el, t2s. e2]_ > 020099]M21:02_[t3s. e3]_ > 01 ;
0100]end pi. imp ;
0101]process p2
0102]features
0103]event2: out event port ;
0104]end p2 ;
0105]process implementation p2. imp
0106]subcomponents
0107]t4s:thread t4 in modes(03)
0108]t5s:thread t5 in modes(03)
0109]t6s:thread t6 in modes(04)
0110]modes
0111]03: initial mode ;
0112]04: mode ;
0113]M34:03-[t4s. e4, t5s. e5]_ > 04 ;
0114]M43:04-[t6s. e6]- > 03 ;
0115]end p2. imp ;
0116]system si
0117]end si ;
0118]system implementation si. imp
0119]subcomponents
0120]pls:process pi in modes(osl);
0121]p2s:process p2 in modes(os2);
0122]modes
0123]osl: initial mode ;
0124]os2:mode ;
0125]osl2:osl-[pls. eventl]- > os2 ;
0126]os21:os2-[p2s. event2]- > osl ;
0127]end si. imp ;
0128]根据步骤1构件AADL架构模型描述文件的构件树,以系统构件作为树的根节点, 下一层为子系统构件,依次向下为进程构件、线程构件。每个构件包含该节点的模态信息。 如图2所示;根据步骤2对步骤1得到的构件树进行广度优先遍历,提取每个节点的当前模态 存储至时间自动机的S集合中,由于根节点是系统构件,则它的模态向量初始化为空。得到 相应的模态向量为 SOM1 = {osl},SOM2 = {os2},SOM3 = {01},SOM4 = {01},SOM5 = {02}, SOM6 = {03},SOM7 = {03},SOM8 = {04}得到 S = (SOM1, SOM2,…,SOM8I ;提取系统的初始 模态信息存储在&集合中=S0 = {osl};根据步骤3由步骤2得到的模态状态集合S,将S中父节点的模态向量与它的孩子 节点的模态向量作笛卡尔乘积,将得到的模态向量继续添加到S中=SOM9 = {osl,01},SOM10={osl,01},SOM11 = {osl,02},SOM12 = {os2,03},SOM13 = {os2,03},SOM14 = {os2,04}。 则 S 集合S = (SOM1, SOM2,…,SOM14I ;根据步骤4由步骤1得到的构件树,再一次对构件树进行广度优先遍历,提取每个 节点中引起模态转移的事件,用向量印k(k彡1)表示^p1= {pis. eventl}, ep2 = {p2s. event2},ep3 = {tls. el, t2s. e2},ep4 = {t3s. e3},ep5 = {t4s. e4, t5s. e5},ep6 = {t6s. e6},并存储至< Σ,S,S。,C,I,E>中的Σ中,得到Σ = Iep1,印2,…,印J ;根据步骤5根据步骤3和步骤4得到的状态集合S和事件集合Σ,按照如下的方 法构造时间自动机中的转移集合E Σ = {(pis. eventl), (p2s. event2), (tls. el, t2s. e2), (t3s. e3), (t4s. e4, t5s. e5), (t6s. e6)},根据得到的事件集合,对于集合中的每个元素找出模态转换的源模态向量和目标 模态向量。对于事件集合中的元素ePl,由于是引起系统级的模态转换事件,对应的源 模态向量为SOM1,目标模态向量为S0M2。于是得到一个转移ei = (SOM1, ePl, _,_,SOM2)。 (“_”为转移函数中还未被定义的元素)对事件元素印2,对应的源模态向量为S0M2,目标模态向量为SOM1,则转移为% = (SOM2, ep2, _,_,SOM1),依次构造的转移函数为e3 = ((SOM3, SOM4I,印3,_,_,SOM5);e4 = (SOM5,印4,_,_,(SOM3, SOM4I);e5 = ((SOM12, SOM13I,印5,_,_,SOM14);e6 = (SOM14,印6,_,_,(SOM12, SOM13I);根据步骤6为时间自动机增加时间约束的要求,由于线程tl,t2,t3,t4,t5,t6全 为周期线程且周期都为50ms,并且tl,t2处于同一个模态和t4,t5处于同一个模态。根据 AADL规范,线程tl,t2由模态01转移到模态02的转移时间为tl,t2周期的最小公倍数 50ms,线程t4,t5由模态03转移到模态04的转移时间为50ms,其它情况为0ms。所以C1 = 0ms, c2 = 0ms, c3 = 50ms, c4 = 50ms, c5 = 50ms, c6 = 50ms ;根据步骤7重复步骤6,直到E中的所有模态转移中都增加了时钟约束时间θι = (SOM1,印1; C1, {cj,SOM2);e2 = (SOM2,印2,c2, {c2},SOM1);e3 = ({S0M3, SOM4I,印3,c3, {c3},SOM5);e4 = (SOM5, ep4, C4, {c4},(SOM3, SOM4I);e5 = ((SOM12, SOM13I,印5,c5, {cj,SOM14);e6 = (SOM14,印6,c6, {c6},(SOM12, S0M13})。最后,E={ei,i52,…,e6}。自动机< E,S,S。,C,I,E>各个元素都构造完成,AADL 模型到时间自动机模型转换完毕;步骤8 根据步骤7得到的时间自动机模型,使用时间自动机模型的实时系统验证 工具UPPAAL验证AADL模型模态转移满足实时性和可达性,如图4所示。
权利要求
1. 一种基于AADL模态时间自动机模型的嵌入式软件测试方法,其特征在于步骤如下 步骤1 构建AADL架构模型描述文件的构件树,以系统构件作为树的根节点,下一层 为子系统构件,依次向下为进程构件、线程构件;以构件的名称作为构件树中的每个节点的 标识,每个节点包含该构件的模态信息;所述的模态信息包括模态名称、引起模态转移的事 件、模态转移的目标模态和系统的初始模态;步骤2 对步骤1得到的构件树进行广度优先遍历,提取每个节点的当前模态,并存储 至时间自动机六元组< Σ,S,S0, C, Ι,Ε>的S集合中,提取到的系统初始模态信息存储在& 集合中。其中S是一个有限的状态集合,S = (SOM1, SOM2,…,SOMJ为模态的状态空间, SOMi为任一模态是一个起始状态集合;Σ = {ePl,ep2,…,epk}是一个有限事件集合, ePk是集合中某事件;C是一个有限时钟集合;I是一个映射,它为S中的每一个状态SOMd^ 定Φ (C)中的某一个时钟约束;E是一个转移集合,E = Ie1, e2,…,ej,e,表示每条转移, E[S>^x<D(C>2exS,每条转移(s,a,δ , λ,s')表示输入字符a时,从位置s到s‘ 的一个转移,δ是定义在时钟集C上的一个时钟约束,在位置转移发生时必须被满足,λ表 示发生位置转移时被重置的所有时钟变量的集合,且满足;L e C ;步骤3 根据步骤2得到的模态的状态集合S,将S中父节点的模态向量与它的孩子 节点的模态向量作笛卡尔乘积,将得到的模态向量继续添加到S中,构造完成时间自动机 < Σ,S,S0, C,I,E> 的状态集合 S ;步骤4 根据步骤1得到的构件树,再一次对构件树进行广度优先遍历,提取每个节点 中引起模态转移的事件,以向量印k(k彡1)表示,并存储至< Σ,S,S0, C,I,E>中的Σ中, Σ= Iep1,印2, ,印11},构造完成时间自动机<[,3,;(,14>的事件集合[;步骤5 根据步骤3和步骤4得到的状态集合S和事件集合Σ,按照如下的方法构造时 间自动机中的转移集合E 广度优先遍历步骤1得到的构件树,提取事件集合中每个事件ePi (1 ^ i ^ k)的源模 态集合Mis= {S0Msi,…,SOMsjI和目标模态集合Mit = {S0Mti,…,S0Msj},得到表示在事 件集合印^虫发下,模态从Mis转移到模态Mit的每条转移ei = (Mis, epi, _,_,Mit),转移集 合为E = Ie1, e2,…,ek}其中对Σ中的每个印1其转移函数为ei = (Mis, ePi, _,_,Mit), Mis c S,Mlt e S ;步骤6 为步骤5得到的转移集合E增加表示模态转移的时钟约束Cl,C = {cj ;所述 的C1包括模态转移发生时离开源模态的时间cll和到达目标模态的时间C12,将C1作为每 条转移函数的时钟约束,得到转移函数h = (Mis,ePi,Cl, IcJ,Mit),所述C1获取步骤如下 步骤a 当源模态下线程间的同步属性Synchronized_Component为true,C11 = (T1中 线程周期的最小公倍数},否则C11 = O ;步骤b 当目标模态下线程间的同步属性Synchronized_Component为true,C12 = (T2 中线程周期的最小公倍数},否则c12 = O ; 步骤c 得到转移时间记为C1 = cn+c12 ;步骤7 重复步骤6,直到E中的所有模态转移中都增加了时钟约束,E = Ie1, e2,…, ej,得到各个元素都构造完成的时间自动机< Σ,S,S0, C,I,E>,AADL模型到时间自动机模 型转换完毕;步骤8 根据步骤7得到的时间自动机模型,使用时间自动机模型的实时系统验证工具UPPAAL验证AADL模型的模态转移是否满足实时性和可达性。
全文摘要
本发明涉及一种基于AADL模态时间自动机模型的嵌入式软件测试方法,技术特征在于根据AADL架构模型文件,生成带有模态信息的AADL系统构件树,通过广度优先遍历构件树,构造AADL模型的时间自动机模型。利用现有的时间自动机的验证工具,对AADL模型模态转换的正确性及时间属性进行验证。本发明方法能够在嵌入式软件设计早期阶段对模型实施测试,尽早发现软件模型的正确性和实时性是否满足设计需求,及时修订设计方案,从而缩短了嵌入式实时系统开发的周期并节约了开发成本。
文档编号G06F11/36GK102063369SQ201010610279
公开日2011年5月18日 申请日期2010年12月23日 优先权日2010年12月23日
发明者周伟超, 张云峰, 张凡, 朱宇峰, 董云卫, 马春燕 申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1