![]() ![]() |
||||
|
||||
A feature is a part of a component type definition
that specifies how that component interfaces with
other components in the system. The four categories of features are: port, subprogram,
parameters, and subcomponent access.
Port features represent a communication interface
for the exchange of data and events between
components. Ports are classified into data ports, event ports, and event data ports. Port
groups
represent groups of component ports or port groups. Port groups can be used anywhere ports can
be used. Within a component, the ports of a port group can be connected to individually.
Outside
a component, port groups can be connected as a single unit.
The subprogram feature represents a call interface
for a service that is accessible to other
components. Server subprogram features represent subprograms that execute in their own
thread
and can be called remotely. Data subprogram features represent subprograms through which the
data component is manipulated. Call sequences (see Section 5.2) specify calls to subprogram
classifiers, data subprogram features, and server subprogram features.
Parameter features represent data values that
can be passed into and out of subprograms.
Parameters are typed with a data classifier reference.
Subcomponent access represents communication via
shared access to data and bus components.
A data or bus component declared inside a component implementation is specified to be
accessible to components outside using a provides access feature declaration. A component may
indicate that it requires access to a data or bus subcomponent declared outside utilizing a requires
access feature declaration.
Syntax
feature ::=
port_spec |
port_group_spec
|
server_subprogram_spec
|
data_subprogram_spec
|
subcomponent_access
|
parameter
feature_refinement ::=
port_refinement
|
port_group_refinement
|
server_subprogram_refinement
|
data_subprogram_refinement
|
subcomponent_access_refinement
|
parameter_refinement
Naming Rules
The defining identifier of a feature must be unique within
the interface namespace of the associated
component type.
Thread features may not be declared using the predeclared
ports names Dispatch, Complete
or Error.
Each refining feature identifier that appears in a feature
refinement declaration must also appear in
a feature declaration in the associated component type or one of its ancestors.
A feature is named in one of two ways. Within the
component implementations for a component
type, a feature declared in the type is named in the implementations by its identifier. Within
component implementations that contain subcomponents with features, a subcomponent feature is
named by the subcomponent identifier and the feature identifier separated by a . (dot).
Legality Rules
The feature classifier reference and the port direction
in a refined feature declaration must be
identical to the feature classifier reference and the port direction in the refined declaration.
In the case of data and event data ports, the refined
feature declaration in a component type
extension can complete an incomplete data classifier reference.
Feature refinements can associate new property values.
Each feature can be refined at most once in the same
component implementation or type
extension.
Semantics
A feature declaration specifies an externally accessible
element of a component. Features are
also visible from within component implementations associated with the component type that
contains the feature declaration.
A refined feature declaration may complete an incomplete
component classifier reference and
declare feature property associations. |
||||