4.9 Connections
The abstract Connection class represents a connection declaration of a connection between features of subcomponents, and between features of subcomponents and features of the enclosing component implementation.  In the latter case, the connection may refer to a feature in the port group type of a port group in the enclosing component implementation.  These classes are shown in Figure 23.
A connection has a source and a destination reference to features.  These references must accommodate for the fact that the features of subcomponents, component implementations, and of port groups are inherited.  This is achieved by a reference association to the feature as it is contained in the component type or port group type, and a reference association to the context in which the feature is referenced.  This context is represented by the FeatureContext class - a super class that has ComponentImpl, Subcomponent, and PortGroup as subclasses.
The concrete classes that are subclasses of the Connection class represent the connection declaration for each of the different feature types. The source and destination reference associations are declared for each concrete class to reflect the fact that a connection of a certain type can only connect features of the same type.  For example, a data port connection can only connect data ports.  The concrete connection classes are DataAccessConnection, BusAccessConnection, ParameterConnection, DataConnection, EventConnection, EventDataConnection, and PortGroupConnection.
All connection classes are subclasses of ModeMember, thus, have an inModes reference association to Mode objects. The Connection class also has an inModeTransitions reference association to ModeTransition objects (see Figure 28) to reflect the fact that connections can be specified to be active during mode transitions.
The source and destination reference associations are uni-directional, i.e., a connection refers to a port, but a port does not persistently maintain a reference to its connections.  Methods simply determine the connections from and to subcomponent ports, i.e., connections to other subcomponents or the enclosing component implementation, from the set of connections of the enclosing component implementation. Similarly, the connections going from and to a port of a component implementation to one of its subcomponents, is the subset of connections of the component implementation that has the port as a source or destination reference.
A parameter connection cannot only refer to parameters, but also to data and event data ports. This is represented in the meta model by the ParameterEnd class with the Parameter class, DataPort and EventDataPort class as subclasses.

Figure 25 Access Connections
Figure 25 shows the classes and associations for access connections.
Bus and data access connections cannot only refer to access features as well as to data or bus subcomponent declarations. This is represented in the AADL meta model by the DataAccessEnd and BusAccessEnd classes with the appropriate access feature and category-specific subcomponent as subclasses.
The context of a connection source and destination reference is represented the same way as for port connections.  Since at this time AADL does not support access features inside port groups, only subcomponents and component implementations are referenced as context in the case of parameter and access connections.