Substitution
Relationship between two Classifiers signifying that the substituting Classifier complies with the contract specified by the contract Classifier.

A Substitution is a relationship between two Classifiers, which signifies that the substituting Classifier complies with the contract specified by the contract Classifier. This implies that Instances of the substituting Classifier are runtime substitutable where instances of the contract Classifier are expected.

The Substitution relationship denotes runtime substitutability that is not based on specialization. Substitution, unlike specialization, does not imply inheritance of structure, but only compliance of publicly available contracts. A Substitution like relationship is instrumental to specify runtime substitutability for domains that do not support specialization such as certain component technologies. It requires that

  1. Interfaces implemented by the contract Classifier are also implemented by the substituting Classifier, or else the substituting Classifier implements a more specialized Interface type.
  2. that any Port owned by the contract Classifier has a matching Port (see Ports) owned by the substituting Classifier.

In Modelio, contrary to UML 2.0, Substitution derives from ModelElement. A Substitution is owned by its substituting Classifier.

: Substitution (architecture_autodiagram)
Figure 188 : Substitution (architecture_autodiagram)
SubstitutionUmlModelElementClassifier
Association
Description
Contract : Classifier [0..1]
Designates the Classifier that is substituted.
SubstitutingClassifier : Classifier [0..1]