Instructions: Relation d'extension
La relation d'extension relie un cas d'utilisation d'extension à un cas d'utilisation de base. Ces instructions expliquent comment utiliser cette relation.
Relations
Description principale

Explication

La relation d'extension relie un cas d'utilisation d'extension à un cas d'utilisation de base. Vous définissez l'endroit dans la base où insérer l'extension en vous référant à des points d'extension dans le cas d'utilisation de base voir dans les Instructions relatives au produit : cas d'utilisation, la partie sur les points d'extension). Le cas d'utilisation d'extension est souvent abstrait, mais il n'est pas obligé de l'être.

Vous pouvez utilisez les extensions pour plusieurs raisons :

  • Pour montrer qu'une partie du cas d'utilisation est optionnelle ou potentiellement optionnelle dans le comportement du système. De cette façon, vous séparez dans votre modèle les comportements optionnels des comportements obligatoires.
  • Pour montrer qu'un flux secondaire n'est exécuté que sous certaines conditions (parfois exceptionnelles), comme le déclenchement d'une alarme.
  • Pour montrer qu'il peut y avoir un ensemble de segments de comportement dont un ou plus peuvent être insérés à un point d'extension dans un cas d'utilisation de base. Les segments de comportement insérés et l'ordre dans lequel ils seront insérés dépendent des interactions avec les acteurs pendant l'exécution du cas d'utilisation de base.

L'extension est conditionnelle, cela signifie que son exécution dépend de ce qui arrive pendant l'exécution du cas d'utilisation de base. Le cas d'utilisation de base ne contrôle pas les conditions de l'exécution de l'extension : les conditions sont décrites par la relation d'extension. Le cas d'utilisation d'extension peut accéder aux attributs du cas d'utilisation de base et les modifier. Le cas d'utilisation de base ne peut pas, lui, voir les extensions et accéder à leurs attributs.

Le cas d'utilisation de base est implicitement modifié par les extensions. On peut dire que le cas d'utilisation de base définit un cadre modulaire dans lequel les extensions peuvent être ajoutées, mais la base n'a aucune visibilité des extensions spécifiques.

Le cas d'utilisation de base doit être un élément à part entière, c'est à dire qu'il doit être compréhensible et pertinent sans références aux extensions. Toutefois, le cas d'utilisation de base est dépendant des extensions puisqu'il ne peut pas être exécuté sans la possibilité de suivre les extensions.

Exemple :

Diagramme décrit dans le texte d'accompagnement.

Les cas d'utilisation Conférence téléphonique et Affichage de l'identité de l'appelant sont des extensions du cas d'utilisation de base Emettre un appel.

Dans un système téléphonique, le premier service fourni aux utilisateurs est représenté par le cas d'utilisation Emettre un appel. Voici quelques exemples de services optionnels :

  • Pouvoir faire participer une troisième personne à la conversation (Conférence téléphonique).

  • Permettre au récepteur de l'appel de voir l'identité de l'appelant (Affichage de l'identité de l'appelant).

On peut représenter les comportements nécessaires à ces services optionnels comme des cas d'utilisation d'extension du cas d'utilisation de base Emettre un appel. Cette relation d'extension est correcte : en effet, Emettre un appel est cas d'utilisation pertinent en lui-même, il n'est pas nécessaire de lire les descriptions des cas d'utilisation d'extension pour comprendre le but d'origine du cas d'utilisation de base. De plus, les cas d'utilisation d'extension sont optionnels.

Si le cas d'utilisation de base et le cas d'utilisation "base plus extension" doivent être instanciables ou si vous souhaitez que l'ajout modifie le comportement dans le cas d'utilisation de base, il vaut mieux utiliser la généralisation de cas d'utilisation (voir Instructions relatives au produit : généralisation du cas d'utilisation).

Le cas d'utilisation d'extension peut être composé d'un ou plusieurs segments d'insertion. Ces derniers peuvent contenir des chemins alternatifs. Les segments d'insertion modifient de manière incrémentielle le comportement du cas d'utilisation de base. Chaque segment d'insertion d'un cas d'utilisation d'extension peut être inséré dans un emplacement à part dans le cas d'utilisation de base. La relation d'extension a donc une liste de références aux points d'extension ; leur nombre est égal à celui des segments d'insertion dans le cas d'utilisation d'extension. Chaque point d'extension doit être défini dans le cas d'utilisation de base.

Un cas d'utilisation de base est composé de plusieurs relations d'extension : cela signifie donc qu'une instance de cas d'utilisation peut suivre plus d'une extension pendant sa durée de vie. Un cas d'utilisation d'extension peut devenir plusieurs cas d'utilisation de base, mais cela n'implique aucune dépendance entre les cas d'utilisation de base. Il peut même y avoir des relations d'extension multiples entre le même cas d'utilisation d'extension et cas d'utilisation de base, à condition que l'extension soit insérée à des emplacements différents dans la base. Cela signifie que des relations d'extension différentes doivent se référer à des points d'extension différents dans le cas d'utilisation de base. Un cas d'utilisation d'extension peut lui-même être la base d'une relation d'extension, d'inclusion ou de généralisation. Par exemple, cela signifie que les cas d'utilisation d'extension peuvent "étendre" les autres cas d'utilisation d'extension de manière imbriquée.

Exécution de l'extension

Lorsque l'instance du cas d'utilisation exécutant le cas d'utilisation de base atteint un emplacement dans le cas d'utilisation de base où un point d'extension a été défini, la condition de la relation d'extension correspondante est évaluée. Si la condition est exacte ou absente, l'instance du cas d'utilisation suivra l'extension (ou le segment d'insertion qu'il contient et qui correspond au point d'extension). Si la condition de la relation d'extension est fausse, l'extension n'est pas exécutée.

Le cas d'utilisation d'extension, comme les autres cas d'utilisation, a un flux d'événements de base et un flux d'événements alternatif (voir dans les Instructions relatives au produit: cas d'utilisation, la partie concernant le flux d'événements). Le chemin exact que prendra l'instance du cas d'utilisation à travers l'extension dépend de ce qui s'est déroulé avant l'exécution (l'état de l'instance du cas d'utilisation) et aussi de ce qui arrive en relation avec les acteurs pendant l'exécution de l'extension. Une fois que l'instance du cas d'utilisation a exécuté l'extension, elle reprend l'exécution du cas d'utilisation de base là où elle s'est arrêtée.

Diagramme décrit dans le texte d'accompagnement.

Instance de cas d'utilisation suivant un cas d'utilisation de base et son extension.

Un cas d'utilisation d'extension peut avoir plus d'un segment d'insertion, chacun étant relié à son propre point d'extension dans le cas d'utilisation de base. Si c'est le cas, l'instance du cas d'utilisation reprendra le cas d'utilisation de base et continuera jusqu'au point d'extension suivant spécifié dans la relation d'extension. Arrivé à ce point, il exécutera le segment d'insertion suivant du cas d'utilisation d'extension. Cela se répète jusqu'à ce que le dernier segment d'insertion ait été inséré. Notez que la condition de la relation d'extension n'est vérifiée qu'au premier point d'extension : si la condition est vraie, l'instance du cas d'utilisation doit réaliser tous les segments d'insertion.

Diagramme décrit dans le texte d'accompagnement.

Instance d'un cas d'utilisation suivant un cas d'utilisation de base et un cas d'utilisation d'extension, ce dernier ayant deux segments d'insertion.

La multiplicité de la relation d'extension influencera le nombre de répétitions qui pourront avoir lieu dans toute l'extension. Remarquez que c'est bien toute l'extension qui est répétée (et limitée par la multiplicité) et pas seulement un segment d'insertion.

Description de la relation d'extension Début de page

Décrivez la condition de l'extension en termes d'attributs du cas d'utilisation de base. Vous pouvez aussi choisir d'omettre la condition, dans ce cas l'extension sera toujours exécutée.

Chaque relation d'extension a une liste de références aux points d'extension dans le cas d'utilisation de base. Les points d'extension sont classés par noms. Si le cas d'utilisation d'extension a des segments d'insertion multiples, vous devez définir quel segment correspond à quel point d'extension. Vous devez aussi définir quelle étape ou sous-flot du cas d'utilisation d'extension constitue chaque segment d'insertion.

Exemple :

Dans un système téléphonique, le cas d'utilisation Emettre un appel peut être "étendu" par le cas d'utilisation hypothétique Affichage de l'identité de l'appelant. Ce service, souvent appelé "Identité de l'appelant" est optionnel et peut avoir été souscrit ou non par l'abonné appelé. La description de la relation d'extension entre "Affichage de l'identité de l'appelant" et "Emettre un appel" pourrait avoir la forme suivante :

Condition: L'abonné appelé doit avoir souscrit au service "Identité de l'appelant".

Point(s) d'extension : Affichage de l'identité - insère tout le cas d'utilisation "Affichage de l'identité de l'appelant".

Vous pouvez donner une multiplicité à la relation d'extension ; si vous ne le faites pas, la multiplicité par défaut est de un.

Exemple d'utilisation

Prenez par exemple le système téléphonique suivant :

Diagramme décrit dans le texte d'accompagnement.

Le cas d'utilisation abstrait Conférence téléphonique est une extension du cas d'utilisation Emettre un appel.

Dans ce modèle, une représentation simple de nos systèmes téléphoniques habituels, les services basiques sont décrits dans le cas d'utilisation Emettre un appel. Une représentation étape par étape du flux d'événements de base ressemblerait à ceci :

  1. L'appelant décroche le combiné.
  2. Le système émet une tonalité.
  3. L'appelant compose un chiffre.
  4. Le système désactive la tonalité.
  5. L'appelant compose le reste des numéros.
  6. Le système analyse le numéro et localise l'adresse réseau de l'appelé.
  7. Le système analyse le numéro et identifie l'emplacement dans le réseau où l'appelé existe.
  8. Le système détermine alors si un circuit virtuel peut être établi jusqu'à l'appelé.
  9. Si un circuit virtuel peut être établi, le système fait sonner le téléphone de l'appelé et fait entendre la tonalité de retour d'appel à l'appelant.
  10. Lorsque l'appelé décroche le téléphone, le système désactive la tonalité de retour d'appel dans le téléphone de l'appelant, arrête de faire sonner le téléphone de l'appelé et termine le circuit virtuel.
  11. Le système commence un enregistrement de facturation, enregistrant l'heure du début de la communication, les points limites de l'appel et les informations client de l'appelant.
  12. L'appel dure un certain laps de temps. Lorsque l'appelant ou l'appelé se déconnecte de l'appel, le système enregistre l'heure de fin de l'appel et libère toutes les ressources utilisées pour prendre en charge le circuit virtuel. Le cas d'utilisation se termine alors ici.

Pour ajouter à ce système la fonctionnalité permettant à l'appelé ou à l'appelant de faire participer une troisième personne à l'appel (ce qu'on appelle généralement une conférence téléphonique), il faut ajouter un comportement au flux d'événements. Une solution possible est de placer les différences directement dans le cas d'utilisation Emettre un appel. On pourrait modéliser ces différences en utilisant des flux d'événements alternatifs, comme décrit dans Instructions relatives au produit : cas d'utilisation. Cette solution fonctionne pour les ajouts les plus simples, lorsque la fonctionnalité ajoutée ne changera pas la signification du cas d'utilisation. L'autre solution est de regrouper les différences dans un cas d'utilisation d'extension abstrait appelé Emettre une conférence téléphonique qui est une extension du cas d'utilisation de base.

On ajouterait les éléments suivants au cas d'utilisation Emettre un appel :

Points d'extension :
La
conférence téléphonique
a lieu après l'étape 11.

Le cas d'utilisation d'extension Emettre une conférence téléphonique peut être décrit de la manière suivante :

Cas d'utilisation Emettre une conférence téléphonique
Ce cas d'utilisation est une extension du cas Emettre un appel.  Il est inséré au point d'extension conférence téléphonique.
Flux de base :
1. L'appelant appuie sur le bouton de raccrochage ou la touche commutateur.
2. Le système émet trois bips courts pour en accuser la réception.
3..12.<ces étapes sont les mêmes que celles du cas d'utilisation de base>
13. L'appelant est reconnecté à l'appelé à partir du cas d'utilisation Emettre un appel.

La similitude des étapes 3..12 dans les deux cas d'utilisation est préjudiciable.  On peut résoudre cela en faisant de la partie commune un cas d'utilisation d'inclusion (voir Instructions relatives au produit: relation d'inclusion).