OCL: Object Constraint Language (Le langage de contraintes d’UML)
Diagrammes UML insuffisants
Pour spécifier complètement une application :
Diagrammes UML seuls sont généralement insuffisants
Nécessité de rajouter des contraintes
Comment exprimer ces contraintes ?
Langue naturelle mais manque de précision, compréhension pouvant être ambigü e
Langage formel avec sémantique précise : par exemple OCL
OCL : Object Constraint Language
Langage de contraintes orienté-objet
Langage formel (mais simple à utiliser) avec une syntaxe, une grammaire, une sémantique (manipulable par un outil)
S’applique sur les diagrammes UML
Le langage OCL
OCL fait partie de la norme UML 1.3 (et sup.) de l’OMG (Object Management Group)
OCL en version 2.0 : spécification à part de la norme UML 2.0, en cours de normalisation par l’OMG
OCL permet principalement d’exprimer deux types de contraintes sur l’état d’un objet ou d’un ensemble d’objets :
Des invariants qui doivent être respectés en permanence
Des pré et post-conditions pour une opération :
Précondition : doit être vérifiée avant l’exécution
Postcondition : doit être vérifiée après l’exécution
Attention : une expression OCL décrit une contrainte à respecter et pas le « code » d’une méthode
Utilisation d’OCL
OCL peut s’appliquer sur la plupart des diagrammes UML Il sert, entre autres, à spécifier des :
Invariants sur des classes
Pré et postconditions sur des opérations
Gardes sur transitions de diagrammes d’états ou de messages de diagrammes de séquence / collaboration
Des ensembles d’objets destinataires pour un envoi de message
Des attributs dérivés
Des stéréotypes
…
Contexte
Une expression OCL est toujours définie dans un contexte
Ce contexte est une instance d’une classe
Mot-clé : context
Exemple :
context Compte
L’expression OCL s’applique à la classe Compte, c’est-à-dire à toutes les instances de cette classe
Invariants
Un invariant exprime une contrainte sur un objet ou un groupe d’objets qui doit être respectée en permanence
Mot-clé : inv:
Exemple :
context Compte
inv: solde > 0
Pour toutes les instances de la classe Compte, l’attribut solde doit toujours être positif
Pré et postconditions
Pour spécifier une opération :
Précondition : état qui doit être respecté avant l’appel de l’opération
Postcondition : état qui doit être respecté après l’appel
Mots-clés : pre: et post:
Dans la postcondition, deux éléments particuliers sont utilisables :
Attribut result : référence la valeur retournée par l’opération
mon_attribut@pre : référence la valeur de mon_attribut avant l’appel de l’opération
Syntaxe pour préciser l’opération :
context ma_classe::mon_op(liste_param) : type_retour
1. Pourquoi OCL ? Introduction par l’exemple
2. Les principaux concepts d’OCL
3. Exemple d’application sur un autre modèle
4. Utilisation en pratique d’OCL lors d’un développement logiciel