Le concept d'une dépendance de substitution est apparu pour la première fois dans les spécifications UML 2.0. Une substitution est une réalisation de type, c'est-à-dire une autre manière d'implémenter un discriminant. Dans une dépendance de substitution, le client prend la place de la classe du fournisseur.
Une dépendance de substitution peut être particulièrement utile pour la personnalisation des modèles. Par exemple, vous pouvez personnaliser un système de distribution initialement conçu pour vendre des articles de sport, pour vendre désormais de la musique et des vidéos. Vous pouvez substituer un ensemble de produits à un autre alors que le reste de la conception du système reste identique.
Pour que la substitution puisse se faire, le discriminant substituant doit répondre au contrat que l'autre discriminant spécifie.
Comme le montre la figure suivante, une relation de substitution est représentée dans l'éditeur de diagramme par une flèche composée d'un trait tireté et d'une pointe ouverte qui part du discriminant d'implémentation vers le discriminant qui spécifie le contrat. Le mot clé «substitution» est attaché au connecteur.
