4.1 AADL Specifications
An AADL specification is a set of declarations:  component classifier, port group classifier, annex library, package, and property-set.  Package and property set declarations are global declarations. The content of global declarations can be referenced by any declaration.  Component classifiers, port group types, and annex libraries that are declared directly in an AADL specification are anonymous declarations.  They can only be referenced by another anonymous declaration.    
Packages provide a way for organizing collections of component classifier, port group type, annex library declarations along with relevant property associations.
Property sets provide extensions to the core AADL that support additional modeling and analysis capabilities.
System instances are identified to processing tools and methodologies by referencing a system implementation component as the root of the system instance (see Section 12.1).
Syntax
AADL_specification ::=
    { AADL_global_declaration | AADL_declaration }+

AADL_global_declaration ::= package_spec | property_set

AADL_declaration ::=
    component_classifier
    | port_group_classifier
    | annex_library
   
component_classifier ::=
    component_type | component_type_extension |
    component_implementation | component_implementation_extension

port_group_classifier ::=
  port_group_type | port_group_type_extension
Naming Rules
The AADL has one global namespace.  The package and property set identifiers comprising this space must be unique.  These identifiers qualify the names of individual elements when they are referenced externally.  They can be referenced from other declarations and anonymous declarations (see below).  Package declarations represent labeled namespaces for component type, component implementation, port group type, and annex library declarations.   Property sets represent labeled namespaces for property type and property name declarations. 
An AADL specification has one anonymous namespace. In this are found the identifiers of component classifiers, port group classifiers, and annex libraries that are declared directly in an AADL specification.  These identifiers must be unique in the anonymous namespace.  Declarations of component classifiers and port group types can be referenced from other component classifier declarations in the anonymous namespace.  Any annex library items declared in the anonymous namespace are only accessible from annex subclauses in component classifiers in the anonymous namespace.
AADL declarations in an AADL specification can refer to packages and property sets that may be separately stored. Those packages and property sets are considered to be part of the global namespace. 
Defining identifiers in AADL must not be one of the reserved words of the language (see Section 13.7).
The AADL identifiers and reserved words can be in upper or lower case (or a mixture of the two) (see Section 13).
The AADL does not require that an identifier be declared before it is referenced. 
Semantics
An AADL specification provides a global namespace for packages and property sets and an anonymous namespace for component types, component implementations, annex libraries, and port group types.  Items in the global namespace and their content can be named by items in the global and in the anonymous namespace. Items in the anonymous namespace can only be named by items in the anonymous namespace.
Component type and component implementation declarations model execution platform and application software components of a system.  A component type denotes externally visible characteristics of a component, i.e., its features and its properties.  A component implementation denotes the internal structure, operational modes, and properties of a component.  A component type can have several component implementations.  This can be used for example to model product line architectures runing on different execution platforms.  Packages allow such declarations to be organized into separate namespaces. 
Port group types provide the definition of an interface to a component that represents a collection of ports or port groups defined within the component implementation (see Section 8.2).  This group of ports may be accessed externally as a single unit.
A property set is used to introduce new property types and properties (see section 10.1). They extend the predefined set of properties of the core AADL.
Declarations in an AADL specification can refer to packages and property sets declared in separately stored AADL specifications. This allows packages and property sets to be stored separately and used by multiple AADL specifications. Mechanisms for locating such separately declared packages and property sets are tool specific.
Processing Requirements and Permissions
A method of processing must accept an AADL specification presented as a single string of text in which declarations may appear in any order.  An AADL specification may be stored as multiple pieces of specification text that are named or indexed in a variety of ways, e.g. a set of source files, a database, a project library.  Preprocessors or other forms of automatic generation may be used to process AADL specifications to produce the required specification text. This approach makes AADL scalable in handling large models.