Témoignage
 

Rubrique « Info »

 



Écrivez à AILES !



Retour vers programmation



Retour vers les questions UML
 


Questionnaire UML
Les relations

[EncyclUnivers], [OMG]


Les relations représentent une partie importante de la modélisation, car elles sont structurantes.
On en connaît souvent un ou deux type, il est rare d'avoir en tête toutes les relations UML. 
Surtout qu'il y en a 6. Et pas moins de 16 sous-types de relations. 
Ha ben oui, quand même.
Les voici rappelées pour vous.

Les 5 relations UML ?

Voilà ce que l'on peut extraire du modèle UML1.4  :

On trouve donc :

La relation : connexions entre les éléments d'un modèle.

La généralisation (héritage) : relation de taxinomique entre un élément plus général et un élément plus spécifique.
[On rappellera que la taxinomie, selon sa définition la plus simple est l'«étude théorique de la classification, de ses bases, de ses principes, des méthodes et des règles». Il s'agit de la méthodologie de la systématique et de la classification.]
Saviez-vous que :
1/ la relation "realize" (qui se note comme la généralization, mais avec un trait pointillé) n'est pas une généralisation, mais une dépendance de type abstraction avec le stéréotype "realize" ?
2/ La généralisation s'applique entre des classes que entre des associations (en théorie, on peut relier deux lignes représentant deux associations par une flèche représentant une généralisation ! en pratique... on préférera représenter les associations comme des classes et les relier entre elles... mais surtout, on ne fait jamais de généralisation entre association !!!)

La dépendance : relation sémantique (c.à.d. "porteuse de sens") indiquant une utilisation entre deux concepts : cela concerne uniquement les concepts et non leurs instance. Toute dépendance joue un rôle majeur dans le problème du couplage, déjà vigoureusement dénoncé dans ce site.
On distingue :
    L'utilisation (« usage ») : une dépendance simple, en terme d'utilisation. Simplement, les stéréotype de cette dépendance permet de préciser le type d'utilisation concerné. C'est elle qui est la source la plus courante des couplages malheureux!
        - l'appel (« call » ) : appel d'une opération par une autre opération ;
        - la création (« create » ) : le client crée des instances du fournisseur ;
        - l'instanciation (« instanciate » ) : une opération du client crée des instances du fournisseur ;
        - l'envoi (« send » ) : une opération envoie un signal à un élément cible.
    L'abstraction : relie 2 éléments qui représentent le même concept à différents niveaux d'abstraction ou selon différents points de vue. Les 4 abstractions (via stéréotype) prévues par UML sont :
        - la dérivation (« derive » ) : un élément peut être calculé depuis un autre ;
        - la réalisation (« realize » ) : déjà mentionnée plus haut, elle implique qu'un élément implémente complètement un autre élément dit de spécification (courant pour implémenter les "interfaces") Encore une fois, il ne s'agit pas d'héritage!
        - le rafinement (« refine » ) : permet de relier deux éléments qui se trouvent à deux niveaux sémantiques différents : typiquement, 2 classes de mêmes noms, mais dont l'une se trouve au niveau "Analyse" et l'autre au niveau "Conception". En pratique, aucun outil de type AGL ne permet de mettre en oeuvre facilement ces relations qui permettraient pourtant de résoudre un des grands écarts des AGL : la dégradation du modèle d'analyse en modèle de conception.
        - le traçage (« trace » ) : permet de suivre les différentes évolutions d'un même concept de modèle en modèle. Là encore, c'est très peu mis en oeuvre...
    L'instanciation de template (« binding ») : relation entre un template (fournisseur) et élément (client) généré à partir du template, qui instancie le template en substituant aux paramètres du template les siens.
    La permission : permet à un élément d'accéder à un autre issu d'un espace de nommage différent. L'espace de nommage est un élément d'UML 1.4 qui regroupe d'autre éléments afin d'éviter tout conflit d'identification. 3 types de permissions sont distingués :
        - l'accès (« access » ) : concerne 2 espaces de nommage dont l'un peut accéder aux éléments de l'autres ;
        - l'ami (« friend » ) : permet à un élément du modèle (opération, classe, package) d'accéder à un autre élément du modèle, quelque soit la visibilité de ce dernier ;
        - l'import (« import » ) : le contenu publique de l'espace de nommage cible est ajouté à l'espace de nommage source.

L'association : relation sémantique plus forte que la dépendance, elle indique une relation stable entre 2 concepts (à opposer à la relation ponctuelle d'utilisation de la dépendance). Un concept à besoin d'un autre pour être défini.
    La "classe-association" : une association qui est aussi une classe ! Pratique lorsque l'on a un attribut qui porte sur un couple de classe. On met alors cet attribut dans une "classe association" qui relie les 2 classes. (une réminiscence des dépendances fonctionnelles en Base de Données!) Exemple : l'attribut "salaire" dépend de la Personne (employé) et de la Société (employeur): on créera la classe "Métier" (avec attribut "salaire") pour relier les 2.
    Le "rôle-association" : une utilisation spécifique d'une association au sein d'une collaboration. Rappelons que la collaboration permet de décrire comment une opération ou un cas d'utilisation est réalisé avec des éléments et associations

Le flot : relation entre deux versions d'un élément, ou entre un élément et une copie. 2 stéréotypes existent :
    L'évolution (« become ») : une même instance à 2 instants t différents, avec potentiellement des valeurs, états et rôles différents. 
    La copie (« copy ») : deux instances différentes, mais avec les mêmes valeurs, états et rôles. 

L'inclusion : défini un cas d'utilisation comme l'inclusion des comportements d'un autre cas d'utilisation. C'est une factorisation du comportement.

L'extension
: étend le comportement d'un cas d'utilisation avec de nouveau comportements d'une autre cas d'utilisation.





               
 
Avertissement !
 
Décollage !  |  Présentation du site web "AILES"  | 
Infos générales  |  articles "Informatique"