Différence entre include et extend dans un diagramme de cas d'utilisation?

Quelle est la différence entre include et extend dans un diagramme de cas d’utilisation ?

Pour simplifier,

pour include:

Lorsque le cas d’utilisation de base est exécuté, le cas d’utilisation inclus est exécuté à CHAQUE FOIS.
Le cas d’utilisation de base nécessite l’exécution du cas d’utilisation inclus pour être achevé.
un exemple typique : entre le login et la vérification du mot de passe

(login) — << include >> —> (« vérification du mot de passe »)

pour que le processus de login réussisse, la « vérification du mot de passe » doit également réussir.


pour extend:

Lorsque le cas d’utilisation de base est exécuté, le cas d’utilisation complémentaire n’est exécuté que PARFOIS.
Le cas d’utilisation complémentaire n’est exécuté que lorsque certains critères sont remplis.
Un exemple typique : entre la connexion et l’affichage d’un message d’erreur (ne se produit que parfois)

(login) <— << extend >> — (« afficher un message d’erreur »)

"L’affichage d’un message d’erreur ne se produit que parfois, lorsque le processus de connexion a échoué.

Je l’utilise souvent pour me souvenir des deux :

Mon cas d’utilisation : Je vais en ville.

includes → conduire la voiture

extends → faire le plein d’essence

« Faire le plein d’essence » n’est pas forcément nécessaire à tout moment, mais peut l’être en fonction de la quantité d’essence restante dans la voiture. « Conduire la voiture » est une condition préalable, c’est pourquoi je l’inclus.

Je pense qu’il est important de comprendre l’intention des includes et des extends :

« La relation include est destinée à réutiliser le comportement modélisé par un autre cas d’utilisation, tandis que la relation extend est destinée à ajouter des parties aux cas d’utilisation existants ainsi qu’à modéliser des services système optionnels » (Overgaard et Palmkvist, Use Cases : Patterns and Blueprints. Addison-Wesley, 2004).

Pour moi, cela se lit comme suit :

Include = réutilisation de la fonctionnalité (c’est-à-dire que la fonctionnalité incluse est utilisée ou pourrait être utilisée ailleurs dans le système). Include dénote donc une dépendance à l’égard d’un autre cas d’utilisation.

Extends = ajout (et non réutilisation) de fonctionnalités, ainsi que de toute fonctionnalité optionnelle. Extends peut donc désigner l’une des deux choses suivantes:

  1. l’ajout de nouvelles fonctionnalités/capacités à un cas d’utilisation (optionnel ou non)
  2. tout cas d’utilisation optionnel (existant ou non).

Résumé :
Include = réutilisation de la fonctionnalité
Extends = fonctionnalité nouvelle et/ou optionnelle

Soyons plus clairs. Nous utilisons include chaque fois que nous voulons exprimer le fait que l’existence d’un cas dépend de l’existence d’un autre.

EXEMPLES :

Un utilisateur ne peut faire des achats en ligne qu’après s’être connecté à son compte. En d’autres termes, il ne peut pas faire d’achats tant qu’il ne s’est pas connecté à son compte.

Un utilisateur ne peut pas télécharger à partir d’un site avant que le matériel n’ait été uploadé. Je ne peux donc pas télécharger si rien n’a été uploadé.

Vous comprenez ?

Il s’agit d’une conséquence conditionnée. Je ne peux pas faire ceci si je n’ai pas fait cela auparavant.

En tout cas, je pense que c’est la bonne façon d’utiliser Include.

merci :slightly_smiling_face: les gas pour ces explications.