发明名称 一种基于AADL模态时间自动机模型的嵌入式软件测试方法
摘要 本发明涉及一种基于AADL模态时间自动机模型的嵌入式软件测试方法,技术特征在于:根据AADL架构模型文件,生成带有模态信息的AADL系统构件树,通过广度优先遍历构件树,构造AADL模型的时间自动机模型。利用现有的时间自动机的验证工具,对AADL模型模态转换的正确性及时间属性进行验证。本发明方法能够在嵌入式软件设计早期阶段对模型实施测试,尽早发现软件模型的正确性和实时性是否满足设计需求,及时修订设计方案,从而缩短了嵌入式实时系统开发的周期并节约了开发成本。
申请公布号 CN102063369A 申请公布日期 2011.05.18
申请号 CN201010610279.7 申请日期 2010.12.23
申请人 西北工业大学 发明人 董云卫;张云峰;马春燕;张凡;周伟超;朱宇峰
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 1.一种基于AADL模态时间自动机模型的嵌入式软件测试方法,其特征在于步骤如下:步骤1:构建AADL架构模型描述文件的构件树,以系统构件作为树的根节点,下一层为子系统构件,依次向下为进程构件、线程构件;以构件的名称作为构件树中的每个节点的标识,每个节点包含该构件的模态信息;所述的模态信息包括模态名称、引起模态转移的事件、模态转移的目标模态和系统的初始模态;步骤2:对步骤1得到的构件树进行广度优先遍历,提取每个节点的当前模态,并存储至时间自动机六元组&lt;∑,S,S<sub>0</sub>,C,I,E&gt;的S集合中,提取到的系统初始模态信息存储在S<sub>0</sub>集合中。其中:S是一个有限的状态集合,S={SOM<sub>1</sub>,SOM<sub>2</sub>,…,SOM<sub>i</sub>}为模态的状态空间,SOM<sub>i</sub>为任一模态;S<sub>0</sub>是一个起始状态集合;∑={ep<sub>1</sub>,ep<sub>2</sub>,…,ep<sub>k</sub>}是一个有限事件集合,ep<sub>k</sub>是集合中某事件;C是一个有限时钟集合;I是一个映射,它为S中的每一个状态SOM<sub>i</sub>指定Φ(C)中的某一个时钟约束;E是一个转移集合,E={e<sub>1</sub>,e<sub>2</sub>,…,e<sub>k</sub>},e<sub>i</sub>表示每条转移,<img file="FSA00000401281000011.GIF" wi="516" he="49" />每条转移(s,a,δ,λ,s′)表示输入字符a时,从位置s到s′的一个转移,δ是定义在时钟集C上的一个时钟约束,在位置转移发生时必须被满足,λ表示发生位置转移时被重置的所有时钟变量的集合,且满足<img file="FSA00000401281000012.GIF" wi="148" he="45" />步骤3:根据步骤2得到的模态的状态集合S,将S中父节点的模态向量与它的孩子节点的模态向量作笛卡尔乘积,将得到的模态向量继续添加到S中,构造完成时间自动机&lt;∑,S,S<sub>0</sub>,C,I,E&gt;的状态集合S;步骤4:根据步骤1得到的构件树,再一次对构件树进行广度优先遍历,提取每个节点中引起模态转移的事件,以向量ep<sub>k</sub>(k≥1)表示,并存储至&lt;∑,S,S<sub>0</sub>,C,I,E&gt;中的∑中,∑={ep<sub>1</sub>,ep<sub>2</sub>,…,ep<sub>k</sub>},构造完成时间自动机&lt;∑,S,S<sub>0</sub>,C,I,E&gt;的事件集合∑;步骤5:根据步骤3和步骤4得到的状态集合S和事件集合∑,按照如下的方法构造时间自动机中的转移集合E:广度优先遍历步骤1得到的构件树,提取事件集合中每个事件ep<sub>i</sub>(1≤i≤k)的源模态集合M<sub>is</sub>={SOM<sub>si</sub>,…,SOM<sub>sj</sub>}和目标模态集合M<sub>it</sub>={SOM<sub>ti</sub>,…,SOM<sub>sj</sub>},得到表示在事件集合ep<sub>i</sub>触发下,模态从M<sub>is</sub>转移到模态M<sub>it</sub>的每条转移e<sub>i</sub>=(M<sub>is</sub>,e<sub>pi</sub>,_,_,M<sub>it</sub>),转移集合为E={e<sub>1</sub>,e<sub>2</sub>,…,e<sub>k</sub>}其中:对∑中的每个ep<sub>i</sub>其转移函数为e<sub>i</sub>=(M<sub>is</sub>,ep<sub>i</sub>,_,_,M<sub>it</sub>),<maths num="0001"><![CDATA[<math><mrow><msub><mi>M</mi><mi>is</mi></msub><mo>&SubsetEqual;</mo><mi>S</mi><mo>,</mo></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><msub><mi>M</mi><mi>it</mi></msub><mo>&SubsetEqual;</mo><mi>S</mi><mo>;</mo></mrow></math>]]></maths>步骤6:为步骤5得到的转移集合E增加表示模态转移的时钟约束c<sub>1</sub>,C={c<sub>1</sub>};所述的c<sub>1</sub>包括模态转移发生时离开源模态的时间c11和到达目标模态的时间c<sub>12</sub>,将c<sub>1</sub>作为每条转移函数的时钟约束,得到转移函数e<sub>j</sub>=(M<sub>is</sub>,ep<sub>i</sub>,c<sub>1</sub>,{c<sub>1</sub>},M<sub>it</sub>),所述c<sub>1</sub>获取步骤如下:步骤a:当源模态下线程间的同步属性Synchronized_Component为true,c<sub>11</sub>={T<sub>1</sub>中线程周期的最小公倍数},否则c<sub>11</sub>=0;步骤b:当目标模态下线程间的同步属性Synchronized_Component为true,c<sub>12</sub>={T<sub>2</sub>中线程周期的最小公倍数},否则c<sub>12</sub>=0;步骤c:得到转移时间记为c<sub>1</sub>=c<sub>11</sub>+c<sub>12</sub>;步骤7:重复步骤6,直到E中的所有模态转移中都增加了时钟约束,E={e<sub>1</sub>,e<sub>2</sub>,…,e<sub>k</sub>},得到各个元素都构造完成的时间自动机&lt;∑,S,S<sub>0</sub>,C,I,E&gt;,AADL模型到时间自动机模型转换完毕;步骤8:根据步骤7得到的时间自动机模型,使用时间自动机模型的实时系统验证工具UPPAAL验证AADL模型的模态转移是否满足实时性和可达性。
地址 710072 陕西省西安市友谊西路127号