AADL An Introduction. (2006)
AADL An Introduction. (2006)
AADL An Introduction. (2006)
Peter H. Feiler
David P. Gluch
John J. Hudak
February 2006
Performance-Critical Systems
Technical Note
Unlimited distribution subject to the copyright.
CMU/SEI-2006-TN-011
This work is sponsored by the U.S. Department of Defense.
The Software Engineering Institute is a federally funded research and development center sponsored by the U.S.
Department of Defense.
NO WARRANTY
Use of any trademarks in this report is not intended in any way to infringe on the rights of the trademark holder.
Internal use. Permission to reproduce this document and to prepare derivative works from this document for internal use is
granted, provided the copyright and No Warranty statements are included with all reproductions and derivative works.
External use. Requests for permission to reproduce this document or prepare derivative works of this document for external
and commercial use should be addressed to the SEI Licensing Agent.
This work was created in the performance of Federal Government Contract Number FA8721-05-C-0003 with Carnegie
Mellon University for the operation of the Software Engineering Institute, a federally funded research and development
center. The Government of the United States has a royalty-free government-purpose license to use, duplicate, or disclose the
work, in whole or in part and in any manner, and to have or permit others to do so, for government purposes pursuant to the
copyright license under the clause at 252.227-7013.
For information about purchasing paper copies of SEI reports, please visit the publications portion of our Web site
(http://www.sei.cmu.edu/publications/pubweb.html).
Contents
Abstract.................................................................................................................xi
1 Introduction....................................................................................................1
1.1 Document Summary ...............................................................................1
1.2 Readers Guide to Technical Interests .................................................... 2
1.3 Conventions Used in this Document....................................................... 3
5 Software Components.................................................................................23
5.1 Process.................................................................................................23
5.1.1 Textual Representation............................................................. 23
CMU/SEI-2006-TN-011 i
5.1.2 Graphical Repesenation ........................................................... 24
5.1.3 Properties ................................................................................. 25
5.1.4 Constraints................................................................................ 25
5.2 Thread .................................................................................................. 26
5.2.1 Textual Representation............................................................. 26
5.2.2 Graphical Representation ......................................................... 27
5.2.3 Thread Execution...................................................................... 28
5.2.4 Properties ................................................................................. 29
5.2.5 Constraints................................................................................ 30
5.3 Thread Group ....................................................................................... 31
5.3.1 Textual Representation............................................................. 31
5.3.2 Graphical Representation ......................................................... 32
5.3.3 Properties ................................................................................. 33
5.3.4 Constraints................................................................................ 33
5.4 Data ...................................................................................................... 34
5.4.1 Textual Representation............................................................. 34
5.4.2 Graphical Representation ......................................................... 36
5.4.3 Properties ................................................................................. 36
5.4.4 Constraints................................................................................ 37
5.5 Subprogram.......................................................................................... 37
5.5.1 Textual Representation............................................................. 38
5.5.2 Graphical Representation ......................................................... 38
5.5.3 Properties ................................................................................. 40
5.5.4 Constraints................................................................................ 41
ii CMU/SEI-2006-TN-011
7 System Structure and Instantiation ...........................................................52
7.1 System Abstraction ...............................................................................52
7.1.1 Textual and Graphical Representations.................................... 52
7.1.2 Constraints................................................................................ 54
7.2 System Instance ...................................................................................54
7.3 Binding to Execution Platform Components ......................................... 55
9 Modes ...........................................................................................................86
9.1 Modal Specifications .............................................................................86
9.1.1 Modal Configurations of Subcomponents and Connections ..... 86
9.1.2 Modal Configurations of Call Sequences.................................. 89
9.1.3 Mode-Specific Properties.......................................................... 90
10 Flows.............................................................................................................91
CMU/SEI-2006-TN-011 iii
10.1 Flow Declarations ................................................................................. 91
10.2 Flow Paths............................................................................................ 92
10.2.1 Flow Path through a Component .............................................. 92
10.2.2 End-to-End Flow within a Component ...................................... 93
11 Properties..................................................................................................... 95
11.1 Property Declarations ........................................................................... 95
11.2 Assigning Property Values.................................................................... 96
11.2.1 Basic Property Associations ..................................................... 96
11.2.2 Contained Property Associations.............................................. 97
11.2.3 Inherited Property Associations .............................................. 100
11.2.4 Mode or Binding Specific Property Associations .................... 101
11.2.5 Property Values ...................................................................... 102
11.3 Defining New Properties..................................................................... 103
11.4 Property Type Declarations ................................................................ 104
11.5 Property Name Declarations .............................................................. 105
11.6 Property Constant Declarations.......................................................... 106
Appendix............................................................................................................ 117
Index................................................................................................................... 126
References......................................................................................................... 129
iv CMU/SEI-2006-TN-011
List of Figures
CMU/SEI-2006-TN-011 v
Figure 8-7: Oversampling with Immediate Connections ........................................ 65
vi CMU/SEI-2006-TN-011
List of Tables
Table 5-10: Legal Elements of Data Type and Implementation Declarations ......... 37
CMU/SEI-2006-TN-011 vii
Table 5-12: Example Textual and Graphical Subroutine Declarations.................... 39
Table 8-1: Sample Declarations of Data, Event, and Event Data Ports................ 58
Table 8-4: Sample Port Group with Mixed Port Types .......................................... 68
viii CMU/SEI-2006-TN-011
Table 8-10: Example Bus Access Connection Declarations ................................... 76
Table 9-1: Sample Graphical and Textual Specifications for Modes ..................... 87
CMU/SEI-2006-TN-011 ix
Table 12-1: Example Package Declaration........................................................... 109
x CMU/SEI-2006-TN-011
Abstract
In November 2004, the Society of Automotive Engineers (SAE) released the aerospace
standard AS5506, named the Architecture Analysis & Design Language (AADL). The AADL
is a modeling language that supports early and repeated analyses of a systems architecture
with respect to performance-critical properties through an extendable notation, a tool
framework, and precisely defined semantics.
The language employs formal modeling concepts for the description and analysis of
application system architectures in terms of distinct components and their interactions. It
includes abstractions of software, computational hardware, and system components for (a)
specifying and analyzing real-time embedded and high dependability systems, complex
systems of systems, and specialized performance capability systems and (b) mapping of
software onto computational hardware elements.
The AADL is especially effective for model-based analysis and specification of complex real-
time embedded systems. This technical note is an introduction to the concepts, language
structure, and application of the AADL.
CMU/SEI-2006-TN-011 xi
xii CMU/SEI-2006-TN-011
Section 1: Introduction
1 Introduction
This document, Part 1 of a use guide for the Architecture Analysis & Design Language
(AADL), provides an introduction to the language and AADL specifications. 1 The AADL is
defined in the Society of Automotive Engineers (SAE) standard AS5506. 2
1
The use guide for the AADL will be published initially as a series of technical notes.
2
For more information on the development, ongoing applications, and future plans of the AADL, go
to http://www.aadl.info. To purchase a copy of the standard, go to http://www.sae.org/servlets
/productDetail?PROD_TYP=STD&PROD_CD=AS5506.
CMU/SEI-2006-TN-011 1
Section 1: Introduction
Section
Content Summary
Number
10 Section 10 describes the use of the AADL flows concept and presents
examples of the specification of abstract flows throughout a system.
The Appendix (pages 117125) provides tabular summaries of the features, components, and
built-in properties of the language.
5.4, 5.5, 8.3.1, 8.3.2, 8.4, Modeling Application SoftwareThese sections address data
and 8.5 and subprogram components and their interactions (e.g., calls
and component access.
5.1, 5.2, 5.3, 8.1, 8.2, Execution Tasking and ConcurrencyThese sections present
8.3.1, 8.3.2, and 8.4.2 relevant aspects of runtime interaction, coordination, and timing
associated with multiple execution paths.
2 CMU/SEI-2006-TN-011
Section 1: Introduction
Table 1-2: Technical Interests and Relevant Sections in this Document (cont.)
10, 11.3, 11.4, and 11.5 Analysis AbstractionsThese sections discuss capabilities that
facilitate analysis of a system architecture.
CMU/SEI-2006-TN-011 3
Section 2: SAE AADL Overview
The SAE AADL standard provides formal modeling concepts for the description and analysis
of application systems architecture in terms of distinct components and their interactions. The
AADL includes software, hardware, and system component abstractions to
specify and analyze real-time embedded systems, complex systems of systems, and
specialized performance capability systems
map software onto computational hardware elements
The AADL is especially effective for model-based analysis and specification of complex real-
time embedded systems.
In addition to interfaces and internal structural elements, other abstractions can be defined for
a component and system architecture. For example, abstract flows of information or control
can be identified, associated with specific components and interconnections, and analyzed.
These additional elements can be included through core AADL language capabilities (e.g.
defining new component properties) or the specification of a supplemental annex language. 3
The component abstractions of the AADL are separated into three categories:
1. application software
a. thread: active component that can execute concurrently and be organized into
thread groups
b. thread group: component abstraction for logically organizing thread, data, and
thread group components within a process
c. process: protected address space whose boundaries are enforced at runtime
d. data: data types and static data in source text
e. subprogram: concepts such as call-return and calls-on methods (modeled using a
subprogram component that represents a callable piece of source code)
3
Annex libraries enable a designer to extend the language and customize an AADL specification to
meet project- or domain-specific requirements. An annex document is an approved extension to the
core AADL standard. [SAE 06a].
4 CMU/SEI-2006-TN-011
Section 2: SAE AADL Overview
The AADL standard includes runtime semantics for mechanisms of exchange and control of
data, including
message passing
event passing
synchronized access to shared components
thread scheduling protocols
timing requirements
remote procedure calls
In addition, dynamic reconfiguration of runtime architectures can be specified using
operational modes and mode transitions.
AADL supports the early prediction and analysis of critical system qualitiessuch as
performance, schedulability, and reliability. For example, in specifying and analyzing
schedulability, AADL-supported thread components include the predeclared 4 execution
property options of periodic, aperiodic (event-driven), background (dispatched once and
executed to completion), and sporadic (paced by an upper rate bound) events. These thread
characteristics are defined as part of the thread declaration and can be readily analyzed.
4
There is a standard predeclared property set named AADL_Properties that is part of every
AADL specification [SAE 06a].
CMU/SEI-2006-TN-011 5
Section 2: SAE AADL Overview
Within the core language, property sets can be declared that include new properties for
components and other modeling elements (e.g. ports and connections). By utilizing the
extension capabilities of the language, too, additional models and properties can be included.
For example, a reliability annex can be used that defines reliability models and properties of
components facilitating a Markov or fault tree analysis of the architecture [SAE 06b]. This
analysis would assess an architectures compliance with specific reliability requirements.
Collectively, these AADL properties and extensions can be used to incorporate new and
focused analyses at the architectural design level. These analyses facilitate tradeoff
assessments among alternative design options early in a development or upgrade process.
Application components have properties that specify timing requirements such as period,
worst-case execution time, deadlines, space requirements, arrival rates, and characteristics of
data and event streams. In addition, properties identify the following:
source code and data that implement the application component being modeled in the
AADL
constraints for binding threads to processors, source code, and data onto memory
The constraints can limit binding to specific processor or memory types (e.g., to a processor
with DSP support) as well as prevent colocation of application components to support fault
tolerance [Feiler 04].
6 CMU/SEI-2006-TN-011
Section 3: AADL Language Abstractions
The core language concepts and key specification elements of AADL are summarized in
Figure 3-1. In AADL, components are defined through type and implementation
declarations. A Component Type declaration defines a components interface elements and
externally observable attributes (i.e., features that are interaction points with other
components, flow specifications, and internal property values). A Component
Implementation declaration defines a components internal structure in terms of
subcomponents, subcomponent connections, subprogram call sequences, modes,
flow implementations, and properties. Components are grouped into application
software, execution platform, and composite categories. Packages enable the organization of
AADL elements into named groups. Property Sets and Annex Libraries enable a designer to
extend the language and customize an AADL specification to meet project- or domain-
specific requirements. 5
Components
data
Component Type subprogram
Component Type
Component type
identifier type
Component thread
identifier
extends
component category
{component_type} ports thread group
extends
component category
extends{component_type}
features access process
features
extends
flows
features (is)
flows
features (is) subprogram memory
properties
subcomponents (requires) parameter
properties
subcomponents (requires) device
processor
bus
system
Package
Package
public
Component implementation public
Component implementation - declarations
PropertySet
Set - declarations
Property identifier private
property types identifier private
property types extends {component implementation} - declarations
property definitions extends {component implementation} - declarations
property definitions refines type
constants refines type
constants subcomponents
subcomponents port
connections
connections access
call sequences
call sequences parameter Annex
modes Annex
modes Library
flows Library
flows
properties
properties modes
mode transitions
5
Annex libraries enable a designer to extend the language and customize an AADL specification to
meet project- or domain-specific requirements. An annex document is an approved extension to the
core AADL standard.
CMU/SEI-2006-TN-011 7
Section 3: AADL Language Abstractions
3.1 Components
Components form the central modeling vocabulary for the AADL. Components are assigned
a unique identity (name) and are declared as a type and implementation within a
particular component category. A component category defines the runtime essence of a
component. There are three distinct sets of component categories:
1. application software
a. thread: a schedulable unit of concurrent execution
b. thread group: a compositional unit for organizing threads
c. process: a protected address space
d. data: data types and static data in source text
e. subprogram: callable sequentially executable code
2. execution platform
a. processor: components that execute threads
b. memory: components that store data and code
c. device: components that interface with and represent the external environment
d. bus: components that provide access among execution platform components
3. composite
a. system: a composite of software, execution platform, or system components
Each of the component categories is discussed in separate sections of this document. The
syntax and semantics of declarations in an AADL specification are discussed in Section 4.1.
thread <name>
extends
features
flows
properties
8 CMU/SEI-2006-TN-011
Section 3: AADL Language Abstractions
The extends subclause enables one component type declaration to build upon another. A
component declared as an extension inherits the characteristics of the original component
(i.e., it is a subclass of the original). Within a component declared as an extension of another
type, interfaces, flows, and properties can be added; partially declared elements of the
antecedent component type can be detailed; and properties can be modified (refined). These
qualities permit the modeling of variations in the interfaces of a family of related
components.
CMU/SEI-2006-TN-011 9
Section 3: AADL Language Abstractions
An annex enables a user to extend the AADL language, allowing the incorporation of
specialized notations within a standard AADL model. For example, a formal language that
enables an analysis of a critical aspect of a system (e.g., reliability analysis, security, or
behavior) can be included within an AADL specification. 6
Each of these elements is described in more detail in other sections of this document.
6
Annex libraries enable a designer to extend the language and customize an AADL specification to
meet project- or domain-specific requirements. An annex document is an approved extension to the
core AADL standard.
10 CMU/SEI-2006-TN-011
Section 4: AADL System Models and Specifications
From a user perspective, an AADL specification and its constituent declarations can be
expressed textually, graphically, in a combination of those representations, or as Extensible
Markup Language (XML). The AADL textual and graphical notations are defined by the
SAE AADL standard and its extensions [SAE 06a]. The XML form is defined in Extensible
Markup Language (XML) 1.0 (Third Edition) [W3C 04]. Figure 4-1 summarizes the
alternative representations of an AADL specification, showing sample textual, graphical, and
XML representations.
XML
<threadType name="data_processing">
<features>
<dataPort name="raw_speed_in"/>
<dataPort name="speed_out"
direction="out"/>
</features>
CMU/SEI-2006-TN-011 11
Section 4: AADL System Models and Specifications
7
The complete set of graphical symbols for AADL components is presented in Graphical AADL
Notation, a draft document at the time of the publishing of this technical note.
12 CMU/SEI-2006-TN-011
Section 4: AADL System Models and Specifications
Software
Application Software Execution
Platform Platform
device
data
process
memory
subprogram processor
Composite
system package
8
There is a standard predeclared property set named AADL_Properties that is a part of every
AADL specification [SAE 06a].
CMU/SEI-2006-TN-011 13
Section 4: AADL System Models and Specifications
In the example shown in Table 4-2, related type and implementation declarations are
grouped together. Individual declarations can be arranged in any order within an AADL
specification. For example, a component type declaration that includes a specific port
group as one of its interfaces (features) can precede that port groups type declaration.
An alternative organization might involve grouping together all type declarations. In addition,
all or some of the declarations shown in Table 4-2 can be partitioned into groups using
packages. The options provided by packages and their implications are discussed in
Section 12 (Organizing a Specification).
The excerpt in Table 4-2 contains one process and two thread component type
declarations. The process type definition has the component type identifier (name)
control_processing. Two data ports, in data port and out data port, are
declared for this process type. The sensor_data and command_data data types are
declared in individual data type declarations.
9
In the example specifications shown here and in Sections 512, we typically follow the pattern of
displaying the textual representation followed by the graphical representation in portions of the
same table, as shown in Table 4-2. Where needed to provide clarification, we have placed the
textual and graphical representations in separate tables and figures.
14 CMU/SEI-2006-TN-011
Section 4: AADL System Models and Specifications
process control_processing
features
input: in data port sensor_data;
output: out data port command_data;
end control_processing;
10
Comment lines in an AADL specification are prefaced by two dashes (--).
CMU/SEI-2006-TN-011 15
Section 4: AADL System Models and Specifications
input output
control_processing
control_processing.speed_control
control_input control_output
input output
component_category type_identifier c
features
flows
properties
end type_identifier ;
component_category type_identifier d
extends unique_component_type_identifier
features
flows
properties
end type_identifier ;
16 CMU/SEI-2006-TN-011
Section 4: AADL System Models and Specifications
process simple_speed_control e
features
raw_speed: in data port speed_type;
toggle_mode: in event port;
throttle_cmd: out data port throttle_data;
flows none;
end simple_speed_control;
data speed_type
end speed_type;
data throttle_data
end throttle_data;
thread system_management
features
in_data: in data port;
end system_management;
The component type classifier (name) of the type follows the component category
reserved word. A component type declaration may contain up to four subclauses that are
identified with these reserved words:
features: specifies the interaction points with other components, including the inputs
and accesses required by the component and all the outputs and items the component
provides
flows: defines specifications of logical flows through the component from incoming
interaction points to outgoing interaction points (These flows can be used to specify end-
to-end flows without having to expose or have available any implementation detail
of the component. Flows can trace data, control, or mixed flow by connecting event and
data ports.)
properties: specifies properties of the component that apply to all instances of this
component unless overwritten in implementations or extensions
extends: is used where a type extends another type, as shown for the thread type
data_management in Table 4-3
If there are no entries under the subclause reserved words features, flows, or
properties, they may be omitted, or the reserved word statement none can be used to
signify explicitly that there are no entries. For example, the reserved word subclause flows
is omitted in the thread type declaration for data_management and none is used in the
CMU/SEI-2006-TN-011 17
Section 4: AADL System Models and Specifications
other empty subclause cases in Table 4-3. The use of none explicitly designates that the
subclause is empty. The use of none avoids the misinterpretation of a developers accidental
omission of a subclause declaration as intentional.
In Table 4-3, these declarations under the features subclause in the type declaration for
simple_speed_control define ports for the type:
A component type declaration is terminated by the reserved word end followed by the
components type classifier and a semicolon (;).
In the sample declaration (e in Table 4-4), a thread implementation with the name
control_laws.control_input is declared as an implementation of the type
control_laws. The implementation name is formed using the type identifier
followed by a specific identifier for the implementation. These are separated by a period
(.). Within the control_laws.control_input declaration, a single data
subcomponent is declared, the reserved word statement (none) is used for the calls
subclause, and the other subclauses are omitted.
18 CMU/SEI-2006-TN-011
Section 4: AADL System Models and Specifications
thread control_laws e
end control_laws;
data static_data
end static_data;
For example, a component type may be declared within a package and used in multiple
subsystem declarations. This is shown in Table 4-5 where the package
acutators_sensors includes a device speed_sensor that is used in the primary
and backup implementation of the system control. Note that the package name
with a double colon (::) is used to precede the device speed_sensor when it is
referenced (e.g., in the subcomponent declaration within the implementation
declarations). The comment line (-- ) is used to indicate other declarations that are not
shown. Packages are discussed in more detail in Section 12.1 (Packages).
CMU/SEI-2006-TN-011 19
Section 4: AADL System Models and Specifications
system control
end control;
11
The language can also be extended through annex documents, which are approved extensions to the
core AADL standard.
20 CMU/SEI-2006-TN-011
Section 4: AADL System Models and Specifications
4.9 Namespaces
There is a global namespace for an AADL specification. Packages and property set
names are in the global namespace. Their content can be named anywhere by preceding it
with the package name. Component declarations placed directly in an AADL specification
are visible only within that AADL specification. They are not accessible from within
packages or other AADL specifications; they are considered to reside in an anonymous
namespace. An AADL specification acts as a local work area whose component declarations
are only locally visible.
The flexibility to develop partial specifications can be used effectively during design,
especially in the early stages where details may not be known or decided upon. This
flexibility allows the syntactic checking of an incomplete specification and enables extended
semantic, domain, or project-specific analysis to be conducted. For example, the detailed
signal timing can be specified and signal latency can be analyzed without a complete or
detailed specification of the representation of data communicated through ports or other
elements of the design. Similarly, using the flow specification construct, end-to-end flows can
be analyzed without the system hierarchy being detailed to the level required for
instantiation.
A more detailed discussion of the extension and refinement capabilities and additional
example patterns is presented in Section 12.2 (Design Patterns).
CMU/SEI-2006-TN-011 21
Section 4: AADL System Models and Specifications
22 CMU/SEI-2006-TN-011
Section 5: Software Components
5 Software Components
Software component abstractions represent processed source text (executable binary images)
and execution paths through executable code. Executable binary images (i.e., executable code
and data) are the result of processing (such as compiling or linking) source text associated
with a component. A components source text may be written in a conventional programming
language (e.g., Ada, Java, or C), domain-specific modeling language (e.g.,
MatLab/Simulink), or hardware description language (e.g., VHDL). The source text may also
be an intermediate product of processing those representations (e.g., an object file).
5.1 Process
The process abstraction represents a protected address space, a space partitioning where
protection is provided from other components accessing anything inside the process. The
address space contains
executable binary images (executable code and data) directly associated with the
process
executable binary images associated with subcomponents of the process
server subprograms (executable code) and data that are referenced by external
components
A process does not have an implicit thread. Therefore, to represent an actively
executing component, a process must contain a thread.
CMU/SEI-2006-TN-011 23
Section 5: Software Components
information flow would be declared within the process implementation. Only the
subcomponent declarations of the process implementation of
control_processing.speed_control are shown explicitly. Other details of the
specification are not included. These omissions are legal for a syntactically correct partial
specification as discussed in Section 4.10 (Partial Specifications).
thread control_in
end control_in;
thread control_out
end control_out;
data set_point_data_type
end setpoint_data_type;
24 CMU/SEI-2006-TN-011
Section 5: Software Components
c o n t r o l _ p r o c e s s i n g . s p e e d _ c o n tro l
c o n t r o l_ c o n t r o l_
in p u t o u tp u t
s e t _ p o in t _ d a t a c o n t r o l_ t h r e a d _ g r o u p
5.1.3 Properties
For the process and its subcomponent threads, predeclared properties for processes
enable the specification of the
runtime enforcement of memory protection
relevant source file information
source file loading times
scheduling protocols
binding constraints
In addition, there are properties that can be inherited and shared by a processs
subcomponent threads (e.g., Period, Deadline, or Actual_Processor_Binding).
These include predeclared properties as well as new properties, defined as
prescribed in Section 11.3 (Defining New Properties). 12
5.1.4 Constraints
An AADL process represents only a protected address space. Consequently, processes
must contain at least one explicitly declared thread or thread group subcomponent. In
other words, it is not equivalent to a POSIX process that represents both a protected address
space and an implicit thread.
Table 5-2 summarizes the permitted type declaration and implementation declaration
elements of a process. A process can only be a subcomponent of a system component.
A summary of the allowed subcomponent relationships and features is included in the
Appendix on pages 117119.
12
There is a standard predeclared property set named AADL_Properties that is a part of every
AADL specification [SAE 06a].
CMU/SEI-2006-TN-011 25
Section 5: Software Components
5.2 Thread
A thread is a concurrent schedulable unit of sequential execution through source code.
Multiple threads represent concurrent paths of execution. A variety of execution
properties can be assigned to threads, including timing (e.g., worst case execution
times), dispatch protocols (e.g., periodic, aperiodic, etc.), memory size, and processor
binding.
Related type and implementation declarations are grouped together in this example.
This grouping of declarations is used for clarity and is not a required organization within a
specification.
26 CMU/SEI-2006-TN-011
Section 5: Software Components
thread data_input
end data_input;
process data_management
end data_management;
process implementation
data_management.autonomous_submarine_data_management
subcomponents
roll_input: thread data_input.roll_data_input;
pitch_input: thread data_input.pitch_data_input;
attitude_data_processing: thread
data_processing.integrated_data_processing;
end data_management.autonomous_submarine_data_management;
CMU/SEI-2006-TN-011 27
Section 5: Software Components
thread control_laws
end control_laws;
Instances of a thread can transition between various scheduling states as the result of
normal execution (e.g., preemption or completion of initialization) or faults/errors. There are
predefined entry points for each of the thread execution states: Initialize, Compute, and
Recover. The initialize and compute entry points are used for normal execution.
If thread execution results in a fault that is detected, the source text may handle the error. If
the error is not handled in the source text, the thread is requested to recover and prepare
for the next dispatch. If an error is considered unrecoverable, its occurrence is propagated as
an event through the threads predeclared out event data port Error (not shown in
Figure 5-2). All threads have an Error out event data port that allows an
unrecoverable error with descriptive information to be signaled.
28 CMU/SEI-2006-TN-011
Section 5: Software Components
5.2.4 Properties
Predeclared properties support the detailed description of each of the execution phases
of a thread. There are entry point properties that specify entry into code associated
with each of these execution phases (Figure 5-2):
CMU/SEI-2006-TN-011 29
Section 5: Software Components
Table 5-5 is an example of some property associations for a thread. Entry points and
associated execution times are declared for initialization and nominal execution.
5.2.5 Constraints
Table 5-6 summarizes the legal subclause declarations for a thread.
A thread executes within the protected virtual address space of a process, either as an
explicitly declared subcomponent or as a subcomponent of a thread group within a
process. Thus, threads must be contained within (i.e., only be a subcomponent of) a
process or a thread group. Multiple concurrent threads can exist within a process.
30 CMU/SEI-2006-TN-011
Section 5: Software Components
CMU/SEI-2006-TN-011 31
Section 5: Software Components
control. roll_axis
control_group error_detection
control_data
error_data
32 CMU/SEI-2006-TN-011
Section 5: Software Components
5.3.3 Properties
Predeclared thread group properties include declarations relating to the
specification of
source text
timing characteristics
relevant memory, processor, and connection bindings 13
For example, there are Actual and Allowed_Processor_Binding properties for
threads within the thread group, as well as properties that describe thread
handling during mode changes (e.g., Active_Thread_Handling_Protocol that
specifies the protocol to use for execution at the time instant of an actual mode switch). 14
5.3.4 Constraints
A thread group can be a subcomponent only of a process or another thread
group. Table 5-8 summarizes the permitted elements of a thread groups type and
implementation declarations.
13
The mapping of software to hardware components of a system that are required to produce a
physical system implementation is called binding [SAE 06a].
14
Actual_Processor_Binding, Allowed_Processor_Binding, and
Active_Thread_Handling_Protocol are predeclared properties in the standard
predeclared property set AADL_Properties.
CMU/SEI-2006-TN-011 33
Section 5: Software Components
5.4 Data
The AADL data abstraction represents static data (e.g., numerical data or source text) and
data types within a system. Specifically, data component declarations are used to represent
application data types (e.g., used as data types on ports and parameters)
the substructure of data types via data subcomponents within data implementation
declarations
data instances
Data types in the application system can be modeled by data component type and
implementation declarations. A data type (and implementation) declaration can
be used to define the data associated with ports and parameters. It is sufficient to model an
application source text data type with a data component type and relevant property
declarations; it is not necessary to declare a data implementation. Consistency checks
can be done on the data type associated with connections between ports and parameters.
Data subcomponent declarations can be used to define the substructure of data types and
instances. For example, fields of a record can be declared as data subcomponents in a data
implementation declaration.
As the commented description in the table explains, the first part of the table shows the data
type string used in a port declaration. Specifically, it shows the declaration of a data
type speed_data_type used to declare the data type for an input data port of the
process controller. The property association defines the size of the data type as
16 bits. Only relevant portions of the controller process type declaration are included.
The second part of the table shows an example of the declaration of the substructure of a
data implementation. The substructure of the data implementation
34 CMU/SEI-2006-TN-011
Section 5: Software Components
address.others consists of four data subcomponents with data types string and
int. In the third and final portion of the table, the thread implementation
declaration for address_processing.address_lookup includes a specific data
instance of the data implementation address.others as a subcomponent.
Notice that the data subcomponent declarations within the data implementation
address_others reference only the data type declaration. Subcomponents
subclauses can reference a data type declaration rather than a data implementation
declaration only if there is no more than one implementation of that data type.
Table 5-9: Sample Data Component Declarations
CMU/SEI-2006-TN-011 35
Section 5: Software Components
Table 5-9.
5.4.3 Properties
The predeclared properties for data components enable specification of
source text for the data component
name of the relevant data type declaration
name of the relevant static data variable in the source text
data size
concurrency access protocol for shared data
Base types can be modeled using data types by
36 CMU/SEI-2006-TN-011
Section 5: Software Components
5.4.4 Constraints
Table 5-10 summarizes the legal elements within data type and data implementation
declarations. Notice that only data components can be subcomponents within a data
component.
A data subcomponent subclause can reference a data type declaration that does not have a
data implementation. For example, the reference for the subcomponent street of
the data implementation address.others shown in Figure 5-4 is to the data
type string. However, if a data type declaration has more than one associated data
implementation declaration, both the component type and a component
implementation must be present in a component classifier reference in order to
completely identify the classifier.
5.5 Subprogram
The subprogram component abstraction represents sequentially executable source texta
callable component with or without parameters that operates on data or provides server
functions to components that call it. A subprogram and its parameter signature are
declared through component declarations but are not instantiated as subcomponents. Instead,
calls to subprograms are declared in calls sequences in thread and subprogram
implementations. More details on calls to subprograms and example calls declarations
are provided in Section 8.4 (Subprogram Calls).
CMU/SEI-2006-TN-011 37
Section 5: Software Components
subprogram scale_data
end scale_data;
subprogram implementation scale_data.scale_sensor_data
end scale_data.scale_sensor_data;
data accelerometer_data
features
scale_acc_data: subprogram scale_data.scale_sensor_data;
end accelerometer_data;
process sensor_systems
end sensor_systems;
process implementation sensor_systems.sensor_processing
subcomponents
acc_data: data accelerometer_data;
scale_it: thread process_data.scale;
end sensor_systems.sensor_processing;
38 CMU/SEI-2006-TN-011
Section 5: Software Components
sensor_systems.sensor_processing
acc_data
scale_acc_data
Table 5-12 shows both textual (upper portion) and graphical (lower portion) representations
of an example of a subprogram abstraction representing a server subprogram.
In the graphical representation of the specification shown in the lower portion of Table 5-12,
the subroutine entry point read_it is identified as a feature of the subcomponent thread
temp_reader. In addition, the call get_temp is shown in the thread
control.temp_control, and the binding of this call to the read_it subprogram
is shown with an arrowed line. This call can be a remote call, where the server
subprogram thread temp_reader is bound to a separate processor than the
calling thread linear01. More details on subprogram calls and a remote client-
server example can be found in Section 8.4 (Subprogram Calls).
CMU/SEI-2006-TN-011 39
Section 5: Software Components
process manage_data
end manage_data;
--
process implementation manage_data.manage_temp
subcomponents
temp_reader: thread read.read_temp;
end manage_data.manage_temp;
--
thread read
features
read_it: server subprogram acquire.temp;
end read;
--
thread implementation read.read_temp
end read.read_temp;
--
subprogram acquire
end acquire;
--
subprogram implementation acquire.temp
end acquire.temp;
control.temp_control
linear01
get_tem p
manage_data.manage_temp
server
subprogram call read_it tem p_reader
5.5.3 Properties
Predeclared subprogram properties include declarations relating to the
40 CMU/SEI-2006-TN-011
Section 5: Software Components
5.5.4 Constraints
Table 5-13 summarizes the permitted elements of a subprograms component type and
implementation declarations.
CMU/SEI-2006-TN-011 41
Section 6: Execution Platform Components
6.1 Processor
A processor is an abstraction of hardware and associated software that is responsible for
scheduling and executing threads. Processors can execute threads that are declared in
application software systems or threads that reside in components accessible from those
processors.
42 CMU/SEI-2006-TN-011
Section 6: Execution Platform Components
Processors themselves may have embedded software (e.g., an operating system) that
implements scheduling and other capabilities that support thread execution. Alternatively,
separate software components or other software virtual machines can supply this support,
provided that software is bound to memory that is accessible by the processor.
processor Intel_Linux
properties
Hardware_Source_Language=> VHDL;
Hardware_Description_Source_Text =>
"intel_vhdl_1, intel_vhdl_2";
end Intel_Linux;
--
processor implementation
Intel_Linux.Intel_Linux_01
subcomponents
HSRAM: memory RAM.Intel_RAM;
end Intel_Linux.Intel_Linux_01;
--
memory RAM
end RAM;
--
memory implementation RAM.Intel_RAM
end RAM.Intel_RAM;
In the textual representation, the properties subclauses define the hardware description
language (Hardware_Source_Language) and the files that contain the source text for
the hardware description (Hardware_Description_Source_Text). The
processor implementation declaration of Intel_Linux.Intel_Linux_01
includes a single memory subcomponent HSRAM. The memory subcomponents type and
implementation declarations are shown.
CMU/SEI-2006-TN-011 43
Section 6: Execution Platform Components
6.1.2 Properties
Predeclared processor properties can be used in a processor declaration. In
addition to the hardware description properties included in the example from Table 6-1,
other properties include a Scheduling_Protocol property that must have a
value if threads are bound to the processor and an Allowed_Dispatch_Protocol
property that specifies the dispatch protocols supplied by the processor. 15
6.1.3 Constraints
Table 6-2 summarizes the permitted elements of a processors type and implementation
declarations.
6.2 Memory
Memory abstractions represent storage components for data and executable code (i.e.,
subprograms, data, and processes are bound to memory components). Memory
components include randomly accessible physical storage (e.g., RAM, ROM) or complex
permanent storage such as disks or reflective memory. Since they have a physical runtime
presence, memory components have properties such as word size and word count.
15
There is a standard predeclared property set named AADL_Properties that is a part of every
AADL specification [SAE 06a].
44 CMU/SEI-2006-TN-011
Section 6: Execution Platform Components
CMU/SEI-2006-TN-011 45
Section 6: Execution Platform Components
6.2.2 Properties
Predeclared memory properties include
6.2.3 Constraints
Table 6-4 lists the permitted elements of memory type and implementation
declarations.
6.3 Bus
A bus represents hardware and associated communication protocols that enable interactions
among other execution platform components (i.e., memory, processor, and device).
For example, a connection between two threads, each executing on a separate
processor, is over a bus between those processors. This communication is specified
using access and binding declarations to a bus. Buses can be connected directly to
other buses to represent complex inter-network communications. Thus, connections between
components can be bound to a sequence of buses or a sequence of buses with intervening
processors.
46 CMU/SEI-2006-TN-011
Section 6: Execution Platform Components
Table 6-5 shows a portion of an AADL textual specification and its corresponding graphical
representation. Included in the example are a processor type declaration for
Intel_Linux and two bus type declarations for X_1553 and ARINC_629. The
processor type declaration for Intel_Linex includes a requires bus access
declaration for the bus X_1553.HS_1553 and the bus type declaration X_1553 includes
a requires bus access for the bus ARINC_629.HS_629. These required accesses
are shown in the graphic on the right side of Table 6-5. The implementation declarations
for both buses are also shown in the textual specification in Table 6-5.
6.3.2 Properties
There are a number of predeclared properties that can be used to specify important bus
characteristics:
CMU/SEI-2006-TN-011 47
Section 6: Execution Platform Components
6.3.3 Constraints
Table 6-6 summarizes the permitted elements of bus type and implementation
declarations.
6.4 Device
Device abstractions represent entities that interface with the external environment of an
application system. Those devices often have complex behaviors. They may have internal
processors, memory, and software that are not explicitly modeled. Alternatively, they may
require driver software that is executed on an external processor. A devices external driver
software may be considered part of a processors execution overhead, or it may be treated as
an explicitly declared thread with its own execution properties. Examples of devices
are sensors and actuators or standalone systems such as a Global Positioning System.
Table 6-7 shows an excerpt from an AADL specification that describes a device
Roll_Rate_Sensor interacting through a bus with a processor Intel_RTOS. The
processor executes the device driver for the Roll_Rate_Sensor. The requirement for
bus access is specified in the type declaration for Roll_Rate_Sensor. Similarly, the
need for bus access is declared within the processor type declaration for
Intel_RTOS. Notice that the out data port declared on the roll rate sensor device
provides the rate data from the sensor. A device can be used to represent a more complex
48 CMU/SEI-2006-TN-011
Section 6: Execution Platform Components
physical element, such as an engine where the ports can represent the engines sensors and
actuators.
processor Intel_RTOS
features
Roll_Rate_Sensor
A1553: requires bus access
X_1553.HS_1553;
end Intel_RTOS;
--
device Roll_Rate_Sensor
features
A1553: requires bus access
X_1553.HS_1553; X_1553.HS_1553
raw_roll_rate: out data port;
end Roll_Rate_Sensor;
--
bus X_1553
end X_1553;
--
bus implementation X_1553.HS_1553
end X_1553.HS_1553; Intel_RTOS
Devices can be viewed from different perspectives. They are integral to the execution
environment, both in terms of the application computing system (software and execution
platform components) and the physical environment in which the application system exists.
Thus, a device can be viewed as
a physical component that interfaces with the application software through ports (and
port groups), as shown in Figure 6-1
part of the application system interacting with execution platform components and the
application system, as shown in Figure 6-2
a unit in the environment that is accessed or controlled by the application system, as
shown in Figure 6-3
The complexity and nature of interactions of a device depend upon how it is included in
the architecture. If a device is included as part of the execution platform system, there are
numerous logical connections to the application system. If it is included as part of the
application system, there are physical connections via bus access across the system
hierarchy. In general, it is preferable to place the device declaration with the application
code, since the emphasis is on its interaction with the application and the number of
connections to the execution platform is then limited to the bus.
CMU/SEI-2006-TN-011 49
Section 6: Execution Platform Components
Physical Hardware
Processor Device
Application
Bus
Controlled Environment
Control System
Actuator
Plane
AutoPilot Sensor
The data port, port group, and connections abstractionsalong with their
graphical representationsdepicted in Figure 6-1 through Figure 6-3 are discussed in Section
8: Component Interactions.
6.4.2 Properties
Device properties encompass the dual software and hardware character of a device.
software-specific properties
- source code files
- source code language
- code size
- execution platform binding properties
execution platform (hardware) properties, such as those specifying the files that
contain the hardware description language for the device and the language used for that
description
properties for specification of the thread properties of the device software
executing on a processor, such as dispatch protocols and execution time-related
properties
50 CMU/SEI-2006-TN-011
Section 6: Execution Platform Components
6.4.3 Constraints
Table 6-8 summarizes the permitted elements of device type and implementation
declarations. A device component can only be a subcomponent of a system component. A
summary of the allowed subcomponent relationships and features is included on pages 117
119 in the Appendix.
CMU/SEI-2006-TN-011 51
Section 7: System Structure and Instantiation
This section presents the language abstractions for structuring and integrating AADL
elements into a complete representation of an application system that includes a system
component, component bindings, source code elements, and instantiation.
52 CMU/SEI-2006-TN-011
Section 7: System Structure and Instantiation
in te g r a te d _ c o n tr o l_ s y s te m
c o n t r o l_ p r o c e s s
c o n tr o l_ c o n tr o l_
in p u t o u tp u t
c o n tro l_ th r e a d _ g r o u p
n a v ig a tio n _ s y s te m
s e t_ p o in t_ d a ta
h s_m em o ry
r e a l_ tim e h ig h _ s p e e d _ b u s
_ p ro c e s s o r
CMU/SEI-2006-TN-011 53
Section 7: System Structure and Instantiation
7.1.2 Constraints
Table 7-2 summarizes the permitted elements of a system type and implementation
declarations. Notice that a system cannot contain a thread or thread group; they must
be contained in a process. A system can be a subcomponent only of another system
component. A summary of allowed subcomponent relationships and features is included on
pages 117119 in the Appendix.
Once instantiated, the application component instances can be bound to execution platform
components (i.e., each thread is bound to a processor; each source text, data
component, and port is bound to memory and each connection is bound to a bus if
necessary). There is no explicit textual representation for system instances. Instead,
system instances are created and stored as system instance models in XML. System
instance models can be operated on by analysis and generation tools.
In a fully specified system, the application components are modeled to the level of threads and
possibly refined to subprogram calls within threads. Similarly a fully specified
execution platform includes processors to execute application code, memory to store
54 CMU/SEI-2006-TN-011
Section 7: System Structure and Instantiation
application code and data, devices that represent the physical environment of the embedded
application, and buses that connect these components. Certain system analyses require fully
specified system models. For example, scheduling analysis cannot be performed until all the
application threads are specified and are bound to processors.
Early in the development process it is desirable to have partially specified system models and
be able to instantiate them for analysis. For example, we may represent an application
system as a collection of interacting subsystems without providing details of their
implementation. Subsystems are modeled as system components or process components.
We can instantiate this partial application system together with an execution platform
model into a partial system instance model. We can assign resource budgets in terms of
CPU cycles and memory requirements to the application subsystems and resource capacities
to the execution platform. Given this data we can analyze various bindings of application
components to the execution platform and ensure that the budgets do not exceed the capacity.
We can also add flow specifications to individual subsystem components and end-to-end
flows to the application system. Based on these flow specifications, flow analyses such as
an end-to-end response time analysis can be performed without a fully detailed system
model. 16
There are three categories of binding properties that provide support for declaring:
1. allowed bindings
2. actual bindings
3. identified available memory and processor resources
For example, there is an Allowed_Memory_Binding predeclared property that
identifies possible memory components for binding and an Actual_Memory_Binding
predeclared property that specifies the memory component to which code and data from
source text is bound. The Available_Memory_Binding property specifies the set of
contained memory components that are available for the binding to a systems internal
components from outside the system. 17
16
For more information on analysis, see AADL publications and presentations at www.aadl.info.
17
Allowed_Memory_Binding and Actual_Memory_Binding are predeclared properties in
the property set AADL_Properties that is part of every AADL specification [SAE 06a].
CMU/SEI-2006-TN-011 55
Section 8: Component Interactions
8 Component Interactions
port connections (Sections 8.1 and 8.2): These are explicit relationships declared between
ports or between port groups that enable the directional exchange of data and
events among components.
component access connections (Section 8.3): These are explicit declarations that enable
multiple components access to a common data or bus component.
subprogram calls (Section 8.4): These are explicit declarations within component
implementations that enable synchronous call/return access to subprograms.
parameter connections (Section 8.5): These are relationships among data elements
associated with subprogram calls.
Interface elements are declared within the features section of a component type
declaration. Paths of interaction (i.e., connections) between interface elements are declared
explicitly within component implementations.
8.1 Ports
A port represents a communication interface for the directional exchange of data,
events, or both (event data) between components. Ports are classified as
data port: interfaces for typed state data transmission among components without
queuing
Data ports are represented by typed variables in source text. The structure of the
variable/array is defined by the data type [data classifier] on the ports.
Connections between data ports are either immediate or delayed.
event port: interfaces for the communication of events raised by subprograms,
threads, processors, or devices that may be queued
Examples of event port use include: triggers for the dispatch of an aperiodic
thread, initiators of mode switches, and alarm communications. Events such as alarms
may be queued at the recipient, and the recipient may process the queue content. Event
ports are represented by variables within source text that are associated with runtime
service calls.
event data port: interfaces for message transmission with queuing
These interfaces enable the queuing of the data associated with an event. An example
56 CMU/SEI-2006-TN-011
Section 8: Component Interactions
The graphical representations for data ports, event ports, and event data ports are summarized
in Figure 8-1.
Data port
in
out
in out
Event port
Table 8-1 has an example textual specification and corresponding graphical representation
that includes port and port connection declarations. Within component type specifications,
appropriate ports declarations are grouped together in the features section. Supporting
data type definitions are included at the end of the table. Many of the other details of the
specification are not shown. For example, declarations of data types used in data port
declarations are not included, as in the declaration of the port c_data_out where the
declaration of the data type processed_data is not shown.
In addition to user-defined ports, there are implicitly declared ports for threads. 18 For
example, Error is an implicitly declared out event data port for all threads and
may be declared as part of a connection involving a thread. In addition, there is an implicit
Complete out event port that, if connected, raises an event, signaling the
completion of a thread. Implicit ports can be used directly in connection declarations. They
are not included in a features subclause.
18
The predeclared ports for a thread are Dispatch, Complete, and Error [SAE 06a].
CMU/SEI-2006-TN-011 57
Section 8: Component Interactions
Graphically, connections are solid lines between the ports involved in the connection,
sometimes with adorned with double cross hatching. See Section 8.1.5 (Immediate and
Delayed Communications).
For example, in Table 8-1, the connection c_data_transfer is between the out data
port c_data_out of the thread input (written as input.c_data_out) and the
in data port c_data_in of the thread control_plus_output (written as
control_plus_output.c_data_in). The connections declaration brake_in:
event port brake -> input.brake_event; connects the in event port
brake of process implementation control.speed_control to the in
event port brake_event of the thread subcomponent input. A name for the
data port connection between control_plus_output.c_cmd_out and
throttle_cmd is not included in this example. The implicit event data port
Error is used in the connection error_connection. It is connected to the out event
data port Error_Signal but not declared explicitly as a feature in the originating
thread.
Table 8-1: Sample Declarations of Data, Event, and Event Data Ports
process control
features
speed: in data port raw_speed;
brake: in event port;
set_speed: in event data port raw_set_speed;
throttle_cmd: out data port command_data;
Error_Signal: out event data port;
end control;
thread control_in
features
speed_in_data: in data port raw_speed;
brake_event: in event port;
58 CMU/SEI-2006-TN-011
Section 8: Component Interactions
Table 8-1: Sample Declarations of Data, Event, and Event Data Ports (cont.)
set_speed_edata: in event data port raw_set_speed;
c_data_out: out data port processed_data;
end control_in;
thread control_out
features
c_data_in: in data port processed_data;
c_cmd_out: out data port command_data;
end control_out;
control.speed_control
input control_
c_data_out plus_output
speed throttle_cmd
speed_in_data
brake_event Error
set_speed
Error_Signal
set_speed_edata
CMU/SEI-2006-TN-011 59
Section 8: Component Interactions
In the case of a partially specified system, the system instance model is expanded through
the component hierarchy to the subcomponents for which no implementation detail is
provided, regardless of their component category. In this case, connection instances may be
between ports of system component instances or process component instances.
According to the AADL standard, those connection instances are not semantic connections,
but they are essential to certain analyses of partial system instance models.
Connection instances that are semantic connections are illustrated in Figure 8-2. In this
figure, data is communicated between two threads in different processes. The data
connection between the two threads is expressed by connection declarations that must follow
the component hierarchy. In other words, there is a connection declaration from the original
thread to its enclosing process, from that process to the second process, and from
that process to the contained destination thread. Note that threads cannot arbitrarily
communicate with other threads in the system. The enclosing process determines, through
the ports in its type declaration and the connection declarations to those ports, which data
from its threads should be passed on to threads in other processes.
In a system instance model, the sequence of data connection declarations from a thread
to its enclosing process, to the second process, and to the thread contained in the
second process results in a connection instance. If two threads are subcomponents
within the same process or thread group, the connection instance is represented by a
single connection declaration between those threads in the enclosing component
implementation. While there may be a series of port-to-port connections involved in a
data transfer (system instance connection) between two threads, data is transferred
directly from the sending thread to the receiving thread. From an application source
code perspective, the sending thread assigns a value to a variable/array and the receiving
thread receives that value in a corresponding variable/array.
60 CMU/SEI-2006-TN-011
Section 8: Component Interactions
connection declarations
Application System
read_thread scale_thread
collect_data_process scale_data_process
semantic connection
Figure 8-3 illustrates a connection instance in a partial system instance model. In this
model, the data collection process and the data scaling process have not been
detailed out. The data connection between the two processes results in a connection
instance in the system instance model. This connection instance is not considered a
semantic connection according to the AADL standard, but the connection instance can be
used in a fault propagation analysis or flow analysis of this partially specified system.
connection declaration
Application System
collect_data_process scale_data_process
connection instance
For event and event data ports, a source thread executes a Raise_Event call.
This call results in the immediate transfer of control for an event port and the immediate
transfer of both control and data for an event data port.
CMU/SEI-2006-TN-011 61
Section 8: Component Interactions
For immediate connections, data transmission is initiated when the source thread
completes and enters the suspended state. The value delivered to the in data port of a
receiving thread is the value produced by the sending thread at its completion. For an
immediate connection to occur, the threads must share a common (simultaneous) dispatch.
However, the receiving threads execution is postponed until the sending thread has
completed its execution. This aspect can be seen in Figure 8-4, where the immediate
connection specifies that the thread control must execute after the thread
read_data, within every 50 ms period. In addition, the value that is received by the
thread control is the value output by the most recent execution of the thread
read_data.
20Hz 20Hz
read_data control
Immediate connection
dictates execution order
Timeline
Ti (20Hz) Ti+1 (20Hz) Ti+2 (20Hz)
For the graphical timelines in Figure 8-4 through Figure 8-9, a horizontal bar above the
timeline that is labeled with a thread name represents the execution time of that thread.
The left edge represents the start and the right edge represents the termination of the
threads execution. A solid or segmented arrow between thread execution bars
represents a data transfer between threads. A segmented arrow represents a delayed (e.g.,
Figure 8-5) or a repeat transfer (e.g., Figure 8-6).
For the two threads illustrated in Figure 8-4, a partial textual specification is shown in Table
8-2. The connection immediate_C1 is declared as immediate using the single-headed
arrow symbol (->) between the out data port and in data port. Notice the
Period property association (50 ms) within each of the thread type declarations.
62 CMU/SEI-2006-TN-011
Section 8: Component Interactions
For a delayed port connection, the value from the sending thread is transmitted at its
deadline and is available to the receiving thread at its next dispatch. For delayed port
connections, the communicating threads do not need to share a common dispatch. In this
case, the data available to a receiving thread is that value produced at the most recent
deadline of the sending thread. If the deadline of the sending thread and the dispatch of
the receiving thread occur simultaneously, the transmission occurs at that instant. The
impact of a delayed connection can be seen in Figure 8-5, where the thread control
receives the value produced by the thread read_data in the previous 50 ms frame. A
shown in Figure 8-5, a delayed connection is symbolized graphically by double cross
hatching on the connection arrow between the ports.
For the two threads illustrated in Figure 8-5, a partial textual specification is shown in Table
8-3. This specification has some differences from the one in Table 8-2: the connection
delayed_C1 is declared as delayed using the double-headed arrow (->>) and the Period
property association is declared in a properties subclause within the process. This
association specifies that the value of 50 ms is the period of contained threads unless
overridden within an individual threads declaration.
CMU/SEI-2006-TN-011 63
Section 8: Component Interactions
20Hz 20Hz
read_data control
Data available at
deadline of read_data.
Timeline
Ti (20Hz) Ti+1 (20Hz) Ti+2 (20Hz)
Consider the example of two simultaneously dispatched threads read_data and control
shown in Figure 8-6 and Figure 8-7. In the case of a delayed connection, the value from
read_data is available at its deadline. It is received by the two executions of control
whose dispatch coincides with or follows that deadline (e.g., read_data may have a
64 CMU/SEI-2006-TN-011
Section 8: Component Interactions
preperiod deadline). Thus, the two executions of control occurring within an execution
frame of read_data receive the value produced in the preceding frame of read_data.
In contrast, consider the case of immediate connections as shown in Figure 8-7, the values
available for two sequential executions of control are the same, the value produced within
the 10 Hz execution frame of read_data. This result is accomplished by delaying the
execution of the first control within the frame until the completion of read_data.
Notice that this can only occur if both read_data and an execution of control can
successfully complete (i.e., meet deadline) within the execution frame of control.
10Hz 20Hz
read_data control
Timeline
Ti (20Hz) Ti+1 (20Hz) Ti+2 (20Hz)
Tj (10Hz) Tj+1 (10Hz) data value from
previous (10Hz) frame
Preemption & concurrency
are possible.
10Hz 20Hz
read_data control
Immediate connection
affects execution order. reads every value twice
same data value
read_data read_data
control control control
Timeline
Ti (20Hz) Ti+1 (20Hz) Ti+2 (20Hz)
Tj (10Hz) Tj+1 (10Hz)
CMU/SEI-2006-TN-011 65
Section 8: Component Interactions
control is the value produced by read_data at the end of its first execution after the
simultaneous dispatch, and the execution of control is delayed until read_data has
completed.
20Hz 10Hz
read_data control
control control
Timeline
Ti (20Hz) Ti+1 (20Hz) Ti+2 (20Hz)
Tj (10Hz) Tj+1 (10Hz) most recent data value
from previous (10Hz) frame
20Hz 10Hz
read_data control
control control
Timeline
Ti (20Hz) Ti+1 (20Hz) Ti+2 (20Hz)
Tj (10Hz) Tj+1 (10Hz)
8.1.7 Properties
A variety of predeclared port properties provide details on the interface represented by
the port, including properties relating to the
66 CMU/SEI-2006-TN-011
Section 8: Component Interactions
optional) or whether the component assumes the connection to always be in place. 19 Port-
specific execution time, deadline, and source code entrypoints can be specified for each port
to reflect that each may cause a different piece of code to be executed. Several properties
allow the queue characteristics of event and event data ports to be specified.
While it is permissible to omit the explicit declaration of the data type for a data or event
data port, the explicit declaration allows checking of consistency of data type and size
for the connections made between ports. Thus, the connection from the out data port of
the thread read to the in data port of the thread scale in Figure 8-3 requires
that the data type declaration for each of these ports and all of the intervening ports must be
the same for a complete system specification. However, incomplete port specifications are
permitted. For example, it is acceptable for one end of a connection not to have a data type
declared while the other end does. Similarly, one end of a connection can have just a data
component type while the other end has a data implementation with the same type.
19
Source_Name and Required_Connection are in the predeclared property set
AADL_Properties that is part of every AADL specification [SAE 06a].
CMU/SEI-2006-TN-011 67
Section 8: Component Interactions
The declarations in the Table 8-4 are excerpts from a complete specification and include only
relevant declarations and portions of declarations needed to show what is required in
specifying a specific port group. In the tables, port group type declarations are
shown in the left column and example references to the type and supporting declarations are
shown in the right column.
data c_form
end c_form;
A port group type can be declared as the inverse of another port group type. This
relationship is indicated by the reserved words inverse of and the name of a port
group type. The features of the inverted port group must be in the same order as in
68 CMU/SEI-2006-TN-011
Section 8: Component Interactions
the referenced port group but with the opposite directions. A port group type that is
named in an inverse of statement cannot itself contain an inverse of statement.
Thus, a chaining of inverses, such as B inverse of A and C inverse of B, is not permitted. An
example of the use of the key word inverse of is shown in Table 8-5.
Figure 8-10 contains graphical icons for port groups and their connections. The graphical
symbols of a port group represent the features declaration of the port group
within a component type declaration. Port groups can bundle different port types and
directions.
Port Group
(as a feature of a thread)
CMU/SEI-2006-TN-011 69
Section 8: Component Interactions
group can occur when going up or down the component hierarchy, but not within the same
level of the component hierarchy.
process_raw_data controller
subcomponents
process_raw_data: thread process_data.cc_process_raw_data;
controller: thread control.cc_control;
connections
d_to_c: port group process_raw_data.mc_out -> controller.mc_in;
end process_subsystem.cc_process_subsystem;
thread process_data
features
mc_out: port group mode_control_group;
end process_data;
thread control
features
mc_in: port group mode_control_group_inverse;
end control;
Port groups can be effective in grouping related data and connections. For example, the
individual outputs of multiple sensors (devices) within a sensor subsystem (grouped in a
system) can be bundled together into a single port group. In that instance, all of the
70 CMU/SEI-2006-TN-011
Section 8: Component Interactions
sensor data is transferred through a single connection declaration from the sensor subgroup to
a control processing system. The information provided by the ports within the port group
is distributed through separate connections to individual control processing subsystems.
8.2.4 Properties
Predeclared port group properties can be used to establish a port group as an
aggregate data port and define port group memory binding characteristics. Port
group connections can have properties that reflect the properties of the ports that
compose the port group. For example, there is a Source_Text property that
specifies the source files associated with the port group and an
Allowed_Memory_Binding property that specifies the set of memory components to
which data and event data ports within the port group can be bound.
20
Aggregate_Data_Port is a predeclared property for every AADL specification [SAE 06a].
CMU/SEI-2006-TN-011 71
Section 8: Component Interactions
data data_sets
end data_sets;
data logs
end logs;
Table 8-8 presents an example of data access connections declarations. The lower
portion of Table 8-8 is a graphical representation of these data access dependencies. The
example shows some of the declarations for the system implementation
basic_control.auto_cc that are relevant to the data access relationships for the
system. The thread subcomponent cc_algorithm of the process cc_control
requires access to the local data subcomponent comm_error_log
(logs.error_logs). In addition, the thread subcomponent comm_errors requires
access to the data subcomponent comm_error_log (logs.error_logs) of the
process cc_error_monitor. This connection is a remote connection across address
spaces, where the process cc_control provides access to its data subcomponent.
72 CMU/SEI-2006-TN-011
Section 8: Component Interactions
thread algorithm
features
error_log_data: requires data access logs.error_logs
{Required_Access => access read_write;};
end algorithm;
data logs
end logs;
process monitor
features
error_data_in: requires data access logs.error_logs
{Required_Access => access read_only;};
end monitor;
21
The predeclared properties Concurrency_Control_Protocol, Required_Access, and
Provided_Access are included in the property set AADL_Properties. This property set
declaration is part of every AADL specification [SAE 06a].
CMU/SEI-2006-TN-011 73
Section 8: Component Interactions
thread m_algorithm
features
c_error_data: requires data access logs.error_logs
{Required_Access => access read_only;};
end m_algorithm;
basic_control.auto_cc
requires data access to
cc_control
comm_error_log
(logs.error_logs read_write)
cc_algorithm
comm_error_log
provides data access to
comm_error_log
(logs.error_logs)
cc_error_monitor
74 CMU/SEI-2006-TN-011
Section 8: Component Interactions
CMU/SEI-2006-TN-011 75
Section 8: Component Interactions
Table 8-9: Basic Bus Access and Access Connection Declarations (cont.)
cruise_control_system.impl
driver_input
_unit throttle_
actuator
CCU
speed_
sensor
M555
CANBus
Table 8-10 illustrates how to model two subsystems with hardware components and bus
connections. Some of the specifications are not complete (e.g., type rather than
implementation classifiers are used in defining some of the components and
subcomponents). In the illustration, one subsystem is connected to the other by a bus
provided by the second subsystem. Specifically, the application system requires bus
access to the network systems 1553 bus. The bus access, requires, provides,
and connections are shown both graphically (lower portion of Table 8-10) and as AADL
text declarations.
Table 8-10: Example Bus Access Connection Declarations
system containing_system
end containing_system;
--
system implementation containing_system.impl
subcomponents
network: system network;
application: system application;
connections
bus access network.network_bus -> application.network_bus;
end containing_system.impl;
--
system network
features
network_bus: provides bus access B_1553;
end network;
--
system implementation network.impl
subcomponents
B_1553: bus B_1553;
connections
C01: bus access B_1553 -> network_bus;
end network.impl;
--
76 CMU/SEI-2006-TN-011
Section 8: Component Interactions
containing_system.impl
network
application
B_1553
PC_processor
In the current version of the AADL standard, subprograms are not declared as instances
through a subprogram subcomponent declaration. The need for such instances is inferred
from the calls and can take into account sharing of subprogram libraries across
processes. The specific subprogram called is declared through a property association of
the predeclared property Actual_Subprogram_Call. The example in Table 8-12
illustrates this principle.
CMU/SEI-2006-TN-011 77
Section 8: Component Interactions
Notice that subprograms may call other subprograms. This circumstance is shown in
Table 8-11 where the subprogram implementation adjust.level calls the
subprogram find.temp_values.
78 CMU/SEI-2006-TN-011
Section 8: Component Interactions
control.thermal_control
get_temp adjust_level
CMU/SEI-2006-TN-011 79
Section 8: Component Interactions
client_server_system.impl
server_process
8.4.3 Properties
Subprogram calls properties identify the allowed and actual server subprograms
involved in a remote server subprogram call. In addition, these properties can be
used to specify the allowed and actual binding of the calls to physical elements that support a
remote server subprogram call. If no values are assigned to these properties, the
subprogram call is a local call to a server subprogram. 22
22
In the AADL standard, the subprogram calls of all threads must either be local calls or
be bound to a server subprogram whose thread is part of the same mode, in a completely
instantiable system [SAE 06a].
80 CMU/SEI-2006-TN-011
Section 8: Component Interactions
Table 8-13 presents textual and graphical representations of the parameters and the
parameter connections associated with a calls sequence within a thread. In a
graphical representation
parameters are represented as solid arrows (f), like data ports
parameter connections are shown as solid lines () between parameters or
between a parameter and a port (on a containing thread of the subprogram
call)
subprogram calls are represented by ovals ( ) labeled with the call (e.g.,
scale) and called subprogram type
calls sequence is indicated by an arrow with an open arrow head () (Alternatively, a
calls sequence can be specified by the ordering of the calls from the left to the
right.)
Notice that the in event data port in_data of the thread scale_data is
connected to the parameter in_parameter of the subprogram scale. Parameters
can be connected to in data port, out data port, and event data port.
CMU/SEI-2006-TN-011 81
Section 8: Component Interactions
scale_data
parameter connections
call sequences
82 CMU/SEI-2006-TN-011
Section 8: Component Interactions
explicit data passing. These data reference mechanisms are described through data
requires/provides data access declarations in an AADL model.
For example, consider the annotated pseudocode and corresponding AADL textual
representation in Table 8-14. In the pseudocode, examples of subprogram calls with
data reference and the use of global data are shown. In the Passing by reference
section of pseudocode, the function scale modifies data (referenced with the pointer p1)
using the scale factor v1. In the second implementation of scale (the Global variable
section of Table 8-14), a parameter data value (the scale factor) is passed and a common
data element raw_data is scaled.
Within AADL, both of these options are represented with v1 as a parameter, whereas the
pointer p1 and the common data raw_data are represented as a data access feature of
the subprogram scale. The thread processing has a call to the subprogram
scale. A corresponding AADL representation for the Global variable pseudocode explicitly
shows the thread receiving the data value for v1 through the in data port scalar
and using that value in the subprogram call, as indicated by the parameter connection
VC1 in the thread. In contrast, the pointer reference to the data to be scaled is represented
as a data access in the subprogram type declaration for scale. The explicit
reference to raw_data in the subprogram scale is the requires statement in the
thread type declaration. The AADL specification allows an implementation using
either option shown in pseudocode.
CMU/SEI-2006-TN-011 83
Section 8: Component Interactions
84 CMU/SEI-2006-TN-011
Section 8: Component Interactions
maintenance.control
this:
log_access:
monitor
this:
errors reset_it
ErrorData
reset
errorTotal
CMU/SEI-2006-TN-011 85
Section 9: Modes
9 Modes
Modes can be used to represent alternative system configurations in a variety of ways. They
can establish
86 CMU/SEI-2006-TN-011
Section 9: Modes
There are two modes, idle and controlling, and three event ports in this example.
The idle mode is the initial mode. The event brought into the thread by event
port cc_engage results in a mode transition to the controlling mode (the thread
configuration that provides the functionality to maintain a set speed). The event carried
through the event port cc_resume_e1 also results in a switch to the controlling
mode using the previous value of the speed setting. Event port cc_brake results in an
exiting of the controlling mode to the idle mode.
control.cc_control
idle cc_engage
cc_brake
controlling cc_resume_e1
The example in Table 9-2 shows a multimode process where internal events result in mode
changes of a process. In the textual specification for the process
control_algorithms.impl, the modes section defines the two operational modes of
ground and flight and the transitions between them. The transitions are triggered by
out event ports from the thread controller that is a subcomponent of the
process implemenation control_algorithms.impl. The specification for the
process implementation includes in modes clauses that define the subcomponents
and connections active in each mode.
CMU/SEI-2006-TN-011 87
Section 9: Modes
In the upper right portion of the figure in Table 9-2, a graphic shows the modes and their
transitions that are triggered by the events from the controller thread. In that figure,
the flight mode configuration is shown in black and the ground mode is shown in gray.
This distinction illustrates that the ground_algorithms thread and its
connections are not part of the flight mode.
88 CMU/SEI-2006-TN-011
Section 9: Modes
control_algorithms
controller ground
flight
flight_
algorithms
ground_
algorithms
CMU/SEI-2006-TN-011 89
Section 9: Modes
90 CMU/SEI-2006-TN-011
Section 10: Flows
10 Flows
AADL flows specification capabilities enable the detailed description and analysis of an
abstract information path through a system. A complete path for an abstract information
flowan end-to-end flow implementationbegins at a source component and terminates
at a sink component. The specification of an end-to-end flow involves the declaration of the
elements of the flow (sources, sinks, and paths) and explicit implementation
declarations that describe the details of a complete path through the system.
A source component of a flow is characterized by the feature (e.g., port, port group, or
parameter) through which the flow emerges from the component. Similarly, a sink
component of a flow is characterized by the feature through which the flow enters the
component and terminates. Details of a flow path are described by identifying the entry
and exit features of each intermediary component and subcomponent involved in the flow.
CMU/SEI-2006-TN-011 91
Section 10: Flows
flow path
92 CMU/SEI-2006-TN-011
Section 10: Flows
flow path
flow path
interface_flow1
control_flow1
cruise_control
brake_event
C1 data_in C3 control_laws C5 throttle_setting
connections
CMU/SEI-2006-TN-011 93
Section 10: Flows
94 CMU/SEI-2006-TN-011
Section 11: Properties
11 Properties
components
subcomponents
features
connections
flows
modes
subprogram calls
A property has a name, type, and an associated value. Properties can be assigned
values through property association declarations.
There are built-in property types and predeclared properties in the AADL standard.
Collectively, these properties and property types encompass common attributes for
the elements of the language. For example, a predeclared property of a port is
Required_Connection, which is of type aadlboolean and has a value of true or
false. 23 Its predeclared (default) value is true. However, a property association can assign
the value false, allowing the port to be unconnected. A summary of AADL built-in
property types is included on page 122 in the Appendix.
23
Required_Connection is included in the predeclared property set named
AADL_Properties that is part of every AADL specification [SAE 06a].
CMU/SEI-2006-TN-011 95
Section 11: Properties
property set (Section 11.3): defines a named collection of property types, names, and
constants
Property type (Section 11.4) defines a property type and specifies the set of
acceptable values for properties of that type.
Property name (Section11.5) defines a property by declaring a name, identifying a
type for the property, and applying it to a category of element within the specification
(i.e., mode, port group, flow, port, server subprogram, or connection).
Property constant (Section 11.6) defines a name for a property value that can be
referenced in property expressions wherever the value itself is permissible.
Property name, property type, and property constant declarations must be contained within a
property set declaration.
Sample component property association declarations are shown in Table 11-1 where an
implementation speed_data of the thread type data_processing is declared
with associations for two standard properties. The Period property is assigned a
single value of 100 ms. The Compute_Execution_Time assigned value is a range. In
addition, the in data port declaration sensor_data includes a property association
that declares the port need not be connected, and the thread subcomponent declaration
for data_processing includes a property association declaring the initialization
execution time range for the thread (1 ms .. 2 ms).
96 CMU/SEI-2006-TN-011
Section 11: Properties
Access property associations are used to detail the character of subcomponent access,
both requires and provides. Table 11-2 shows two access property associations,
where the process control requires read_only access to set point data
data_sets.set_points and provides read_write access to its internal error
logs. This is a modification of an example from Table 8-7.
CMU/SEI-2006-TN-011 97
Section 11: Properties
Table 11-3 shows two contained property associations within the system
implementation cruise_control.impl. In the first association, the computation
time for the compute entry point of the subcomponent thread control_algorithm is
assigned the range of 2 ms.. 5 ms. The thread control_algorithm is contained
within the process control_laws that is a subcomponent of the system
cruise_control. In the second association, the Required_Connection property
is assigned the value false for the out data port of the contained thread adjust.
Table 11-3: Contained Property Associations
system cc_complete
properties
Period => 20ms;
end cc_complete;
--
system implementation cc_complete.impl
subcomponents
brake_pedal: device brake_pedal;
cruise_control: system cruise_control.impl;
throttle_actuator: device throttle_actuator;
connections
C1: event data port brake_pedal.brake_event ->
cruise_control.brake_event;
C2: data port cruise_control.throttle_setting ->
throttle_actuator.throttle_setting;
properties
Compute_Execution_Time => 2 ms.. 5 ms applies to
cruise_control.control_laws.control_algorithm;
98 CMU/SEI-2006-TN-011
Section 11: Properties
cc_complete.impl
brake_
pedal
Required_Connection => false
cruise_control
throttle_
actuator
data_in
control_laws
control_
adjust algorithm
out_port
Period => 20 ms
Period => 20 ms
Compute_Execution_Time => 2 ms..5ms
CMU/SEI-2006-TN-011 99
Section 11: Properties
Contained property associations are required when a property value involves a reference
to another part of a model. For example, the binding property of a thread must refer
to the processor to which it is bound. However, that reference is represented as a path
relative to the location at which the property association is specified. Thus, the
property association must be declared as contained property association attached to a
model component that is the common parent of the component being referenced and the
component to which the property value belongs.
Allowed_Processor_Binding =>
reference Avionics_platform.linux1
applies to Avionics_SW.guidance.observe
Avionics_sys: system
One should be cautious in using this implicit property assignment for subcomponents. An
inadvertent omission of a specific assignment for a contained component is not readily
detectable and may result in an incorrect property value assignment. In the example shown in
Table 11-3, Period for the thread adjust defaults to an execution time of 20 ms. If
the intention had been to have a Period of 10 ms, there would have to be an explicit
declaration for the Period of the adjust subcomponent.
100 CMU/SEI-2006-TN-011
Section 11: Properties
CMU/SEI-2006-TN-011 101
Section 11: Properties
Property value assignments can be indirect and used to centralize the declarations of system
parameters. For example, the property associations in Table 11-6 use the keyword value
to assign values to the Deadline and Period properties of the thread
algorithm.impl. In the property set timing, the property HiRate is defined
as a constant of the type Time with a value of 5 ms. Period is assigned the value of
HiRate, and the Deadline is assigned the value of Period. Thus, a change in all of
these assignments can be accomplished simply by changing the value of HiRate.
102 CMU/SEI-2006-TN-011
Section 11: Properties
Built-in property types are summarized on page 122 in the Appendix. Details on declaring
additional property types are discussed in Section 11.4.
Table 11-7 shows the form and content of a sample property set declaration
set_of_faults and includes examples of property name, property type, and property
constant declarations. The property named comm_error_status is defined as a
property of type aadlboolean (true or false) that applies to system and
device components. A property type Speed_Range is defined as a range of real
values from 0.0 mph..150.0 mph. The constant Maximum_Faults is defined as
the integer value 3.
CMU/SEI-2006-TN-011 103
Section 11: Properties
end set_of_faults;
A property type definition may be an AADL built-in property type, a specialized type
explicitly defined within the declaration, or a reference to previously defined property type.
In the examples shown in Table 11-8, the property type bit_error is defined as an
aadlboolean property type. The predefined aadlboolean property type has two legal
values, true and false. The property types fault_category and
fault_condition are defined as enumeration types. An enumeration property
type defines a specific set of identifiers as its legal values.
Type declarations can be more complex than simple base types. For example, the type
number_of_components is declared in the property set more_types as an
aadlinteger that ranges over the value 0 .. 25. The property boat_length is
declared as a type of aadlreal with the units of feet that ranges over the values of 7.5
104 CMU/SEI-2006-TN-011
Section 11: Properties
A property owner category can be a component (e.g., system, thread, device), mode, port
group, flow, port (event or data), server subprogram, parameter, or connections (port group,
event port, data port, access, or parameter).
Example property name declarations within a property set set_of_names are shown
in Table 11-9. Property name declarations can include the access and inherit options. A
property declared with the reserved word inherit indicates that a value is inherited
from a containing component, if a property value cannot be determined for a component.
CMU/SEI-2006-TN-011 105
Section 11: Properties
This inheritance can be seen in the declaration for the property critical_unit that is
declared as inherit and as type aadlboolean and applies to all component categories.
A property declared with the reserved word access is associated with access to a
subcomponent rather than to the data component itself. The property queue_access is
declared as a true-false access property for a data component. This can be used to
restrict required access to a data queue. The property
required_sensor_array_size is declared as type array that is declared within the
property set set_of_types that is shown in the lower portion of Table 11-9.
Similarly, the property dangerous_voltages is declared with a type
voltage_ranges that is declared in the property set more_types found in Table
11-8.
Here are the basic declaration forms for a property constant declaration:
106 CMU/SEI-2006-TN-011
Section 11: Properties
Some sample declarations are shown in Table 11-10, where, for the property set
limits_set,
CMU/SEI-2006-TN-011 107
Section 12: Organizing a Specification
12 Organizing a Specification
This section presents language constructs that can be used to organize an AADL specification
by grouping like elements using packages or design patterns.
12.1 Packages
A package is a named grouping of declarations and property associations that can be
used to organize a specification. Packages establish distinct namespaces. However, they do
not define an architectural hierarchy or design structure and cannot be declared inside other
packages.
A package is divided into public and private segments. Declarations in the public
segment are visible outside the package, whereas declarations in the private segment
are visible only within the package. To reference an element in the public segment from
outside a package, preface the elements identifier with the package name. In Table 12-1
for example, a process type compress_display_data contained in the public
segment of the package display_dynamics_set would be referenced from outside
the package as display_dynamics_set::compress_display_data.
Also in Table 12-1, the specification for the system display_management references
the compress_display_data process declared in the package
display_dynamics_set. The data component new_format declared in the
private segment of the package cannot be accessed from outside. However, the data
component display_data can be, since it is declared in the public segment of the
package.
108 CMU/SEI-2006-TN-011
Section 12: Organizing a Specification
data display_data
end display_data;
-- Elements accessible only inside the package are listed following
-- the key word private
private
data new_format
end new_format;
end display_dynamics_set;
A package name can include multiple identifiers separated by a double colon (::). Thus, a
package name like primary_control_system::roll_axis::control_components is permitted.
This naming flexibility can be useful for packages that have been developed independently
and have been assigned the same name. For example, consider two engineering teams
working on a project, team red and team blue. Each team develops a package with the name
sensor_control. These packages can be renamed team_red::sensor_control and
team_blue::sensor_control. 24 This would establish separate namespaces for each package
and allow references to components with the same name within each package. That is,
team_red::sensor_control::controller would reference a different declaration than
team_blue::sensor_control::controller. In addition, this flexibility can be used to associate
packages logically. For example, two packages roll_control and yaw_control can be
associated by renaming them aircraft::roll_control and aircraft::yaw_control.
Packages can be used to organize layers of a design. For example, a package can be
defined for a flight manager subsystem using constituent component subsystems, packages
24
The AADL standard states that A defining package name must be unique in the global namespace.
This means that the first identifier in a package name must be unique in the global namespace.
Succeeding identifiers in the package name must be unique within the scope of the previous
identifier [SAE 06a].
CMU/SEI-2006-TN-011 109
Section 12: Organizing a Specification
that contain generic (common) descriptions, or packages containing only data types (e.g., a
data dictionary). This concept is shown in the partial specification and packages of Table
12-2 where the Flight_Manager type declaration and declarations within the package
avionics_subsystems reference components defined in separate packages.
system Flight_Manager c
extends avionics_subsystems::Flight_Manager
end Flight_Manager ;
--
system implementation Flight_Manager.common
subcomponents
NSP : process avionics_subsystems::NavigationSensorProcessing;
GPS : device avionics_sensors::GPS.mil;
--
end Flight_Manager.common;
package avionics_subsystems d
public
system Flight_Manager
features
input_data: in data port avionics_data:: raw_data;
output_data: out data port avionics_data:: processed_data;
end Flight_Manager ;
--
process NavigationSensorProcessing
end NavigationSensorProcessing;
--
end avionics_subsystems ;
package avionics_sensors e
public
device GPS
end GPS;
--
device implementation GPS.mil
end GPS.mil;
--
end avionics_sensors;
110 CMU/SEI-2006-TN-011
Section 12: Organizing a Specification
package avionics_data f
public
--
data raw_data
end raw_data;
--
data processed_data
end processed_data;
--
end avionics_data;
In general, new features can be added; partially defined features, completed; and
property associations, added or modified. In the example in Table 12-3, the
Required_Connection property value is changed in the roll_control extension. 25
In the pitch_control extension, the Source_Name property association is added.
The refinement options for type extension declarations are summarized on page 124 in the
Appendix.
25
The default value for the predeclared property Required_Connection is true. However, it is
declared explicitly as true in this example to demonstrate the refinement of property associations.
CMU/SEI-2006-TN-011 111
Section 12: Organizing a Specification
112 CMU/SEI-2006-TN-011
Section 12: Organizing a Specification
read_it
reader
implements implements
read_it read_it
reader.temp reader.pressure
CMU/SEI-2006-TN-011 113
Section 12: Organizing a Specification
type
implementation
extends
Flight Control Flight Control
System System Redundant
implements implements
extends extends
Flight Control Flight Control Flight Control
System.basic System.UAV System.R_UAV
114 CMU/SEI-2006-TN-011
Section 12: Organizing a Specification
vote_of_others
output_of_other_01 error_vote
output_of_other_02
three-way
input_data output_data
The family of N-way Lane components depicted in Figure 12-2 is built upon extensions and
refinements of generic type-implementation pairs. The core pair is a two-way voting
generic type two-way and a generic implementation of that type two-way.g. The generic
two-way voting type and implementation are extended to create a three-way voting
generic type-implementation pair; the generic three-way voting type and
implementation are extended to create a four-way voting generic type-
implementation pair.
type
Generic type-
implementation pair.
implementation
extends extends
CMU/SEI-2006-TN-011 115
Section 12: Organizing a Specification
In cascading generic type declarations, features are partially defined, and basic
property associations are declared. Generic type declarations consist of the following
elements:
partially defined features that can be completed in the refinements of a specialized
extends type declarations
basic flow declarations that can be used throughout the family with modifications only to
the flow declaration property associations
general property associations that characterize a component
In creating the family of type-implementation pairs illustrated in Figure 12-2, for
instance, the two-way generic type is extended to create a three-way type by adding
features that are partially defined rather than complete (e.g., data ports without data
classifiers to handle the additional inputs from other lanes). The three-way generic
implementation results from the extension of the two-way generic implementation.
In this implementation extension, subcomponents, connections, modes, and
other elements are added. Generic declarations should be sufficiently general to allow
refinement by subsequent voting implementation extensions. The extension and
refinement capabilities for types and implementations are summarized on pages 124125 in
the Appendix.
These declarations result in specialized realizations of the generic type. The specific
implementation extensions (such as the three-way implementation generated from
the three-way.g implementation in Figure 12-3) refine the general pattern of their
associated generic implementations, providing all of the details required for instantiation. In
the extension subcomponents definitions are completed; and calls, connections,
flows, and modes are added.
three-way three-way_ref
three-way.g three-way_ref.impl
116 CMU/SEI-2006-TN-011
Appendix
Appendix
Component-Subcomponent Relationships
Table 13-1 summarizes the permitted componentsubcomponent relationships for each of the
component abstractions in the AADL.
CMU/SEI-2006-TN-011 117
Appendix
Allowed Features
Table 13-2 and Table 13-3 summarize the allowed features for each of the component
abstractions in the AADL.
118 CMU/SEI-2006-TN-011
Appendix
CMU/SEI-2006-TN-011 119
Appendix
Constraints Summary
Table 13-4 contains a summary of the legality rules for AADL components from Version 1.0
of the standard.
Features: Subcomponents:
server subprogram data
port thread
provides data access thread group
thread group requires data access Subprogram calls: no
Flow specifications: yes Connections: yes
Properties yes Flows: yes
Modes: yes
Properties yes
Features: Subcomponents:
server subprogram data
port thread
provides data access thread group
process requires data access Subprogram calls: no
Flow specifications: yes Connections: yes
Properties yes Flows: yes
Modes: yes
Properties yes
120 CMU/SEI-2006-TN-011
Appendix
Features Subcomponents:
requires bus access memory
Flow specifications: no Subprogram calls: no
memory Properties yes Connections: no
Flows: no
Modes: yes
Properties yes
Features Subcomponents:
requires bus access none
Flow specifications: no Subprogram calls: no
bus Properties yes Connections: no
Flows: no
Modes: yes
Properties yes
Features Subcomponents:
port/port group none
server subprogram Subprogram calls: no
device requires bus access Connections: no
Flow specifications: yes Flows: yes
Properties yes Modes: yes
Properties yes
Features: Subcomponents:
server subprogram data
port/port group process
provides data access processor
provides bus access memory
requires data access bus
system requires bus access device
Flow specifications: yes system
Properties yes Subprogram calls: no
Connections: yes
Flows: yes
Modes: yes
Properties yes
CMU/SEI-2006-TN-011 121
Appendix
122 CMU/SEI-2006-TN-011
Appendix
CMU/SEI-2006-TN-011 123
Appendix
124 CMU/SEI-2006-TN-011
Appendix
CMU/SEI-2006-TN-011 125
Index
Index
A
AADL reserved words.......................................................................................................................................... 123
aadlboolean..............................................................................................................................95, 102106, 122123
aadlinteger ...............................................................................................................................95, 102, 104, 122123
aadlreal ..........................................................................................................................................102, 104, 122123
aadlstring ...............................................................................................................................................102, 122123
Access...................................................................34, 36, 41, 46, 56, 7172, 76, 8384, 97, 105, 118119, 123124
Aggregate Data Port ............................................................................................................................................... 71
All (reserved word) ...................................................................................................................................... 105, 123
And (reserved word) ............................................................................................................................................ 123
Annex ..........................................................................................................................................4, 7, 10, 13, 20, 129
Application software
Data .................................................................................................................... 3436, 5859, 62, 7172, 8184
Process......................................................................................................................................................... 2326
Subprogram ......................................................................................................................................37, 41, 7780
Thread ..............................................................................................................................................2633, 52, 61
Thread group ............................................................................................................................................... 3132
Applies........................................................................................................................................................... 97, 105
B
Binding ............................................................................................................................25, 33, 55, 67, 71, 100102
Bus.................................................................................................................................................4648, 7477, 121
C
Calls.......................................................................................................................................................7779, 8485
Classifier............................................................................................................ 10, 1719, 32, 36, 37, 102, 122125
Component .................................................8, 9, 10, 12, 1617, 19, 21, 32, 35, 36, 50, 56, 57, 9093, 115, 117119
Component type.......................................................................................................................7, 8, 12, 16, 17, 9192
Connections ...................................................................................... 910, 12, 19, 23, 34, 50, 5658, 6072, 7477,
..........................................................81, 84, 8688, 92, 9598, 101, 105, 111112, 116, 122123, 125
Delayed ................................................................................................................................................. 62, 6466
Immediate.........................................................................................................................................6263, 6566
Constant...........................................................................................................................96, 102103, 106107, 123
Contained Property ................................................................................................................................... 79, 97100
D
Data ................................................................................................................ 3437, 5859, 62, 7172, 81 84, 120
Data port ..................................................................................................................................................... 5859, 71
Declarations......................................1213, 1620, 26, 30, 40, 5759, 68, 70, 72, 77, 9193, 9597, 104108, 125
Delta ..................................................................................................................................................................... 123
Device....................................................................................................................................................... 4851, 121
E
End ............................................................................................................ 9, 18, 21, 45, 6667, 78, 9193, 101, 123
Enumeration ..................................................................................................................................102, 104, 122123
Error.....................................................................................................................................................28, 5758, 129
126 CMU/SEI-2006-TN-011
Index
F
False.....................................................................................................................9596, 98, 103104, 106, 122123
Fault ...................................................................................................................................................................... 107
Features..................................................................................................................................................... 8, 118119
Flows .................................................................................................................................................. 89, 17, 81, 91
G
Group ................................................................ 1, 4, 8, 10, 12, 14, 19, 2325, 3033, 37, 41, 50, 52, 54, 60, 6771,
.........................................................................................................................91, 96, 105, 117119, 123124
I
Identifier ............................................................................................................................................................... 106
Implementation .................................................................................... 7, 9, 12, 1819, 26, 28, 44, 93, 112115, 125
In ......................................................................................................................................................................... 123
Inherit................................................................................................................................................ 9, 100, 105, 123
Initial................................................................................................................................................... 32, 8687, 123
Instance....................................................................................................................................................... 54, 6061
Instantiation ............................................................................................................................................................ 52
Interface .................................................................................................................................................................. 56
Inverse ................................................................................................................................................ 12, 68, 70, 123
Is (reserved word) ................................................................................................................................................ 123
L
List........................................................................................................................................................................ 123
M
Memory ........................................................................................................................................ 4446, 55, 71, 121
Method calls............................................................................................................................................................ 84
Modes ................................................................................................................................................. 2, 9, 78, 8689
N
Name......................................................................................................................................... 6667, 105106, 111
Namespace.................................................................................................................................................. 10, 19, 21
None ......................................................................................................................................................... 1718, 123
Not ........................................................................................................................................................................ 123
O
Of ......................................................................................................................................................................... 123
Or ......................................................................................................................................................................... 123
Out ...................................... 14, 18, 24, 28, 41, 5758, 6164, 67, 7071, 8182, 84, 87, 91, 98, 111112, 118, 123
P
Package..................................................................................................................................................... 12, 19, 109
CMU/SEI-2006-TN-011 127
Index
R
Range......................................................................................................................... 96, 98, 102103, 105, 122123
Reference....................................................14, 3132, 3435, 6768, 79, 81, 83, 100, 102, 104, 108110, 122124
Refined .................................................................................................................. 9, 18, 68, 111112, 115, 123125
Refines...................................................................................................................................10, 12, 19, 21, 123, 125
Refines type .......................................................................................................................................................... 112
Remote calls ........................................................................................................................................................... 79
Requires....................................................................................................... 45, 67, 7172, 76, 83, 97, 118119, 123
Reserved words..................................................................................................................................................... 123
S
Server................................................................................... 23, 39, 52, 55, 7980, 96, 105, 112, 118119, 122124
Set ................................................................................12, 1213, 20, 2425, 33, 55, 58, 6768, 7172, 87, 9597,
.......................................................................................................... 102104, 106108, 111, 113, 122123, 125
Sink........................................................................................................................................................... 91, 93, 123
Source...........................................................4, 23, 25, 28, 3334, 36, 38, 43, 50, 52, 58, 6062, 66, 71, 91, 93, 123
Subclause................................................................................................................................................ 30, 124125
Subcomponents......................................................4, 9, 10, 12, 14, 19, 23, 32, 3438, 41, 45, 52, 60, 6971, 76, 79,
....................................................................................... 87, 90, 92, 9598, 100, 115116, 123, 125
Subprogram ...................................................................................................................................37, 41, 7780, 120
System ....................................................................................................... 5, 11, 50, 5254, 6061, 7374, 121, 129
System Instance .......................................................................................................................................... 54, 6061
T
Thread............................................................................................................................................2633, 52, 61, 120
Thread group ............................................................................................................................................ 3132, 120
To ......................................................................................................................................................................... 123
True ................................................................................................................... 71, 95, 103106, 111112, 122123
Type....................................................................8, 12, 1617, 26, 6869, 9192, 104105, 111113, 115, 122, 124
U
Units ...................................................................................................................... 5, 10, 46, 102, 104105, 122123
V
Value .................................................................................................................................................................... 102
128 CMU/SEI-2006-TN-011
References
[Feiler 04] Feiler, P. H.; Gluch, D. P.; Hudak, J. J.; & Lewis, B. A. Embedded
System Architecture Using SAE AADL (CMU/SEI-2004-TN-005).
Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon
University, 2004. http://www.sei.cmu.edu/publications/documents
/04.reports/04tn005.html
[W3C 04] World Wide Web Consortium (W3C). Extensible Markup Language
(XML) 1.0 (Third Edition). http://www.w3.org/TR/2004
/REC-xml-20040204/ (2004)
CMU/SEI-2006-TN-011 129
Form Approved
REPORT DOCUMENTATION PAGE OMB No. 0704-0188
Public reporting burden for this collection of information is estimated to average 1 hour per response, including the time for reviewing instructions, searching
existing data sources, gathering and maintaining the data needed, and completing and reviewing the collection of information. Send comments regarding
this burden estimate or any other aspect of this collection of information, including suggestions for reducing this burden, to Washington Headquarters
Services, Directorate for information Operations and Reports, 1215 Jefferson Davis Highway, Suite 1204, Arlington, VA 22202-4302, and to the Office of
Management and Budget, Paperwork Reduction Project (0704-0188), Washington, DC 20503.
1. AGENCY USE ONLY 2. REPORT DATE 3. REPORT TYPE AND DATES COVERED
17. SECURITY CLASSIFICATION 18. SECURITY CLASSIFICATION OF 19. SECURITY CLASSIFICATION OF 20. LIMITATION OF ABSTRACT
OF REPORT THIS PAGE ABSTRACT
UL
Unclassified Unclassified Unclassified
NSN 7540-01-280-5500 Standard Form 298 (Rev. 2-89) Prescribed by ANSI Std. Z39-18 298-102