In order to define a subtype relationship on interfaces, consider an interface taken from a well-known programming language like Java or C#. In these languages, an interface specifies a set of signatures, consisting of an signature name, its parameter names and datatype, return types and exceptions. We use the same set of describing elements but in our model we have some constraints on the datatypes which can be used. As the external view of components is characterized by its interfaces, only interface references and an extensible set of basic data types (i.e., integer, string, ...) are allowed, but no component references.