Rubriques

Explication Haut de la page

La relation d'extension relie un cas d'utilisation d'extension à un cas d'utilisation de base. Vous définissez où insérer l'extension dans la base en faisant référence aux points d'extension dans le cas d'utilisation de base (voir Principes et conseils : Cas d'utilisation, la discussion sur les points d'extension). Le cas d'utilisation d'extension est souvent abstrait, mais n'est pas obligé de l'être.

Vous pouvez utiliser les extensions à différentes fins :

  • Pour montrer qu'une partie d'un cas d'utilisation est un comportement de système facultatif, ou potentiellement facultatif. De cette façon, vous séparez le comportement facultatif du comportement obligatoire dans votre modèle.
  • Pour montrer qu'un sous-flux est exécuté uniquement 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 parmi lesquels un ou plusieurs peuvent être insérés à un point d'extension dans un cas d'utilisation de base. Les segments de comportement qui sont insérés (et l'ordre dans lequel ils sont insérés) dépendront de l'interaction avec les acteurs pendant l'exécution du cas d'utilisation de base.

L'extension est conditionnelle, ce qui signifie que son exécution dépend de ce qui s'est passé pendant l'exécution du cas d'utilisation de base. Le cas d'utilisation de base ne contrôle pas les conditions pour l'exécution de l'extension - les conditions sont décrites dans la relation d'extension. Le cas d'utilisation d'extension peut accéder aux attributs du cas d'utilisation de base les le modifier. Le cas d'utilisation de base, cependant, ne peut pas vois les extensions et ne peut pas accéder à leurs attributs.

Le cas d'utilisation de base est implicitement modifié par les extensions. Vous pouvez également 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 case d'utilisation de base être complet et se suffire à lui-même, ce qui signifie qu'il doit être compréhensible et significatif sans référence aux extensions. Cependant, le cas d'utilisation de base n'est pas dépendant des extensions, car 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 Passer un appel conférence et Afficher l'identité de l'appelant sont tous les deux des extensions du cas d'utilisation de base Passer un appel.

Dans un système téléphonique, le principal service fourni aux utilisateurs est représenté par le case d'utilisation Passer un appel. Exemples de services facultatifs :

  • Pouvoir ajouter un tiers à l'appel (Passer un appel conférence).

  • Permettre à la personne qui reçoit l'appel de voir l'identité de l'appelant (Afficher l'identité de l'appelant).

Nous pouvons représenter les comportements nécessaires pour ces services facultatifs en tant que cas d'utilisation d'extension au cas d'utilisation de base Passer un appel. Il s'agit d'une utilisation correcte de la relation d'extension : puisque Passer un appel parle de soi, vous n'avez pas besoin de lire les descriptions des cas d'utilisation d'extension pour comprendre l'objet principal du cas d'utilisation de base, et les cas d'utilisation d'extension ont un caractère facultatif.

Si le cas d'utilisation de base et le cas d'utilisation "de base plus extension" doivent être explicitement instanciables, ou si vous voulez le supplément pour modifier le comportement dans le cas d'utilisation de base, vous devez utiliser la généralisation de cas d'utilisation à la place (voir Principes et conseils : généralisation de cas d'utilisation).

Le cas d'utilisation d'extension peut comporter un ou plusieurs segments d'insertion, chacun pouvant avoir des chemins d'accès alternatifs intégrés. Ces segments d'insertion modifient de façon incrémentale le comportement du cas d'utilisation de base. Chaque segment d'insertion dans un cas d'utilisation d'extension peut être inséré à un emplacement séparé dans le cas d'utilisation de base. Cela signifie que la relation d'extension possède une liste de références aux points d'extension, égale en nombre au nombre de 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 comporte plusieurs relations d'extension, ce qui signifie 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 être étendu en 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 les mêmes cas d'utilisation d'extension et de base, à condition que l'extension soit insérée à différents emplacements dans la base. Cela signifie que les relations d'extension différentes doivent faire référence à différents points d'extension dans le cas d'utilisation de base. Un cas d'utilisation d'extension peut en soi être la base une relation d'extension, d'inclusion ou de généralisation. Par exemple, cela signifie que les cas d'utilisation d'extension peuvent étendre d'autres cas d'utilisation d'extension de façon imbriquée.

Exécuter l'extension Haut de page

Quand une instance de 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 sur la relation d'extension correspondante est évaluée. Si la condition est réelle ou si elle est absente, l'instance de cas d'utilisation suivra l'extension (ou le segment d'insertion dans celle-ci 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 peut, comme tout autre cas, présenter un enchaînement de base d'événements et des enchaînements d'événements alternatifs (voir Principes et conseils : Cas d'utilisation, la discussion sur la structure de l'enchaînement d'événements). Le chemin d'accès exact que l'instance de cas d'utilisation prendra à travers l'extension dépend de ce qui s'est passé avant dans l'exécution (l'état de l'instance de cas d'utilisation) et aussi de ce qui se passe en interaction avec des acteurs quand l'extension est exécutée. Une fois que l'instance de cas d'utilisation a exécuté l'extension, l'instance de cas d'utilisation reprend l'exécution du cas d'utilisation de base au point où il a été laissé.

Diagramme décrit dans le texte d'accompagnement.

Une 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 relié à son propre point d'extension dans le cas d'utilisation de base. Si cela est le cas, l'instance de cas d'utilisation reprendra le cas d'utilisation de base et continuera au point d'extension suivant dans la relation d'extension. A 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'extension soit exécuté. Notez que la condition de la relation d'extension est vérifiée au premier point d'extension uniquement - si la condition est réelle, l'instance de cas d'utilisation doit exécuter tous les segments d'insertion.

Diagramme décrit dans le texte d'accompagnement.

Une instance de cas d'utilisation suivant un cas d'utilisation de base et un cas d'utilisation d'extension, le dernier avec deux segments d'insertion.

La multiplicité de la relation d'extension déterminera le nombre de répétitions de l'extension entière qui peut se produire. Notez qui c'est l'extension entière qui est répétée (et limitée par la multiplicité), pas uniquement un segment d'insertion.

Documenter la relation d'extension Haut de la page

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

Chaque relation d'extension possède une liste de références aux points d'extension (un ou plus) dans le cas d'utilisation de base. Les points d'extension sont référencés par nom. Si le cas d'utilisation d'extension possède plusieurs segments d'insertion, vous devez spécifier quel segment correspond à quel point d'extension. Vous devez également spécifier quelles étapes ou sous-enchaînements du cas d'utilisation d'extension constituent chaque segment d'insertion.

Exemple :

Dans un système téléphonique, le cas d'utilisation Passer un appel peut être étendu par le cas d'utilisation abstrait Afficher l'identité de l'appelant. Ce service, dénommé parfois"ID de l'appelant" est facultatif et peut avoir été souscrit ou non par l'abonné appelé. Une description de la relation d'extension de Afficher l'identité de l'appelant à Passer un appel peut ressembler à cela :

Condition : l'abonné appelé doit avoir commandé le service "ID Appelant".

Point(s) d'extension : Afficher l'identité - insérer le cas d'utilisation Afficher l'identité de l'appelant complet.

Vous pouvez donner une multiplicité à la relation d'extension, si elle est omise la relation est par défaut unique.

Exemple d'utilisation Haut de la page

Considérez le système téléphonique simple suivant :

 

Diagramme décrit dans le texte d'accompagnement.

Le cas d'utilisation abstrait Passer un appel conférence est une extension du cas d'utilisation Passer un appel.

Dans ce modèle, une représentation simple de notre système téléphonique familier, le service d'appel de base est décrit dans le cas d'utilisation Passer un appel. Présentation étape par étape de l'enchaînement de base des événements :

  1. L'abonné décroche.
  2. Le système émet la tonalité.
  3. L'abonné tape un chiffre.
  4. Le système coupe la tonalité.
  5. L'abonné compose le reste du numéro.
  6. Le système analyse les chiffres, détermine l'adresse réseau de la personne appelée.
  7. Le système analyse les chiffres en déterminant l'emplacement sur le réseau dans lequel la personne appelée se trouve.
  8. Le système détermine ensuite si un circuit virtuel peut être établi avec la personne appelée.
  9. Si un circuit virtuel peut être établi, le système fait sonner le téléphone de la personne appelée et émet la tonalité d'appel sur le téléphone de l'abonné qui passe l'appel.
  10. Lorsque la personne qui reçoit l'appel répond, le système désactive la tonalité d'appel sur le téléphone de l'appelant, arrêter la sonnerie sur le téléphone de la personne qui reçoit l'appel et complète le circuit virtuel.
  11. Le système commence à enregistrer pour la facturation, en enregistrant l'heure de début de l'appel, les points de fin de l'appel, et les informations client sur l'appelant.
  12. L'appel continue pendant un certain temps. Quand l'appelant ou son interlocuteur déconnecte l'appel, le système enregistre l'heure de fin de l'appel et libère toutes les ressources requises pour prendre en charge le circuit virtuel. Le cas d'utilisation se termine alors ici.

Pour ajouter des fonctionnalités à ce système qui permettraient à l'appelant ou à la personne appelée de connecter une troisième personne (ce que l'on appelle souvent "appel conférence"), nous devons ajouter un comportement à l'enchaînement d'événement. Une alternative, et la première que nous devons considérer, est de mettre les différences directement dans Passer un appel. Nous pourrions modeler ces différences à l'aide d'enchaînements d'événements alternatifs, comme décrit dans Principes et conseils : Cas d'utilisation. Cette solution fonctionne pour les ajouts les plus simples, où les fonctionnalités ajoutées ne créeront aucune confusion ou ne brouilleront pas la signification d'origine du cas d'utilisation. L'alternative consiste à séparer les différences dans un cas d'utilisation d'extension abstrait appelé Passer un appel conférence avec des extensions au cas d'utilisation de base.

Le cas d'utilisation Passer un appel serait étendu de la façon suivante :

Points d'extension :
L'appel conférence
se produit après l'étape 11.

Le cas d'utilisation d'extension, Passer un appel conférence, peut alors être décrit comme :

Cas d'utilisation Passer un appel conférence
Ce cas d'utilisation étend Passer un appel.  Il est inséré au point d'extension Appel conférence.
Enchaînement de base :
1. L'appelant appuie sur le bouton raccrocher, relier ou flash.
2. Le système génère 3 bips courts pour confirmer.
3..12.<ces étapes sont identiques aux étapes 3..12 du cas d'utilisation de base>
13. L'appelant est reconnecté à son interlocuteur du cas d'utilisation Passer un appel.

Le caractère commun des étapes 3..12 avec le cas d'utilisation de base est indésirable.  Une façon de résoudre cela est de factoriser la partie commune comme un cas d'utilisation d'inclusion (voir Principes et conseils : Relation d'inclusion).



RUP (Rational Unified Process)   2003.06.15