9.5      Feature Group Connections

(1)   Feature group connections represent a collection of connections between groups of features of different components.

Syntax

-- connection between feature groups of two subcomponents or between
-- a feature group of a subcomponent and a feature group in the component type
feature_group_connection ::=
     feature group source_feature_group_reference 
        connection_symbol destination_feature_group_reference 
 
-- A feature group refinement can only add properties
-- The source and destination of the connection does not have to be repeated
feature_group_connection_refinement ::=
        feature group
 
feature_group_reference ::= 
        -- feature group in the component type 
      component_type_feature_group_identifier 
    | 
        -- feature group in a subcomponent 
      subcomponent_identifier . feature_group_identifier
    |   
        -- feature group element in a feature group of the component type
      component_type_feature_group_identifier . 
          element_feature_group_identifier

Naming Rules

(N1)     The connection identifier in a feature group connection refinement declaration must refer to a feature group named connection declared in an ancestor component implementation.

(N2)     A source or destination reference in a feature group connection declaration must reference a feature group declared in the component type, a feature group of one of the subcomponents, or feature group that is an element of a feature group in the component type. The subcomponent reference may also consist of a reference on a subcomponent array.

Legality Rules

(L1)      If the feature group connection declaration represents a component connection between sibling components, the feature group types must be complements.  This may be indicated by both feature group declarations referring to the same feature group type and one feature group declared as inverse of, by the feature group type of one feature group being declared as the inverse of the feature group type of the other feature group, or by the two referenced feature group types meeting the complement requirements as defined in Section 8.2. 

(L2)      The Classifier_Matching_Rule property specifies the rule to be applied to match the feature group classifier of a connection source to that of a connection destination.

(L3)      The following rules are supported for feature group connection declarations that represent a connection up or down the containment hierarchy:

·         Classifier_Match: The source feature group type must be identical to the feature group type of the destination.  This is the default rule.

·         Equivalence: An indication that the two classifiers of a connection are considered to match if they are listed in the Supported_Classifier_Equivalence_Matches property. Matching feature group types are specified by the Supported_Classifier_Equivalence_Matches property with pairs of classifier values representing acceptable matches.  Either element of the pair can be the source or destination classifier. Equivalence is intended to be used when the feature group types are considered to be identical, i.e., their elements match. The Supported_Classifier_Equivalence_Matches property is declared globally as a property constant.

·         Subset: An indication that the two classifiers of a connection are considered to match if the outer feature group has outcoming features that are a subset of outgoing features of the inner feature group, and if the inner feature group has incoming features that are a subset of incoming features of the outer feature group. The pairs of features are expected to have the same name.

(L4)      The following rules are supported for feature group connection declarations that represent a connection between two subcomponents, i.e., sibling component:

·         Classifier_Match: The source feature group type must be the complement of the feature group type of the destination.  This is the default rule.

·         Complement: An indication that the two classifiers of a connection are considered to complement if they are listed in the Supported_Classifier_Complement_Matches property. Matching feature group types are specified by the Supported_Classifier_Complement_Matches property with pairs of classifier values representing acceptable matches.  Either element of the pair can be the source or destination classifier. Complement is intended to be used when the feature group types are considered to be identical, i.e., their elements match. The Supported_Classifier_Complement_Matches property is declared globally as a property constant.

·         Subset: An indication that the two classifiers of a connection are considered to match if each has incoming features that are a subset of outgoing features of the other. The pairs of features are expected to have the same name.

A feature group may have a direction declared; otherwise it is considered bidirectional. The direction declared for the destination feature group of a feature group connection declaration must be compatible with the direction declared for the source feature group as defined by the following rules: 

(L5)      If the feature group connection declaration represents a connection between feature groups of sibling components, then the source must be an outgoing feature group and the destination must be an incoming feature group. 

(L6)      If the feature group connection declaration represents a connection between feature groups up the containment hierarchy, then the source and destination must both be an outgoing feature group. 

(L7)      If the feature group connection declaration represents a connection between feature groups down the containment hierarchy, then the source and destination must both be an incoming feature group.

(L8)      A feature group connection must be bidirectional or constrains the direction of the flow from the source and destination feature.

Standard Properties

Connection_Pattern: list of list of Supported_Connection_Patterns 
Connection_Set: list of Connection_Pair 
Transmission_Type: enumeration ( push, pull )
 
Allowed_Connection_Binding_Class: 
   inherit list of classifier(processor, virtual processor, bus, virtual bus, device, memory)
Allowed_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory)
Not_Collocated: record ( 
    Targets: list of reference (data, thread, process, system, connection);
    Location: classifier ( processor, memory, bus, system ); )
Actual_Connection_Binding: inherit list of reference (processor, virtual processor, bus, virtual bus, device, memory)

Semantics

(2)   These connections represent a collection of semantic connections between the individual features in each group.  A semantic feature connection is determined by a sequence of one or more individual connection declarations that follow the component containment hierarchy in a fully instantiated system from an ultimate source to an ultimate destination.  As the connection declarations follow the component containment hierarchy they may involve the aggregation of features into feature groups up the hierarchy and decomposition into individual features down the hierarchy. 

(3)   Feature groups and feature group connections may impose a restriction on the direction of the collection of features and connections they represent. 

Processing Requirements and Permissions

(4)   When an AADL model with a thread architecture and fully detailed feature groups is instantiated, each semantic connection of feature group elements is included in the instance model.  If the feature groups of such a model are incomplete a connection instance between the feature group instances is created. If the AADL model is not fully detailed to the thread level, connection instances are created between the leaf components in the system hierarchy.

 

Examples

package Example3

public

-- A simple example showing a system with two processes and threads.

data Alpha_Type

properties

   Source_Data_Size => 256 Bytes;

end Alpha_Type;

 

feature group xfer_plug

features

   Alpha : out data port Alpha_Type;

   Beta : in data port Alpha_Type;

end xfer_plug;

 

feature group xfer_socket

   inverse of xfer_plug

end xfer_socket;

 

thread P

features

   Data_Source : out data port Alpha_Type;

end P;

 

thread implementation P.Impl

properties

   Dispatch_Protocol=>Periodic;

   Period=> 10 ms;

end P.Impl;

 

process A

features

   Produce : feature group xfer_plug;

end A;

 

process implementation A.Impl

subcomponents

   Producer : thread P.Impl;

   Result_Consumer : thread Q.Impl;

connections

  daconn: port Producer.Data_Source -> Produce.Alpha;

  bdconn: port Produce.Beta -> Result_Consumer.Data_Sink;

end A.Impl;

 

thread Q

features

   Data_Sink : in data port Alpha_Type;

end Q;

 

thread implementation Q.Impl

properties

   Dispatch_Protocol=>Periodic;

   Period=> 10 ms;

end Q.Impl;

 

process B

features

   Consume : feature group xfer_socket;

end B;

 

process implementation B.Impl

subcomponents

   Consumer : thread Q.Impl;

   Result_Producer : thread P.Impl;

connections

  adconn: port Consume.Alpha -> Consumer.Data_Sink;

  dcconn: port Result_Producer.Data_Source -> Consume.Beta;

end B.Impl;

 

system Simple

end Simple;

 

system implementation Simple.Impl

subcomponents

   pr_A : process A.Impl;

   pr_B : process B.Impl;

connections

   fgconn: feature group pr_A.Produce <-> pr_B.Consume;

end Simple.Impl;

end Example3;