As indicated before, there are three levels of component types. Figure 3.3 shows this hierarchy of component types. The provided component type is the most general kind of component type. Complete component types and implementation component types are further elements of the specialisation hierarchy. Complete component type (``component type'') inherits from the provided component type (``component type'') and implementation component type (``implementation type'') inherits from complete type.
The coloured bar ``type'' on the left hand side of figure 3.3 suggests how to understand the term type. While provided type and complete type conform to the classical understanding of type (cf. [19,20]), implementation types make prescriptions for the internal realisation of component types. The latter prescriptions usually are not seen as a part of a type definition. For example interfaces of OO-classes are considered as type definitions, while the implementations of methods are not.
Further more there is a conforms-relations between provided type and complete type and a second conforms-relation between complete type and implementation type. The conforms-relations are defined on the meta-model, but apply to model instances. More details on the conforms-relations are depicted in section .
If the type hierarchy would be extended below the implementation type, this would lead to a runtime type. Such a component type would make restrictions for the runtime attributes (e.g. number of runtime instances) of a component, analogue processing-description blocks in operating systems. This layer is not considered within the PCM - so far there is no research of the Palladio group concerned with the runtime attributes of components.