a
a
Weather:
city not found
HomeBitcoinuml – Quelle est la différence entre include et extend dans le diagramme de cas d’utilisation?

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

Cela peut être controversé, mais «inclut toujours et parfois étend» est une idée fausse très courante qui a presque pris le dessus maintenant comme une signification factuelle. Voici une approche correcte (à mon avis, et comparée à Jacobson, Fowler, Larmen et 10 autres références).

Les relations sont des addictions

La clé pour inclure et étendre les relations de cas d’utilisation est de réaliser que, commune avec le reste d’UML, la flèche en pointillé entre les cas d’utilisation est une relation de dépendance. J’utiliserai les termes «base», «inclus» et «extension» pour désigner les rôles de cas d’utilisation.

inclure

Un cas d’utilisation de base dépend des cas d’utilisation inclus; sans eux, le cas d’utilisation de base est incomplet car les cas d’utilisation inclus représentent les sous-séquences de l’interaction qui peuvent toujours se produire OU parfois. (Ceci est contraire à une idée fausse populaire à ce sujet, ce que votre cas d’utilisation suggère se produit toujours dans le scénario principal et se produit parfois dans des flux alternés dépend simplement de ce que vous choisissez comme scénario principal; les cas d’utilisation peuvent être facilement restructurés.pour représenter un scénario différent flux comme scénario principal et cela ne devrait pas avoir d’importance).

Dans la meilleure pratique de dépendance unidirectionnelle, le cas d’utilisation de base connaît (et référence) le cas d’utilisation inclus, mais le cas d’utilisation inclus ne doit pas «connaître» le cas d’utilisation de base. C’est pourquoi les cas d’utilisation inclus peuvent être: a) des cas d’utilisation de base autonomes et b) partagés par un ensemble de cas d’utilisation de base.

étendre

Le cas d’utilisation extensible dépend du cas d’utilisation de base; étend littéralement le comportement décrit par le cas d’utilisation de base. Le cas d’utilisation de base doit être un cas d’utilisation entièrement fonctionnel à part entière (‘inclut est bien sûr inclus) sans la fonctionnalité supplémentaire du cas d’utilisation extensible.

L’extension de cas d’utilisation peut être utilisée dans plusieurs situations:

  1. Le cas d’utilisation de base représente la fonctionnalité «indispensable» d’un projet tandis que le cas d’utilisation étendu représente un comportement facultatif (devrait / pourrait / veut). C’est là que le terme facultatif est pertinent: facultatif si à construire / fournir plutôt que facultatif s’il est parfois exécuté dans le cadre de la séquence de cas d’utilisation de base.
  2. Dans la phase 1, vous pouvez fournir le cas d’utilisation de base qui répond aux exigences à ce stade, et la phase 2 ajoutera des fonctionnalités supplémentaires décrites par le cas d’utilisation étendu. Cela peut contenir des séquences qui sont toujours ou parfois exécutées après la livraison de l’étape 2 (encore une fois contrairement aux idées reçues).
  3. Il peut être utilisé pour extraire les séquences de cas d’utilisation de base, en particulier lorsqu’elles représentent un comportement « exceptionnel » complexe avec leurs propres flux alternatifs.

Un aspect important à prendre en compte est que le cas d’utilisation étendu peut «tirer» le comportement à différents points du flux du cas d’utilisation de base, pas seulement à un endroit comme le fait un cas d’utilisation inclus. Pour cette raison, il est très peu probable qu’un cas d’utilisation étendu convienne pour étendre plus d’un cas d’utilisation de base.

En ce qui concerne la dépendance, le cas d’utilisation étendu dépend du cas d’utilisation de base et est à nouveau une dépendance unidirectionnelle, ce qui signifie que le cas d’utilisation de base n’a pas besoin de référence au cas d’utilisation étendu dans la séquence. Cela ne signifie pas que vous ne pouvez pas démontrer les points d’extension ou ajouter un x-ref au cas d’utilisation extensible ailleurs dans le modèle, mais le cas d’utilisation de base doit pouvoir fonctionner sans le cas d’utilisation extensible.

RÉSUMÉ

J’espère avoir prouvé que l’idée fausse courante de « inclut toujours, étend parfois » est fausse ou simpliste au mieux. Cette version a en fait plus de sens quand on considère tous les problèmes liés à la directionnalité des flèches que le malentendu présente: dans le bon modèle, ce n’est que la dépendance et ne change potentiellement pas si vous refactorisez le contenu du cas d’utilisation.

https://stackoverflow.com/questions/1696927/whats-is-the-difference-between-include-and-extend-in-use-case-diagram

No comments

leave a comment