Rubriques

Explication Haut de la page

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 (quoique le parent le soit dans la plupart des cas). L'enfant hérite la structure, le comportement et les relations de son parent. Les enfants d'un même parent constituent tous des spécialisations du parent. On parle alors de généralisation, telle qu'elle s'applique aux cas d'utilisation (voir aussi Principes et conseils : 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 :

Diagramme décrit dans la légende.

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 flot 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.

Diagramme décrit dans la légende.

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 et Commande par Internet.

Le cas d'utilisation enfant est dépendant de la structure (voir dans Principes et conseils : Cas d'utilisation, la discussion sur la structure des flots 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 le dessein 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-flots dans le flot 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.

Exécution de la généralisation de cas d'utilisation Haut de page

Une instance de cas d'utilisation exécutant un cas d'utilisation enfant suit le flot 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 flot d'événements de l'enfant.

Diagramme décrit dans la légende.

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.

Description de la généralisation de cas d'utilisation Haut de page

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 flot 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.

Exemple d'utilisation Haut de page

Examinez la description étape par étape ci-dessous de cas d'utilisation d'un système téléphonique simple :

Appel local

  1. L'appelant décroche le combiné.
  2. Le système présente une tonalité.
  3. L'appelant compose un chiffre.
  4. Le système désactive la tonalité.
  5. L'appelant compose le reste du numéro.
  6. Le système analyse le numéro.
  7. Le système localise le correspondant.
  8. Le système connecte les deux abonnés.
  9. Les abonnés se déconnectent.

Appel longue distance

  1. L'appelant décroche le combiné.
  2. Le système présente une tonalité.
  3. L'appelant compose un chiffre.
  4. Le système désactive la tonalité.
  5. L'appelant compose le reste du numéro.
  6. Le système analyse le numéro.
  7. Le système transmet le numéro à un autre système.
  8. Le système connecte les lignes.
  9. 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-flots alternatifs illustrant la différence entre appel local 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 :

Diagramme décrit dans la légende.

Les cas d'utilisation Appel local et Appel longue distance héritent du cas d'utilisation abstrait Passage d'appel.



RUP (Rational Unified Process)   2003.06.15