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 :
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 :
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.
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.
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.
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.
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.
Prenez par exemple le système téléphonique suivant :
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 :
-
L'appelant décroche le combiné.
-
Le système émet une tonalité.
-
L'appelant compose un chiffre.
-
Le système désactive la tonalité.
-
L'appelant compose le reste des numéros.
-
Le système analyse le numéro et localise l'adresse réseau de l'appelé.
-
Le système analyse le numéro et identifie l'emplacement dans le réseau où l'appelé existe.
-
Le système détermine alors si un circuit virtuel peut être établi jusqu'à l'appelé.
-
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.
-
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.
-
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.
-
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).
|