Transformations
Before an Qompass component can be deployed, there is a set of transformations that is applied
- Each port is translated into a tripel of a property, an operation returning a reference to the interface
provided by the port (if any) and an operation allowing to connect the port (if port has a required
interface).
- Parts: if a part is typed with an abstract component implementation or a component type, it cannot
directly be instantiated in some programming languages, notably C++ (in Java, attributes typed
with a class are always implictly references). For these, there are basically two options:
- Change the type of the part and replace it by a concrete implementation. Obviously, this can only
work, if the deployment uses always the same implementaiton for the part.
- Assure that the composite only holds a reference to the part, i.e. make the part a pointer and
let the bootloader instantiate the sub-parts. The advantage is that it always works, but would not
do something useful in the context of variable systems.
-
A component might either be a type or an implementation. The former is mainly a class with a set of ports
and no internal structure. It may inherit from other component types, but not from implementations.
The latter has to realize at least a subset of the services that are provided at its ports (if it does not define all, it
needs to be declared as abstract). The realization could be either done by an implementation written in a specific programming
language or the UML action language or by a delegation to an inner part.