唐家强 王星皓 安品臣 胡宾洋
摘 要:在对分布式综合航空电子系统中的信息流进行分析评价时,必须构建相应的信息流模型。体系结构分析与设计语言具有对较为复杂的系统集成和性能进行规格说明与分析,并可实现硬件的计算资源和软件构件之间相互映射的能力,因此,特别适用于性能关键性嵌入式实时系统的分析与设计,文章结合综合化航电系统的结构特征,阐述了系统信息流的AADL建模方法。
关键词:综合模块化航电;信息流;建模;AADL
综合化航电系统替代了联合式航电系统[1],成为越来越多飞机的选择,但是由于其系统复杂,给其建模分析带来了挑战,体系结构分析与设计语言(Architecture Analysis and Design Language,AADL)以结构化、模块化的特征引起了各国学者的注意,开始成为主流建模方法。
1 体系结构分析与设计语言
1.1 AADL标准
SAE标准定义的体系AADL[2]脱胎于航空电子领域中具有长期的工程应用基础的MetaH语言,应用于有实时响应要求的、具有挑战性的资源限制的、必须经过认证得到高度信任的嵌入式实时系统。
对于被分析的系统,AADL语言能够正规地描述体系结构模型,以发现如调度、定时、故障冗余等潜在的系统问题。对于设计中的系统,AADL语言的优势在于多尺度的逼真性:既能对完全规模的系统进行抽象表达,也可以通过分析部分信息模型来确定设计是否满足预期需求。因此,其特别适用于综合式模块化航空电子系统的体系结构描述。
SAE AS5506标准给出了AADL语言的基本概念和核心模型,主要通过“语法”“语义”“命名规则”“预定义属性”“合法性规则”以及“处理需求和许可”等几部分对标准AADL进行全面阐述。由于篇幅所限,此处仅简略介绍部分核心内容。
标准AADL模型主要分为两大类:声明模型与实例模型。从两类模型之间的相互关系来看,声明模型是生成实例模型的基础与必要条件,实例模型是将各个层次的声明模型进行综合并具体化的结果。
在AADL声明模型中,最为基本的结构要素是“构件”。构件的定义分为“构件类型”和“构件实现”两部分,其中构件类型通过使用特征、属性指定功能接口以及流规范来对该构件与外界的交互接口进行定义。构件实现是构件类型在当前层次(不包含子构件的子构件)的具体化实现形式,通过“子构件”“子构件连接”“属性”“流实现”“子程序调用序列”和“模式”来对构件类型的内部结构和构造方式进行更为详细的描述。另外需要说明的是,由于构件可以根据不同的特征和连接情况进行具体化,一个构件类型可以具有多个相应的构件实现。
构件定义中的“特征”,主要用于描述构件与外界进行交互的功能接口。AADL标准定义了“事件端口”“数据端口”“事件数据端口”“端口组”“服务子程序”“数据子程序”“子程序参数”“提供与请求的子构件的访问”等多种构件“特征”。構件定义中的“连接”主要用来表示不同构件之间的数据和控制通信连接,可以承载不同线程的端口间、处理器和线程之间或不同设备构件之间的控制和数据信息的传输。
此外,必须说明的一点是,AADL标准中将所有构件划分为3类:应用类别,主要包括“线程”“线程组”“进程”以及“数据”构件等。执行平台类别,包括“处理器”“总线”“设备”以及“存储器”构件。组成类别,主要指“系统”构件。一个构件所属的类别是由其定义中所声明的类型决定的。
AADL语言的核心规范要素如图1所示。
AADL实例模型是将对应的声明模型中所有的元素全部进行实例化后所得的模型。实例模型的主要设计目标是具备如下3种能力:根据一个具有实现模型的AADL声明模型来生成实例模型,该实现模型作为实例模型的根。允许在无须加载全部声明模型的条件下对实例模型进行处理。使用同一个实例模型来统一表达所有模态的声明模型,而无须为每个模式组合分别创建一个单独的实例模型。
1.2 AADL工具环境:OSATE
目前已经面世的AADL建模和处理分析工具有TOPCASED-AADL、OSATE、Cheddar、Ocarina等,其中最具代表性的是开放源码AADL工具环境(Open Source Code AADL Tool Environment,OSATE)。
OSATE是一款由美国卡耐基梅隆大学软件工程学院AADL开发小组开发并负责维护的基于Eclipse平台的源码开放的插件集。该工具通过由具有AADL语法高亮提示功能的文本编辑器、AADL语义检查器与规范解释器以及AAXL对象编辑器与阅读器等多个插件构成的一组工具集对AADL模型进行前端处理,以支持AADL模型以文本文件(AADL格式)或专用的XML格式(AAXL格式)的模型文件形式进行存储、更新与维护。非常重要的一点是,该工具具备通过AADL源文本自动创建AAXL模型文件以及两者之一发生变更后的双向一致性修改功能。此外,如果用户需要,还可以对OSATE前端自行进行插件形式的扩展。
2 信息流模型的构建
AADL使用“流(flow)”对通信与信息处理的流量进行描述[3],并据此灵活地处理具有多逼真度的、层次化的、只有部分详细设计的模型,从而对系统的综合化处理过程开展基于流模型的实时性能分析。
针对数据或事件的传输,或任务处理过程的时延分析,特别是对端到端的时延的分析,都需要以对流的建模为基础来开展。端到端流量的AADL模型,主要通过“流规范”“流实现”“端到端流”3种类型的声明来进行描述,其中,后两种类型可以通过实例化的方式生成相应的实例,该实例则称为“流实例”。
“流规范(flow specification)”的主要描述对象是通过一个构件的应用逻辑的外部可见流量。关于流规范,AADL定义了3个相关的保留字“flow source”“flow sink”和“flow path”分别用以表示构件中流的起始、终止以及从输入端口到输出端口所通过的流的路径。
“流实现(flow implementation)”主要对通过构件的实际的流序列和跨越一段或多段连接的构件集合进行具体的描述,是流规范的具体实现。流实现和流规范之间的关系,符合前文对构件实现与构件类型之间关系的描述。
“端到端流(end-to-end flow)”定义的是一条源于子构件、终止于子构件的流,是经过一连串系统子构件,如线程、设备等的逻辑信息流,由关键字“end-to-end flow”在构件实现中进行声明。端到端流其实是流实现的一种特殊情形。对于逼真度较低的模型,在端到端流的描述中,可以直接使用当前构件下的第一层子构件中的流规范,而无须这些构件实现的声明。同样,端到端流的声明中也可以使用子构件的构件实现中定义的流。
端到端流的声明显然只涉及当前一层子构件,但实际模型中的子构件实现中还可以包含子构件[4]。因此,按照子构件的层次,将端到端流的声明逐层进行实例化[5],最终即可得到流规范实例和连接实例共同构成的端到端的“流实例(flow instance)”。在图2所示的典型AADL流模型中,线程构件T1,T2和T3分别是进程构件P1,P2和P3的子构件,系统S中由P1發出,经过P2到达P3的端到端流,具体到线程层次即表现为由T1发出,经过T2到达T3的端到端流。
3 结语
综合航电系统以其高效、安全、模块化的特点被越来越多的飞机所采用,系统分析必须选择合适的方法、工具开展,以保证分析结果的可信性以及对飞机安全性的保证。文章分析了AADL语言的特性和平台工具特性,提出了航电系统流模型的建模方法。
[参考文献]
[1]熊华钢,王中华.先进航空电子综合技术[M].北京:国防工业出版社,2009.
[2]许金淼,杨志斌,黄志球,等.系统架构描述语言AADL的功能行为建模扩展[J].计算机科学与探索,2019(10):2350-2370.
[3]刘博,李蜀瑜.基于NuSMV的AADL行为模型验证的探究[J].计算机技术与发展,2012(2):110-113.
[4]高志伟.基于AADL的嵌入式软件可靠性建模与评估[D].西安:西安电子科技大学,2011.
[5]田丹,霍峰.基于AADL的航电系统建模技术[J].航空计算技术,2010(3):120-122.