4.7 Features
The abstract Feature class represents AADL features.  This class is a subclass of PropertyHolder as well as NamedElement.  An abstract subclass AbstractPort represents ports, port groups, and parameters, i.e., all features that represent connection points for flow of data or events.  Port itself is an abstract class representing data ports, event ports, and event data ports.
Concrete subclasses of the Feature class represent each of the different feature types in AADL. These classes are DataPort, EventPort, EventDataPort, Parameter, Port Group, BusAccess, and DataAccess. The class hierarchy of features is shown in Figure 20.  The concept of an aggregate data port is not represented as a separate class, but through the Aggregate_Data_Port property on the port group. The figure also shows port group types, which will be elaborated in Annex C.4.8.
Port, parameter, and access features have a direction attribute.  In the case of ports and parameters it is an enumeration value of type PortDirection. In the case of data or bus access it is an enumeration value of type AccessDirection.
All features except event ports have classifier references.  These are represented by a single-valued reference association to the appropriate category-specific component classifier, or in the case of a port group to a port group type.  This reference is optional and can refer to either a component type or component implementation to accommodate incomplete declarations in AADL.
Feature refinement is represented by an association of a feature class to itself to represent the fact that a feature refinement can only refine a feature of the same concrete class.
Component category specific feature classes have containment associations to each concrete feature class that is acceptable content for the component category according to the AADL legality rules.  For application software components these are shown in Figure 21.  For example, a data component type can only contain those features that are specified as by containment association for the DataFeatures class, i.e., Subprogram and DataAccessSoftwareFeatures is an abstract class that defines the allowable features for its concrete subclasses for threads, thread groups, process, and system.
Figure 22 shows the containment constraints of features for the execution platform component categories. 
The containment association name reflects the concrete feature class resulting in its use as an XML element tag for the feature.  An ordering relationship is maintained across the concrete feature subclasses to record the declaration ordering (see Section Annex C.4.6).
graphic
Figure 20 Features
graphic
Figure 21 Software Category-Specific Feature Containment
graphic
Figure 22 Execution Platform-Specific Feature Containment
graphic
Figure 23 Port Connections