AADL模型到广义随机Petri网的转换工具
汤玥,苏威,李蜀瑜
(陕西师范大学计算机科学学院,陕西西安710119)
摘要:为了便于对体系结构设计和分析语言AADL可靠性模型进行可靠性评估,实现AADL模型到广义随机Petri网模型(GSPN)可靠性计算模型的自动转换,依据AADL模型到GSPN模型的转换规则,设计并实现了集成在开源工具OSATE上的模型转换工具。实验表明:该文的转换工具可以将AADL可靠性模型自动转换为GSPN模型。
关键词 :体系结构设计和分析语言;可靠性模型;广义随机Petri网;模型转换工具
中图分类号:TN911-34;TP311 文献标识码:A 文章编号:1004-373X(2015)12-0062-04
收稿日期:2014-12-15
基金项目:国家自然科学基金资助项目(41271387)
0 引言
近年来,嵌入式系统一直在不断的发展,嵌入式系统的结构也变得越来越丰富和复杂,规模日益变大,嵌入式系统的开发周期、非功能性属性(可靠性、可调度性、安全性)及开发成本的要求也是越来越高,之前的那些嵌入式系统开发方法早就已经不能满足现在嵌入式软件开发的需求。OMG(Object Management Group,国际对象集团)提出了模型驱动体系架构(Model DrivenArchitecture,MDA)[1-2]。MDA 整合了OMG 在模型存储、模型转换和建模语言等方面的诸多标准。MDA的引进将嵌入式系统软件开发提升到了模型级。此后,对新型的嵌入式系统的非功能属性可以从更高的抽象层面上进行分析。这样不仅能很大程度地缩短系统的开发周期,而且节约开发成本[3]。
基于这个思想,美国自动化工程师协会(Society ofAutomotive Engineers,SAE)发布了航空标准AS5506——架构分析与设计语言[4](Architecture Analysis and De-sign Language,AADL)。AADL 可以定义和实现支持MDA的工具并且已被标准化。
AADL 提供标准化的文本和图形符号来描述软件和硬件系统架构及其功能接口。AADL 将系统的设计、分析、验证和自动代码生成等环节融合在一个框架之中[5]。在AADL中,系统被模型化成交互应用构件(数据、线程、进程、子程序)的分层集合和一组执行平台的组件(总线、处理器、设备、存储器)[6]。应用构件被绑定在执行平台,相关信息被分开描述,然后插入到架构模型中。为了补充支持AADL 核心语言对相关可靠性的信息(如故障、故障传播、修改、容错策略)的描述,SAE发布了错误模型附件[7](Error Model Annex,Annex E)并且将其标准化。错误附件的使用在原有的模型描述和验证的基础上增加了可靠性分析,进一步完善了AADL语言。
为了支持基于AADL 模型的各种分析目前已经实现了一些工具。调度和内存需求可以通过Cheddar 来进行模拟和可行性测试的分析。开源AADL 工具环境(Open Source AADL Tool Environment,OSATE)[8]支持资源分配分析。目前无法对AADL 模型直接进行可靠性验证,本文的转换工具可以将AADL可靠性模型自动转换为广义随机Petri网模型(General Stochastic Petri Net,GSPN)[9],在此基础上,可以通过对GSPN模型的验证来进行AADL模型的分析与验证。
1 OSATE 插件开发流程
开源AADL工具环境是基于Eclipse平台[10]的AADL模型开发工具。Eclipse平台是一个基于Java的集成开发环境,它可以扩展并且开放源码。就Eclipse 的本身而言,是利用其插件(Plug-in)机制来实现其所有功能的。在OSATE平台上,可以进行AADL的建模、模型实例化以及语法检查。因此,本文在OSATE 和错误模型附录库插件开发的基础上设计了AADL 架构模型和AADL错误模型,直接利用OSATE对AADL架构模型和AADL错误模型进行解析,生成一个实例文件(AAXL文件)。利用XML 解析器SAX 对得到的AAXL 模型文件进行解析,通过AADL错误模型向GSPN模型转换规则,转换生成一个广义随机Petri网的XML文件。之后,就可以利用马尔可夫分析法、故障树分析法或者用PIPE2对转换后的GSPN 模型进行可靠性的评估可验证。插件的开发流程如图1所示。
2 AADL 模型到GSPN 模型转换规则
设计实现AADL 模型到GSPN 模型的转换工具,关键是要确定AADL模型到相应GSPN 模型的转换关系。下面给出AADL错误模型基本元素转换为GSPN的规则。
规则1:将AADL 错误模型中的错误状态转换为GSPN中的库所。
规则2:将AADL 错误模型中的错误事件转换为GSPN中的变迁,满足泊松分布的事件转换为时间变迁,服从固定概率的事件转换为瞬时变迁。
规则3:将AADL 中错误状态之间的变迁转换为变迁到库所的弧和库所到变迁的弧。
规则4:将初始错误状态转换为包含一个托肯的库所。
规则5:对于符合泊松分布的错误传出,把状态和错误传出转换库所,增加一个时间变迁,其符合泊松分布,增加错误传出库所和变迁的禁止弧,把相应的弧加上。
规则6:对于服从固定概率的错误传出,把状态和错误传出转换为库所,增加一个库所表示无错误传出状态。增加两个变迁,分别表示错误传出和错误未传出。把相应的弧加上。
规则7:将状态转换为库所,把错误传入转换为瞬时变迁,且概率为1,增加相应的弧。
规则8:把在错误传播过滤规则中所定义的每个连接转换为一个瞬时变迁,状态和传播转换为库所,在相应的库所上加上禁止弧。
规则9:把在guard_out中定义错误传播屏蔽规则转换为库所,一一对应,把每一个规则中每一连接转换为变迁。
可以在这些模型转换规则的基础上,实现从AADL可靠性模型到GSPN 计算模型的模型转换的工具,为可靠性评估提供条件。单独组件的错误模型到GSPN 的转换如图2所示。
3 转换工具的设计与实现
3.1 转换工具的整体架构设计
模型转换工具的架构如图3 所示,OSATE 和ErrorModel Annex 是基于Eclipse 平台开发的。OSATE 为AADL 可靠性模型提供了设计环境,Error Model Annex给出了错误模型的定义。转换工具是基于OSATE 和Error Model Annex开发的,实现了AADL可靠性模型到GSPN 模型的自动转换。转换工具的输入文件是的AAXL 文件,AAXL 文件是XML 格式的。AAXL 文件是开源工具OSATE 提供的文件接口,而模型转换工具的输出文件是广义随机Petri网模型的XML文件,可以供其他工具分析GSPN模型的基本属性以及可靠性。
3.2 转换工具的模块设计与实现
AADL可靠性模型到GSPN可靠性计算模型的转换工具是基于OSATE和Error Model Annex开发的。该工具包含4 个功能模块:建立AADL 可靠性模型模块、AAXL文件提取解析模块、AADL错误模型转换为GSPN模块、GSPN模型输出模块,如图4所示。
(1)建立AADL可靠性模型模块。AADL错误模型是对构件的各种可靠性信息包括故障行为、故障传播等进行描述。将AADL 错误模型添加到AADL 架构模型中,与嵌入式软件中的各种构件相结合,即错误模型与相应的构件绑定,最终形成完整的嵌入式软件可靠性模型。
(2)AAXL文件提取解析模块。对错误模型进行转换,首先要对错误模型所在的AAXL文件的错误附件进行提取,因为错误模型要XML、文本、图形3 种存储方式,而SAX可以很好的处理XML文件,所以本工具采用SAX对错误模型中的状态、事件、错误传出、错误传入等元素进行识别和提取,并将其以对象的形式存储在链表中,待所有元素提取完成后,对其进行转换。方法Clickleft(IAction Action)通过点击鼠标左键获取文件,方法Judge(Resultpath)判断该文件是否为AAXL 文件,若为AAXL文件,SaxRead.readaaxl(Resultpath)对AAXL文件进行解析提取信息。
(3)AADL错误模型到GSPN转换模块。状态转换为库所,初始状态转换为带有托肯的库所,事件根据其满足泊松分布还是固定概率分别转换为时间变迁或瞬间变迁,错误传出和传入对应的转换为弧。将转换后的元素以对象的形式存储起来,以待存储为XML 文件。下面给出模型转换的伪代码:
Begin
Do
I(f WrongEle is ErrorState) //元素是故障状态
TransformPlace(); //转换为GSPN库所
else i(f WrongEle is ErrorEvent) //元素是故障传播
TransformTransition(); //转换为GSPN变迁
else i(f WrongEle is ErrorTransition) //元素是状态迁移
TransformArc(); //生成库所和变迁之间的连接弧
else i(f WrongEle is OutProp) //元素是故障传出
RecordSourceID(); //记录源组件的标识
RecordSourceEven(t ); //记录传出的故障事件
else i(f WrongEle is InProp) //元素是故障传入
i(f matched()) //查询同标识故障传出事件
RecordTargetID(); //记录目标组件的标识
RecordTransition(); //记录目标组件的状态迁移
End
(4)GSPN 模型输出模块。最后,从已经记录下来的元素集合中读取元素,调用相应元素的输出方法,建立目标目录和文件,利用Dom 工具将输出的信息集中输出到目标文件中。最后得到的文件可作为pipe2工具验证的输入文件。
4 转换工具的应用
本节将对航电系统的飞行规划子系统进行AADL可靠性建模,利用转换工具把飞行规划子系统的错误模型转换到广义随机Petri网。航电系统的飞行规划子系统有6 个进程构成:传感器处理进程(Navigation Pro-cess)、综合导航进程(IntegrateNavigation Process)、飞行优化进程(FlightPerfor Process)、导航处理进程(Guid-ance Process)、飞行规划进程(FlightPlane Process)、数据显示(DataDisplay Process)。其中硬件组件包括:传感器(Device)、处理器(FMProcessor)、内存(MeM)和总线(Processor_Mem_Bus)。根据飞行规划子系统的AADL架构模型和每一个组件的动态运行以及它们之间的交互情况,给每一个组件增加相应的错误模型,并且根据它们之间的交互情况,确定它们之间的错误传播。飞行规划子系统的错误模型,在这里本文使用文本表示,描述了传感器处理进程(Navigation Process)和综合导航进程(Integrate Navigation Process)的错误模型。
综合导航进程(Integrate Navigation Process)的错误模型如下:
error model Navigation_Process
features
NaP_ErrorFree:initial error state;
Nap_Faile:error state;
NaP_Failed,NaP_Repair:error event;
NaP_InteP_Faile:out error propagation;
end Navigation_Process;
error model implementation Navigation_Proces