APP下载

AADL模型到广义随机Petri网的转换工具

2015-06-15汤玥等

现代电子技术 2015年12期

汤玥等

摘 要: 为了便于对体系结构设计和分析语言AADL可靠性模型进行可靠性评估, 实现AADL模型到广义随机Petri网模型(GSPN)可靠性计算模型的自动转换,依据AADL模型到GSPN模型的转换规则,设计并实现了集成在开源工具OSATE上的模型转换工具。实验表明:该文的转换工具可以将AADL可靠性模型自动转换为GSPN模型。

关键词: 体系结构设计和分析语言; 可靠性模型; 广义随机Petri网; 模型转换工具

中图分类号: TN911?34; TP311 文献标识码: A 文章编号: 1004?373X(2015)12?0062?04

0 引 言

近年来,嵌入式系统一直在不断的发展,嵌入式系统的结构也变得越来越丰富和复杂,规模日益变大,嵌入式系统的开发周期、非功能性属性(可靠性、可调度性、安全性)及开发成本的要求也是越来越高,之前的那些嵌入式系统开发方法早就已经不能满足现在嵌入式软件开发的需求。OMG(Object Management Group,国际对象集团)提出了模型驱动体系架构(Model Driven Architecture,MDA)[1?2]。MDA整合了OMG在模型存储、模型转换和建模语言等方面的诸多标准。MDA的引进将嵌入式系统软件开发提升到了模型级。此后,对新型的嵌入式系统的非功能属性可以从更高的抽象层面上进行分析。这样不仅能很大程度地缩短系统的开发周期,而且节约开发成本[3]。

基于这个思想,美国自动化工程师协会(Society of Automotive Engineers,SAE)发布了航空标准AS5506——架构分析与设计语言[4](Architecture Analysis and Design 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和Error Model 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

If(WrongEle is ErrorState) //元素是故障状态

TransformPlace(); //转换为GSPN库所

else if(WrongEle is ErrorEvent) //元素是故障传播

TransformTransition(); //转换为GSPN变迁

else if(WrongEle is ErrorTransition) //元素是状态迁移

TransformArc(); //生成库所和变迁之间的连接弧

else if(WrongEle is OutProp) //元素是故障传出

RecordSourceID(); //记录源组件的标识

RecordSourceEvent(); //记录传出的故障事件

else if(WrongEle is InProp) //元素是故障传入

if(matched()) //查询同标识故障传出事件

RecordTargetID(); //记录目标组件的标识

RecordTransition(); //记录目标组件的状态迁移

End

(4) GSPN模型输出模块。最后,从已经记录下来的元素集合中读取元素,调用相应元素的输出方法,建立目标目录和文件,利用Dom工具将输出的信息集中输出到目标文件中。最后得到的文件可作为pipe2工具验证的输入文件。

4 转换工具的应用

本节将对航电系统的飞行规划子系统进行AADL可靠性建模,利用转换工具把飞行规划子系统的错误模型转换到广义随机Petri网。航电系统的飞行规划子系统有6个进程构成:传感器处理进程(Navigation Process)、综合导航进程(IntegrateNavigation Process)、飞行优化进程(FlightPerfor Process)、导航处理进程(Guidance 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_Process.Impl

transitions

NaP_ErrorFree?[NaP_Faile]?>NaP_Failed;

NaP_Failed?[out NaP_InteP_Faile]?>NaP_Failed;

NaP_Failed?[NaP_Repair]?>NaP_ErrorFree;

properties

Occurrece=>possion 5.0e?4 applies to NaP_Faile;

Occurrece=>possion 1.0e?1 applies to NaP_Repair;

Occurrece=>fix 0.8 applies to NaP_InteP_Faile;

end Navigation_Process.Impl

error mode2 IntegrateNavigation_Process

features

InteP_ErrorFree:initial error state;

InteP_Failed:error state;

InteP_Faile,InteP_Pepair:error event;

NaP_InteP_Out_Faile:out error propagation;

Intep_Out_Faile:out error propagation;

end IntegrateNavigation_Process;

error mode2 implementation IntegrateNavigation_Process.Impl

transitions

InteP_ErrorFree?[InteP_Faile]?>InteP_Failed;

InteP_ErrorFree?[in NaP_InteP_Faile]?>InteP_Failed;

InteP_Failed?[InteP_Repair]?>InteP_ErrorFree;

InteP_Failed?[Intep_out_Faile]?>InteP_Failed;

properties

Occurrece=>possion 1.0e?3 applies to InteP_Failed;

Occurrece=>possion 1.0e?1 applies to InteP_Repair;

Occurrece=>fix 0.75 applies to InteP_Out_Failed;

end IntegrateNavigation_Process.Impl

利用AADL模型到GSPN的转换工具将上述错误模型转换并生成了一个XML文件。飞行规划子系统的传感器处理进程(Navigation Process)和综合导航进程(Integrate Navigation Process)的GSPN模型如图5所示。

5 结 语

本文介绍了OSATE插件开发流程和AADL可靠性模型到广义随机Petri网的转换规则,设计并实现了AADL可靠性模型到广义随机Petri网的转换工具,为AADL模型可靠性评估提供了条件。本文还给出了运用转换工具将航电系统的飞行规划子系统的错误模型转换到GSPN的实例。后期将进一步完善AADL可靠性模型到GSPN的转换工具,并研究评估AADL模型可靠性的方法。

图5 传感器处理进程和综合导航进程的GSPN模型

参考文献

[1] OMG. Model driven architecture (MDA) [EB/OL]. [2009?01?03]. http://www.omg.org/mda.

[2] 孙宏旭.MDA模型转换方法的研究与实现[D].哈尔滨:哈尔滨工程大学,2012.

[3] 刘晓娟,温冠华,李建军,等.软件可靠性度量方法[J].计算机工程,2009,35(3):57?59.

[4] YANG Z B, PI L, HU K, et al. AADL: An architecture design and analysis language for complex embedded real?time system [J]. Journal of Software, 2010, 21(5): 899?915.

[5] 谯婷婷,王乐,耶国栋.基于AADL的软件可靠性验证[J].计算机应用,2013,32(2):92?95.

[6] 杨志斌,皮磊,胡凯,等.复杂嵌入式实时系统体系结构设计与分析语言:AADL[J].软件学报,2010,21(5):899?915.

[7] International Society of Automotive Engineers. SAEAS5506/1?2006 SAE architecture analysis and design language (AADL) annex volume 1, annex e: error model annex [S]. [S.l.]: International Society of Automotive Engineers, 2006.

[8] FEILER Peter. Open source AADL tool environment [R]. [S.l.]: Software Engineering Institute, 2005.

[9] 林闯.随机Petri网和系统性能评价[M].北京:清华大学出版社,2005.

[10] 张昊,麦先根,贾璐.Eclipse插件开发技术浅探[J].航空计算技术,2006(6):108?112.