Next: Installation, Previous: Introduction, Up: Top
AADL stands for Architecture Analysis & Design Language. It can be expressed using graphical and textual syntaxes; an XML representations is also defined to ease the interoperability between tools.
AADL aims at allowing for the description of Distributed Real-Time Embedded (DRE) systems by assembling blocks separately developed. Thus it focuses on the definition of clear block interfaces, and separates the implementations from those interfaces. AADL allows for the description of both software and hardware parts of a system. Here is a brief presentation of the language; more information can be found on the AADL web site.
An AADL description is made of components. The AADL standard defines software components (data, threads, thread groups, subprograms, processes), execution platform components (memory, buses, processors, devices) and hybrid components (systems).
Components model well identified elements of the actual system. Subprograms model procedures such as those in C or Ada. Threads model the active part of an application (such as POSIX threads). Processes are memory spaces that contain the threads. Thread groups are used to create an hierarchy among threads. Processors model micro-processors and a minimal operating system (mainly a scheduler). Memories model hard disks, RAMs, etc. Buses model all kinds of networks, wires, etc. Devices model sensors, etc. Unlike other components, systems do not represent anything concrete; they actually create building blocks to help structure the description.
Component declarations have to be instantiated into subcomponents of other components in order to model an architecture. At the top-level, a system contains all the component instances. Most components can have subcomponents, so that an AADL description is hierarchical.
Each component has an interface (called component type) that provides features (e.g. communication ports). Components communicate one with another by connecting their features. To a given component type correspond zero or several implementations. Each of them describe the internals of the components: subcomponents, connections between those subcomponents, etc. An implementation of a thread or a subprogram can specify call sequences to other subprograms. This helps describe the whole execution flows in the architecture.
AADL defines a set of standard properties that can be attached to most elements (components, connections, features, etc.). Standard properties are used to specify things such as the clock frequency of a processor, the execution time of a thread, the bandwidth of a bus, etc. In addition, it is possible to add user-defined properties, to express specific description constraints.
By default, all elements of an AADL description are declared in a global name space. To avoid possible name conflicts in the case of a large description, it is possible to gather components within packages. Thus, packages help structure the description, while systems help structure the architecture. A package can have a public part and a private part; only the elements of the package can have a visibility on the private part. Packages can contain components declarations. So, they can be used to structure the description from a logical point of view. Unlike systems, they do not impact the architecture.