Un cas d'utilisation parent peut être décliné en un ou plusieurs cas d'utilisation enfants représentant des formes plus
spécifiques du parent. Ni le parent ni l'enfant ne sont nécessairement des éléments abstraits (bien que le parent le
soit dans la plupart des cas). L'enfant hérite de la structure, du comportement et des relations de son parent. Les
enfants d'un même parent constituent tous des spécialisations du parent. On parle de généralisation, telle qu'elle
s'applique aux cas d'utilisation (pour plus d'informations sur le concept de généralisation applicable aux classes,
voir Instructions : Généralisation).
La généralisation est utilisée en présence de deux cas d'utilisation (ou plus) avec des points communs au niveau de
leur comportement, structure et objet. Dans cette situation, vous pouvez décrire les parties communes dans un nouveau
cas d'utilisation, souvent abstrait, qui est ensuite spécialisé par des cas d'utilisation enfants.
Exemple :
Les cas d'utilisation Commande téléphonique et Commande par Internet constituent des spécialisations du cas
d'utilisation abstrait Passage de commande.
Dans un système de gestion des commandes, les cas d'utilisation Commande téléphonique et Commande par Internet
partagent beaucoup de points communs dans leur structure et comportement. Un cas d'utilisation général Passage de
commande est défini pour cette structure et ce comportement commun. Le cas d'utilisation abstrait Passage de commande
n'a pas besoin d'être exhaustif mais fournit un cadre de comportement général qui peut alors être complété par les cas
d'utilisation enfants.
Le cas d'utilisation parent n'est pas toujours abstrait.
Exemple :
Examinez le système de gestion de commande de l'exemple précédent. Supposons que nous voulions ajouter dans le système
un acteur intitulé Préposé à l'enregistrement des commandes, qui puisse saisir des commandes pour le compte des
clients. Cet acteur déclencherait le cas d'utilisation général Passage de commande, lequel doit à présent comporter une
description complète de son flux d'événements. Les cas d'utilisation enfants peuvent ajouter un comportement à la
structure fournie par le cas d'utilisation parent et également modifier le comportement du parent.
L'acteur Préposé à l'enregistrement des commandes peut instancier le cas d'utilisation général Passage de commande.
Passage de commande peut aussi être spécialisé par les cas d'utilisation Commande téléphonique ou Commande par
Internet.
Le cas d'utilisation enfant est dépendant de la structure (voir dans Instructions : Cas
d'utilisation, la section concernant la structure des flux d'événements) du cas d'utilisation parent. Le cas
d'utilisation enfant peut ajouter un comportement au parent en insérant des segments de comportement dans le
comportement hérité ou en déclarant des relations de type inclusion et extension pour le cas d'utilisation enfant.
L'enfant peut modifier des segments de comportement hérités du parent mais vous devez alors procéder avec
circonspection afin de préserver l'objectif du parent. La structure du cas d'utilisation parent est préservée par
l'enfant. Ceci signifie que tous les segments de comportement, décrits en tant qu'étapes ou sous-flux dans le flux
d'événements du parent, doivent continuer à exister, mais que le contenu de ces segments peut être modifié par
l'enfant.
Si le parent constitue un cas d'utilisation abstrait, certains de ses segments de comportement peuvent être incomplets.
L'enfant doit alors compléter ces segments et les rendre pertinents pour l'acteur concerné.
Un cas d'utilisation parent ne nécessite pas de relation avec un acteur s'il s'agit d'un cas abstrait.
Si deux cas d'utilisation enfants spécialisent le même parent (ou encore, base), les spécialisations sont indépendantes
l'une de l'autre, c'est-à-dire qu'elles peuvent être exécutées dans des instances de cas d'utilisation distinctes. Cet
aspect diffère des relations d'extension ou d'inclusion, où plusieurs additions viennent modifier, implicitement ou
explicitement, une instance de cas d'utilisation exécutant le même cas de base.
Tant les généralisations de cas d'utilisation que les relations d'inclusion peuvent être employées afin de réutiliser
un comportement entre les cas d'utilisation du modèle. La différence consiste en ce que, dans la généralisation de cas
d'utilisation, l'exécution de l'enfant est dépendante de la structure et du comportement du parent (pour la partie
réutilisée), alors que dans une relation d'inclusion, l'exécution du cas d'utilisation de base ne dépend que du
résultat de la fonction effectuée par le cas d'utilisation d'inclusion (la partie réutilisée). Une autre différence
tient au fait que dans une généralisation, les enfants partagent des similarités quant à leur objet et structure, alors
que dans une relation d'inclusion, les cas d'utilisation de base utilisant la même inclusion peuvent avoir des objets
totalement différents tout en nécessitant que la même fonction soit effectuée.
Une instance de cas d'utilisation exécutant un cas d'utilisation enfant suit le flux d'événements décrit pour le
parent, en insérant un comportement supplémentaire et en modifiant un comportement, comme défini dans le flux
d'événements du cas d'utilisation enfant.
L'instance de cas d'utilisation suit le cas d'utilisation parent, avec une insertion ou une modification de
comportement comme décrit dans le cas d'utilisation enfant.
En général, vous n'avez pas à décrire la relation de généralisation elle-même. A la place, vous devez spécifier dans le
flux d'événements de l'enfant comment sont insérées de nouvelles étapes dans le comportement hérité et comment le
comportement hérité est modifié.
Si l'enfant spécialise plus d'un parent (héritage multiple), vous devez mentionner explicitement dans la spécification
de l'enfant comment les séquences de comportement des parents s'imbriquent dans l'enfant.
Examinez la description suivante étape par étape de cas d'utilisation d'un système téléphonique simple :
Appel local
-
L'appelant décroche le combiné.
-
Le système présente une tonalité.
-
L'appelant compose un chiffre.
-
Le système désactive la tonalité.
-
L'appelant compose le reste du numéro.
-
Le système analyse le numéro.
-
Le système localise le correspondant.
-
Le système connecte les deux abonnés.
-
Les abonnés se déconnectent.
Passez un appel longue distance
-
L'appelant décroche le combiné.
-
Le système présente une tonalité.
-
L'appelant compose un chiffre.
-
Le système désactive la tonalité.
-
L'appelant compose le reste du numéro.
-
Le système analyse le numéro.
-
Le système transmet le numéro à un autre système.
-
Le système connecte les lignes.
-
Les abonnés se déconnectent.
Le texte en bleu est très similaire dans les deux cas d'utilisation. En raison de cette
similarité, nous devrions envisager de les fusionner en un seul cas d'utilisation, avec des sous-flux alternatifs
illustrant la différence entre appels locaux et longue distance.
Toutefois, si cette différence a son importance et qu'il est utile de présenter dans le modèle de cas d'utilisation la
relation entre appel local et appel longue distance, nous pouvons extraire le comportement commun dans un nouveau cas
d'utilisation plus général, nommé Passage d'appel.
Dans un diagramme de cas d'utilisation, la relation de généralisation créée sera illustrée comme suit :
Les cas d'utilisation Appel local et Appel longue distance héritent du cas d'utilisation abstrait Passage d'appel.
|