ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac
Journal of Software, Vol.21, No.5, May 2010, pp.899−915 doi: 10.3724/SP.J.1001.2010.03700 Tel/Fax: +86-10-62562563
© by Institute of Software, the Chinese Academy of Sciences. All rights reserved.
复杂嵌入式实时系统体系结构设计与分析语言:AADL
杨志斌1+,  皮磊2,  胡凯1,  顾宗华3,  马殿富1
1(北京航空航天大学计算机学院,北京 100191)
2(Toulouse Institute of Computer Science Research, Toulouse, France)
3(浙江大学计算机科学与技术学院,浙江杭州  310027)
AADL: An Architecture Design and Analysis Language for Complex Embedded Real-Time
Systems
YANG Zhi-Bin1+,  PI Lei2,  HU Kai1,  GU Zong-Hua3,  MA Dian-Fu1
1(School of Computer Science and Engineering, BeiHang University, Beijing 100191, China)
2(Toulouse Institute of Computer Science Research, Toulouse, France)
3(College of Computer Science and Technology, Zhejiang University, Hangzhou 310027, China)
+ Corresponding author: E-mail: kenney@cse.buaa.edu
Yang ZB, Pi L, Hu K, Gu ZH, Ma DF. AADL: An architecture design and analysis language for complex
embedded real-time systems. Journal of Software, 2010,21(5):899−915. /1000-9825/
3700.htm
Abstract: This paper firstly presents a summary of AADL (architecture analysis and design language), including
its progress over the years and its modeling elements. Then, it surveys the research and practice of A
ADL from a
model-based perspective, such as AADL modeling, AADL formal semantics, model transformation, verification and
code generation. Finally, the potential research directions are discussed.
Key words: complex embedded real-time system; system architecture; model driven; AADL (architecture analysis and
design language)
摘要: 首先归纳了AADL(architecture analysis and design language)的发展历程及其主要建模元素.其次,从模型
驱动设计与实现的角度综述了AADL在不同阶段的研究与应用,总结了研究热点,分析了现有研究的不足,并对
AADL的建模与分析工具、应用实践进行了概述.最后,探讨了AADL的发展与研究方向.
关键词: 复杂嵌入式实时系统;系统体系结构;模型驱动;AADL(architecture analysis and design language)
中图法分类号: TP311文献标识码: A
复杂嵌入式实时系统广泛应用于航空电子、航天器、汽车控制等领域,这些系统具有资源受限、实时响应、
∗Supported by the National High-Tech Research and Development Plan of China under Grant Nos.2007AA01A127, 2006AA01Z19A
(国家高技术研究发展计划(863)); the Aviation Science Foundation of China under Grant Nos.20081951027, 2007ZC51032,
20060151003 (航空科学基金); the RGC CERG of Hong Kong of China under Grant No.613506 (香港研究资助局面上项目); the
TOPCASED Project in France (法国TOPCASED项目)
Received 2009-01-08; Revised 2009-04-27; Accepted 2009-07-09
900 Journal of Software软件学报 V ol.21, No.5, May 2010嵌入式系统开发前景
容错、专用硬件等特点,对实时性、可靠性等性质有较高的要求,文献[1]称其为性能关键系统(performance critical systems,简称PCS).由于计算精度、实时响应的要求,这类系统变得越来越复杂,如何设计与实现高质量的复杂嵌入式实时系统,并有效控制开发时间与成本,是学术界和工业界共同面临的难题.
模型驱动开发方法(model driven development,简称MDD)能够在早期阶段对系统进行分析与验证,有助于保证系统的质量属性,并有效控制开发时间与成本.而质量属性是由系统体系结构决定的[1].因此,基于体系结构模型驱动(model-based architecture-driven)的设计与开发方法成为复杂嵌入式系统领域的重要研究内容.其中一个重要的方面就是研究合适的体系结构描述语言.
常用的体系结构描述语言主要有UML(unified modeling language)和ADL(architecture description language).UML侧重描述系统的软件体系结构,为了支持嵌入式实时系统的非功能属性分析,OMG(Object Management Group)先后定义了UML Profile for SPT(schedulability, performance, and time,简称SPT)[2],UML Profile for Qos/FT(quality of service and fault tolerance,简称Qos/FT)[3]以及UML Profile MARTE(modeling and analysis of real-time and embedded systems)[4],它们继承了UML的多模型多分析方法,因此模型之间可能存在不一致性;而C2,Darwin,Wright,Aesop,Unicon,Rapide等A
DL都是通用领域的软件体系结构描述语言,难以满足软硬件协同设计、实时响应、资源受限等特定需求;MetaH是面向航空电子系统的ADL,可以用于嵌入式实时系统体系结构描述与分析,但MetaH在支持运行时体系结构描述、可扩展、与其他ADL兼容以及复杂系统设计等方面有所欠缺.
2004年,美国汽车工程师协会SAE(society of automotive engineers)在MetaH,UML的基础上,提出嵌入式实时系统体系结构分析与设计语言AADL(architecture analysis & design language)[5],并发布为SAE AS5506标准,目的是提供一种标准而又足够精确的方式,设计与分析嵌入式实时系统的软、硬件体系结构及功能与非功能性质,采用单一模型支持多种分析的方式,将系统设计、分析、验证、自动代码生成等关键环节融合于统一框架之下.AADL具有语法简单、功能强大、可扩展的优点.由于具有广阔的应用前景,AADL得到了欧美工业界,特别是航空航天领域(如Airbus,Lockheed Martin,Rockwell Collins,Honeywell,Boeing)的支持;CMU(Carnegie Mellon University),MIT(Massachusetts Institute of Technology),UIUC(University of Illinois at Urbana- Champaign),Pennsylvania大学,NASA以及法国IRIT(Toulouse Institute of Computer Science Research),INRIA, Verimag等研究机构对AADL展开了深入研究与扩展.TOPCASED[6],SPICES[7],AVSI-SAVI[8]等是欧美工业界和学术界共同参与的AADL重大研究项目,涉及AADL标准扩展、建模工具、形式语义、验证、可靠性分析、可调度分析以及自动代码生成等方面的研究,这些也是目前AADL的研究热点.
AADL被认为是基于模型驱动的嵌入式实时系统设计与实现的基础,但AADL还有很多问题需要进一步研
究与完善.本文试图从模型驱动设计与开发的角度,综述近几年AADL的研究成果,剖析一些重要概念,如执行模型(execution model),总结研究热点以及分析现有研究的不足.第1节简介AADL的发展历程及其建模元素.第2节分述AADL语言的研究、基于AADL的建模方法、AADL模型的验证与分析以及基于AADL模型的自动代码生成等内容.第3节介绍AADL现有的建模与分析工具.第4节概述AADL的应用实践.最后讨论AADL可能的研究发展方向.
1  AADL简介
1.1  AADL发展历程
AADL创始人Peter H. Feiler和Bruce A. Lewis总结了AADL的发展历程[1],提出AADL是在MetaH,ADL 以及商业建模语言UML和HOOD(hierarchical object-oriented design)[9]的基础上发展起来的.1991年,在美国DARPA计划DSSA(domain specific software architectures)项目支持下,Honeywell 实验室提出体系结构描述语言MetaH,专用于航空电子、飞行控制等系统的体系结构描述与分析.到1999年,学术界和工业界对MetaH进行了大量研究与应用,如支持多处理器系统建模、Ada95和POSIX中间件配置、MetaH-ACME的转换、可靠性建模等.2001年,SAE提出基于MetaH定义一个航空电子体系结构描述语言标准,即Avionics Architecture
杨志斌 等:复杂嵌入式实时系统体系结构设计与分析语言:AADL 901 Description Language(AADL),支
持描述标准的航空电子控制与数据流机制及实时、容错、安全等非功能性质.2004年,AADL 标准化得到了进一步的扩展.SAE,CMU,Honeywell 等共同提出建立嵌入式实时系统体系结构描述语言标准,并正式命名为Architecture Analysis & Design Language(AADL).2004年11月,发布了AADL1.0版本,以文本的形式给出核心语言的语法和语义.2006年发布了一些扩展附件(annex),如Graphical AADL Notation Annex [10],AADL Meta model and XML/XMI Interchange Format Annex [10],Error Model Annex [10], Behavior Annex [11],UML Profile Annex.2009年1月发布了AADL 2.0版本[12].
1.2  AADL 建模元素
AADL 通过构件、连接等概念描述系统的软、硬件体系结构;通过特征、属性描述系统功能与非功能性质;通过模式变换(mode change)描述运行时体系结构演化;通过用户定义属性和附件支持可扩展;对于复杂系统建模,AADL 通过包(package)进行组织.AADL 提供了3种建模方式:文本、XML 以及图形化.如图1所示,本文以汽车巡航控制系统(cruise control system)的AADL 模型为例,介绍AADL 的基本建模元素.
Speed Display
Command
Speed
Voltage Throttle
Voltage
Required speed
Actual speed Tours per period
Speed Speed
Voltage Tour Event port connection Data port connection CruiseProcess
20Hz 50Hz 100Hz 20Hz Speed
Bus WheelProcess Memory
Processor Tours per period Tour CruiseSystem
Wheel
Fig.1  Graphic AADL model of an automotive cruise-control system
图1  汽车巡航控制系统的AADL 图形化模型
(1) 构件种类
AADL 定义了3类构件:软件构件、执行平台构件以及系统构件.软件构件用于软件体系结构建模,包括数据(data)、线程(thread)、线程组(thread group)、进程(process)、子程序(subprogram)构件;执行平台构件用于硬件体系结构建模,包括处理器(processor)、虚拟处理器(virtual processor)、存储器(memory)、总线(bus)、虚拟总线(virtual bus)、外设(device)构件;系统构件组合所有的构件,层次化地建立系统的体系结构.在图1中,采用系统构件(CruiseSystem)、进程构件(WheelProcess,CruiseProcess)、线程构件(Wheel,Throttle,Speed,Command, Display)、处理器构件、存储器构件以及总线构件构造系统的体系结构模型.
902 Journal of Software软件学报 V ol.21, No.5, May 2010
(2) 构件描述
AADL构件被定义为两部分:类型(component type)和实现(component implementation).一个构件拥有一个类型以及对应的0个、1个或多个实现.构件类型描述对外的功能接口(输入输出端口等).构件实现则描述构件的内部结构(子构件、连接等),例如,进程构件CruiseProcess由4个线程子构件及其连接来实现.构件类型和实现都是可继承的.
(3) 构件特征
特征(feature)是构件类型定义的一部分,用于描述构件的对外接口,主要包括4类:端口、子程序、参数以及子构件访问.端口用于定义构件之间的数据、事件交互接口,分为数据、事件、数据事件端口,图1中主要采用了数据和事件端口进行交互.子程序用于定义子程序共享访问接口,分为子程序访问者(required subprogram access)和子程序提供者(provides subprogram access),前者表示需要访问其他构件内部的子程序,后者表示提供子程序给其他构件来访问,可以支持远程子程序调用.参数用于定义子程序被访问时输入、输出的合法数据类型.子构件访问分为数据构件访问和总线构件访问,前者用于共享数据或共享资源描述,后者用于硬件平台构件之间的连接.
(4) 连接、流
AADL采用连接(connection)来描述构件之间的交互行为,与构件特征对应,AADL支持3种连接方式:端口连接、参数连接及访问连接.端口连接用于描述并发执行构件之间的数据与控制交互;参数连接描述一个线程构件访问的所有子程序的参数所形成的数据流;访问连接又分为数据访问连接、总线访问连接以及子程序访问连接,分别描述数据共享、总线共享以及子程序共享.
连接是点对点的,为了简化对体系结构的分析过程,AADL引入了流(flow)的概念,用于描述系统中信息传输的逻辑路径.流的完整描述包括流规约(flow specification)和流实现(flow implementation).流规约在构件
类型中定义,包含外部可见的源结点(flow source)、目标结点(flow sink)及路径(flow path),源结点和目标结点分别是构件的特征,路径则是构件中从一个特征到另一个特征的连接.流实现在构件实现中定义,包括构件中流路径的具体实现或整个系统的端到端流(end-to-end flow)定义.端到端流的描述可以用于支持端到端延迟分析和可靠性分析.
(5) 构件属性
属性(property)用于描述体系结构中的约束条件,即非功能属性约束,进而支持验证与分析系统的可靠性、安全性、可调度性等性质,如子程序的执行时间、线程的周期、数据或事件端口的等待队列协议、安全层次等.AADL提供了标准的属性集,用户也可以根据需要定义新的属性.属性和特征的区别在于,特征主要是描述构件功能接口,而属性则是描述系统非功能性质的约束.
(6) 模式
AADL通过模式(mode)来描述运行时体系结构的动态演化.模式就是系统或构件的操作状态,如汽车巡航控制系统可能包括初始化、人工控制、自动巡航等模式.它们对应了系统功能行为的不同配置,模式变换体现系统体系结构的变化,能够描述体系结构重构及容错等需求.
(7) 扩展附件
当定义新的属性不能满足用户需要时,AADL引入了附件的概念.它拥有独立的语法和语义,但必须与AADL核心标准保持语义一致.如故障模型附件(error model annex)[10],支持构件、连接的故障事件、故障概率等属性建模;行为附件(behavior annex)[11]增强了AADL对构件实际功能行为的详细描述能力,以更好地支持功能行为验证和自动代码生成.
另外,时间正确性是实时系统重要的特征,不仅与AADL属性中定义的时间约束(时限、最坏执行时间等)有关,而且与调度算法、调度属性有关.AADL支持描述周期、非周期、偶发等任务模型,支持抢占与非抢占式调度策略,支持多种固定优先级、动态优先级调度算法,如RM(rate monotonic),DM(deadline monotonic), EDF(earliest deadline first)等.这些调度算法定义在处理器构件的属性中.
杨志斌等:复杂嵌入式实时系统体系结构设计与分析语言:AADL 903 2  AADL的研究现状
2.1  AADL语言的研究
为了适应不同的应用需求,AADL语言本身还需要进一步完善和扩展.AADL语言扩展及其语义的形式化目的是为了更好地支持系统体系结构建模与分析.
2.1.1  AADL语言扩展
AADL提供两种扩展方式:引入新属性或符号以及子语言(sub language)扩展.前者与具体应用相关,允
许用户和工具提供商为各种构件引入新的属性集,或专用于特殊分析的符号,如可调度分析工具Cheddar[13],通过定义新的属性集扩展AADL对更复杂调度算法的支持;后者则更严格,需要提议、发展以及被核准,才能成为AADL语言的一部分,一般以AADL附件的形式给出,需要提供子语言的语法和语义.已经被核准的附件有[10]: Graphical AADL Notation Annex,AADL Meta-Model and Interchange Formats Annex,Language Compliance and Application Program Interface Annex,Error Model Annex以及UML Profile Annex.正在发展中的附件有:Behavior Annex[11],ARINC653 Annex.
下面对AADL扩展附件进行概述.
AADL核心标准是文本形式的,Graphical AADL Notation Annex为AADL定义了一系列图形符号,构件、端口通信、数据共享访问、子程序调用、模式变换、端到端的数据流、属性、附件等元素都能用图形符号表示.但Behavior Annex还没有图形化.目前,AADL的主要建模工具OSATE/TOPCASED[14],STOOD[15]都支持图形化建模,而且能够方便地与文本表示相互转换.
Meta Model and Interchange Formats Annex定义了AADL元模型以及基于XML的模型交互格式.元模型定义了AADL语言的结构,也就是AADL模型的对象表示.这些对象表示采用XML标准的交互格式保存,以支持不同工具之间的互操作性.
自动代码生成是模型驱动开发的关键环节之一.Language Compliance and Application Program Interfac
e Annex为用户提供了AADL到Ada,C语言代码的转换规则.主要涉及线程、进程、数据等软件构件以及端口通信和子程序调用.
Error Model Annex定义了构件和连接建立故障模型的声明规则及语义.故障模型也由两部分组成:类型(error model type)和实现(error model implementation).故障类型可以声明故障状态、故障事件以及故障传播等;故障实现则定义故障状态的变迁,即构件在故障事件发生和故障传播过程中,故障状态是如何变化的.故障状态变迁本质上是一个随机自动机,附件提供Occurrence属性定义故障的发生概率.Error Model Annex可以与多种分析方法结合,如MA(Markov analysis)、DD(dependency diagrams)、ETA(event tree analysis)、FTA(fault tree analysis)、随机Petri网等,从而对系统的可靠性、完整性、可用性以及可维护性进行定量分析.
系统行为描述与验证是非常重要的.文献[16]提出,系统行为不仅依赖于AADL构件和连接所描述的静态体系结构,而且依赖于运行时环境.因此AADL提供了执行模型[16,17]的概念来描述运行时环境,用于管理和支持构件的执行,分为同步和异步两种,包括构件分发(dispatch)、同步/异步通信、调度、模式变换等行为.AADL核心标准的默认模式为带同步通信的抢占式调度,在这种模式下,执行模型和系统体系结构的结合能够保证系统行为的可预见性(predictability).线程、子程序构件是最小的执行和调度单元,AADL标准仅描述两者的对外功能接口,而构件内部具体执行行为无法描述.这样就导致在异步执行模型情况下,系统行为的可预见性难以保证.为了更好地分析异步模式下的系统行为,法国IRIT提出了Beh
avior Annex,对线程和子程序构件的具体行为进行详细描述.Behavior Annex通过状态、变迁来描述构件行为,变迁可以定义触发条件及变迁后的动作,条件和动作主要包括接收/发送数据、子程序调用、异步访问、执行时间、延迟时间等,且通过层次、并发状态来支持更复杂的行为描述.目前,AADL建模工具都支持Behavior Annex的描述.
我们认为Behavior Annex与执行模型有密切的关系[18].执行模型的分发机制定义了线程、子程序周期性或非周期性地读取数据、计算、发送数据,Behavior Annex则是对计算状态内的执行行为进行详细刻画.也就是说,