Dans les modèles UML, une contrainte est un mécanisme d'extension qui vous permet de détailler la sémantique d'un élément de modèle UML. Une contrainte détaille un élément de modèle en exprimant une condition ou une restriction dans une instruction textuelle à laquelle l'élément de modèle doit se conformer.
Exemple de contrainte : une condition {count > 10}. Une contrainte doit être créée au moment de la conception d'un système. Vous définissez la condition ou la restriction dans le corps de la contrainte.
En général, les contraintes ne portent pas de nom. Elles sont identifiées par le contenu de leur corps. Certaines contraintes couramment utilisées sont identifiées par des noms pour que le contenu de leur corps ne soit pas répété. La contrainte XOR s'applique lorsque plusieurs associations possèdent une connexion commune vers une classe.
Pour plus d'informations sur le langage OCL, lisez la spécification UML disponible sur le site Web du groupe OMG (Object Management Group). En règle générale, la syntaxe du corps ou des propriétés de langage du corps n'est pas appliquée.
Une contrainte s'affiche sous la forme d'un texte entre accolades ({}), dans un rectangle avec le coin supérieur droit plié.
Vous pouvez ajouter des contraintes à votre modèle pour les raisons suivantes :
Dans les modèles qui décrivent des systèmes logiciels, les contraintes représentent les conditions ou restrictions que vous ne pouvez par modéliser d'une autre façon.
Dans les modèles qui décrivent des systèmes logiciels prioritaires, les contraintes donnent une instruction sur la valeur relative ou absolue de l'heure pendant une interaction.
Les contraintes d'un modèle peuvent apparaître dans n'importe quel diagramme UML et dans les diagrammes à format libre.
Vous pouvez valider une contrainte. Le niveau de validation d'une contrainte dépend du type de la contrainte. Il existe trois types de contraintes :
La syntaxe et l'expression d'une contrainte sont validées si la contrainte possède le stéréotype «metaConstraint» appliqué ou est définie dans un profil.
Seule la syntaxe d'une contrainte est validée si celle-ci ne possède pas le stéréotype «metaConstraint» appliqué et n'est pas définie dans un profil.