10. Properties
A property provides information about component types, component implementations, subcomponents, features, connections, flows, modes, and subprogram calls.  A property has a name, a type, and a value.  The property name declares a name for a given property along with the AADL components and functionality to which the property applies. The property type specifies the set of acceptable values for a property.  Each property has a value or list of values that is associated with the named property in a given specification.
A property set contains declarations of property types and property names that may appear in an AADL specification.  The two predeclared property sets in this standard define properties and property types that are applicable to all AADL specifications. User’s may define property sets that are unique to their model, project or toolset.  The properties and property types that are declared in user-defined property sets are accessed using their qualified name.  A property name declaration within a property set indicates the component types, component implementations, subcomponents, features, connections, flows, modes, and subprogram calls, for which this property applies. 
Properties can have associated expressions that are statically typed, and evaluate to a specific value.  The time at which a property expression is evaluated may depend on the property and on how a specification is processed.  For example, some expressions may be evaluated immediately, some after binding decisions have been made, and some reflect runtime state information, e.g., the current mode.  During analysis, all property expressions can be evaluated to known values, if necessary, by considering all possible runtime states.  A given property name may have a default expression.