Was ist der Unterschied zwischen include
und extend
in einem Anwendungsfalldiagramm ?
uml
use-case
rational-unified-process
Sevugarajan
quelle
quelle
Antworten:
Erweitern wird verwendet, wenn ein Anwendungsfall einem anderen erstklassigen Anwendungsfall Schritte hinzufügt.
Stellen Sie sich zum Beispiel vor, "Bargeld abheben" ist ein Anwendungsfall eines Geldautomaten. "Gebühr bewerten" würde "Bargeld abheben" verlängern und den bedingten "Verlängerungspunkt" beschreiben, der instanziiert wird, wenn der Geldautomatenbenutzer nicht bei der Einrichtung des Geldautomaten ein Bankkonto hat. Beachten Sie, dass der grundlegende Anwendungsfall "Bargeld abheben" für sich allein steht, ohne die Erweiterung.
Include wird verwendet, um Anwendungsfallfragmente zu extrahieren, die in mehreren Anwendungsfällen dupliziert wurden. Der enthaltene Anwendungsfall kann nicht alleine stehen und der ursprüngliche Anwendungsfall ist ohne den enthaltenen nicht vollständig. Dies sollte sparsam und nur in Fällen verwendet werden, in denen die Duplizierung signifikant ist und beabsichtigt (und nicht zufällig) ist.
Beispielsweise wäre der Ereignisfluss, der zu Beginn jedes ATM-Anwendungsfalls auftritt (wenn der Benutzer seine ATM-Karte einlegt, seine PIN eingibt und das Hauptmenü angezeigt wird), ein guter Kandidat für ein Include.
quelle
Include is used to extract use case fragments that are duplicated in multiple use cases
, was wird in diesen Schritten extrahiert :puts in their ATM card, enters their PIN, and is shown the main menu
? Vielen DankDies mag umstritten sein, aber das „Einschließen ist immer und erweitert ist manchmal“ ist ein sehr verbreitetes Missverständnis, das inzwischen fast als De-facto-Bedeutung übernommen wurde. Hier ist ein korrekter Ansatz (meiner Ansicht nach und gegen Jacobson, Fowler, Larmen und 10 andere Referenzen geprüft).
Beziehungen sind Abhängigkeiten
Der Schlüssel zum Einschließen und Erweitern von Anwendungsfallbeziehungen besteht darin, zu erkennen, dass der gepunktete Pfeil zwischen Anwendungsfällen, wie beim Rest der UML, eine Abhängigkeitsbeziehung ist. Ich werde die Begriffe "Basis", "Enthalten" und "Erweitern" verwenden, um auf die Anwendungsfallrollen zu verweisen.
umfassen
Ein Basisanwendungsfall hängt von den enthaltenen Anwendungsfällen ab. ohne sie ist der Basisanwendungsfall unvollständig, da die enthaltenen Anwendungsfälle Teilsequenzen der Interaktion darstellen, die immer ODER manchmal auftreten können. (Dies steht im Widerspruch zu einem weit verbreiteten Missverständnis darüber. Was Ihr Anwendungsfall vorschlägt, geschieht immer im Hauptszenario und manchmal in alternativen Flows. Dies hängt einfach davon ab, was Sie als Hauptszenario auswählen. Anwendungsfälle können leicht umstrukturiert werden, um einen anderen Flow darzustellen als Hauptszenario und das sollte keine Rolle spielen).
In der Best Practice der Einwegabhängigkeit kennt der Basisanwendungsfall den enthaltenen Anwendungsfall (und bezieht sich darauf), aber der enthaltene Anwendungsfall sollte den Basisanwendungsfall nicht kennen. Aus diesem Grund können eingeschlossene Anwendungsfälle sein: a) eigenständige Basisanwendungsfälle und b) gemeinsame Nutzung durch eine Reihe von Basisanwendungsfällen.
erweitern
Der erweiterte Anwendungsfall hängt vom Basisanwendungsfall ab. Es erweitert buchstäblich das im Basisanwendungsfall beschriebene Verhalten. Der Basisanwendungsfall sollte ein eigenständiger voll funktionsfähiger Anwendungsfall sein (einschließlich "Includes" natürlich), ohne die zusätzliche Funktionalität des erweiterten Anwendungsfalls.
Das Erweitern von Anwendungsfällen kann in verschiedenen Situationen verwendet werden:
Ein wichtiger Aspekt, der berücksichtigt werden muss, ist, dass der erweiterte Anwendungsfall das Verhalten an mehreren Stellen im Ablauf des Basisanwendungsfalls einfügen kann, nicht nur an einer einzelnen Stelle, wie dies bei einem eingeschlossenen Anwendungsfall der Fall ist. Aus diesem Grund ist es sehr unwahrscheinlich, dass ein erweiterter Anwendungsfall geeignet ist, mehr als einen Basisanwendungsfall zu erweitern.
In Bezug auf die Abhängigkeit hängt der erweiterte Anwendungsfall vom Basisanwendungsfall ab und ist wiederum eine Einwegabhängigkeit, dh der Basisanwendungsfall benötigt keinen Verweis auf den erweiterten Anwendungsfall in der Sequenz. Das bedeutet nicht, dass Sie die Erweiterungspunkte nicht demonstrieren oder dem erweiterten Anwendungsfall an anderer Stelle in der Vorlage eine X-Referenz hinzufügen können, aber der Basisanwendungsfall muss ohne den erweiterten Anwendungsfall funktionieren können.
ZUSAMMENFASSUNG
Ich hoffe, ich habe gezeigt, dass das verbreitete Missverständnis von „Includes sind immer, Extends sind manchmal“ entweder falsch oder bestenfalls simpel ist. Diese Version ist tatsächlich sinnvoller, wenn Sie alle Probleme in Bezug auf die Richtwirkung der Pfeile berücksichtigen, die das Missverständnis darstellt. Im richtigen Modell ist dies nur eine Abhängigkeit und ändert sich möglicherweise nicht, wenn Sie den Inhalt des Anwendungsfalls überarbeiten.
quelle
Ich benutze dies oft, um mich an die beiden zu erinnern:
Mein Anwendungsfall: Ich gehe in die Stadt.
beinhaltet -> Auto fahren
verlängert -> Benzin einfüllen
"Füllen Sie das Benzin" ist möglicherweise nicht immer erforderlich, kann jedoch optional basierend auf der im Auto verbleibenden Benzinmenge erforderlich sein. "Auto fahren" ist eine Voraussetzung, daher schließe ich ein.
quelle
Anwendungsfälle werden verwendet, um das Verhalten zu dokumentieren, z. B. um diese Frage zu beantworten.
Ein Verhalten erweitert ein anderes, wenn es zusätzlich, aber nicht unbedingt Teil des Verhaltens ist, z. B. die Antwort recherchieren.
Beachten Sie auch, dass das Nachforschen der Antwort nicht viel Sinn macht, wenn Sie nicht versuchen, die Frage zu beantworten.
Ein Verhalten ist in einem anderen enthalten, wenn es Teil des Einschlussverhaltens ist, z. B. Anmeldung zum Stapelaustausch.
Zur Verdeutlichung ist die Abbildung nur wahr, wenn Sie hier im Stapelüberlauf antworten möchten :).
Dies sind die technischen Definitionen aus UML 2.5, Seiten 671-672.
Ich habe hervorgehoben, was meiner Meinung nach wichtige Punkte sind.
Erweitert
Eine Erweiterung ist eine Beziehung von einer erweiterten UseCase (der Erweiterung) zu einer erweiterten UseCase (der erweitertenCase), die angibt, wie und wann das in der erweiterten UseCase definierte Verhalten in das in der erweiterten UseCase definierte Verhalten eingefügt werden kann. Die Erweiterung erfolgt an einem oder mehreren spezifischen Erweiterungspunkten, die im erweiterten UseCase definiert sind.
Extend soll verwendet werden, wenn es ein zusätzliches Verhalten gibt, das möglicherweise bedingt zu dem in einem oder mehreren UseCases definierten Verhalten hinzugefügt werden sollte.
Der erweiterte UseCase wird unabhängig vom erweiterten UseCase definiert und ist unabhängig vom erweiterten UseCase von Bedeutung . Andererseits definiert der erweiterte UseCase normalerweise ein Verhalten , das für sich genommen nicht unbedingt von Bedeutung ist . Stattdessen definiert der erweiterte UseCase eine Reihe modularer Verhaltensinkremente, die die Ausführung des erweiterten UseCase unter bestimmten Bedingungen erweitern.
...
Beinhaltet
Include ist eine DirectedRelationship zwischen zwei UseCases, die angibt, dass das Verhalten des enthaltenen UseCase (der Addition) in das Verhalten des Inclusive UseCase (des InclusiveCase ) eingefügt wird . Es ist auch eine Art NamedElement, so dass es im Kontext seines eigenen UseCase (einschließlichCase) einen Namen haben kann. Das Einschließen von UseCase kann von den Änderungen abhängen, die durch Ausführen des enthaltenen UseCase erzeugt werden. Der enthaltene UseCase muss verfügbar sein, damit das Verhalten des eingeschlossenen UseCase vollständig beschrieben werden kann.
Die Include-Beziehung soll verwendet werden, wenn das Verhalten von zwei oder mehr UseCases gemeinsame Teile aufweist. Dieser gemeinsame Teil wird dann in einen separaten UseCase extrahiert, der von allen Basis-UseCases aufgenommen wird, die diesen Teil gemeinsam haben . Da die Include-Beziehung in erster Linie für die Wiederverwendung gemeinsamer Teile verwendet wird, ist das, was in einem Basis-UseCase übrig bleibt, normalerweise nicht vollständig, sondern hängt davon ab, ob die enthaltenen Teile sinnvoll sind. Dies spiegelt sich in der Richtung der Beziehung wider, was darauf hinweist, dass der Basis-UseCase von der Addition abhängt, aber nicht umgekehrt.
...
quelle
Ich denke, es ist wichtig, die Absicht von Includes zu verstehen und zu erweitern:
Dies liest sich für mich als:
Include = Wiederverwendung von Funktionalität (dh die eingeschlossene Funktionalität wird verwendet oder könnte an anderer Stelle im System verwendet werden). Include bezeichnet daher eine Abhängigkeit von einem anderen Anwendungsfall.
Erweitert = Hinzufügen von (nicht wiederverwendet) Funktionalität und auch jede optionale Funktionalität. Erweiterungen können daher eines von zwei Dingen bezeichnen:
1. Hinzufügen neuer Funktionen zu einem Anwendungsfall (optional oder nicht)
2. Beliebig optional Anwendungsfälle (vorhanden oder nicht).
Zusammenfassung:
Include = Wiederverwendung von Funktionen
Extends = neue und / oder optionale Funktionalität
Am häufigsten finden Sie die zweite Verwendung (dh optionale Funktionalität) von Erweiterungen. Wenn die Funktionalität nicht optional ist, wird sie meistens in den Anwendungsfall selbst integriert, anstatt eine Erweiterung zu sein. Zumindest war das meine Erfahrung. (Julian C weist darauf hin, dass manchmal die erste Verwendung (dh das Hinzufügen neuer Funktionen) von Extends angezeigt wird, wenn ein Projekt in die zweite Phase eintritt.)
quelle
Vereinfachen,
zum
include
Ein typisches Beispiel: zwischen Anmelden und Passwort überprüfen
(Login) --- << include >> --- > (Passwort überprüfen)
Damit der Anmeldevorgang erfolgreich ist, muss auch "Passwort überprüfen" erfolgreich sein.
zum
extend
Ein typisches Beispiel: zwischen Login und Show-Fehlermeldung (nur manchmal passiert)
(Login) < --- << verlängern >> --- (Fehlermeldung anzeigen)
"Fehlermeldung anzeigen" tritt nur manchmal auf, wenn der Anmeldevorgang fehlgeschlagen ist.
quelle
Ich denke, was msdn hier erklärt hat, ist ziemlich leicht zu verstehen.
Include [5]
Verlängern [6]
quelle
Lassen Sie uns dies klarer machen. Wir verwenden
include
jedes Mal, wenn wir die Tatsache ausdrücken möchten, dass die Existenz eines Falles von der Existenz eines anderen abhängt.BEISPIELE:
Ein Benutzer kann erst online einkaufen, nachdem er sich in seinem Konto angemeldet hat. Mit anderen Worten, er kann erst einkaufen, wenn er sich in seinem Konto angemeldet hat.
Ein Benutzer kann nicht von einer Site herunterladen, bevor das Material hochgeladen wurde. Ich kann also nicht herunterladen, wenn nichts hochgeladen wurde.
Verstehst du es?
Es geht um bedingte Konsequenzen. Ich kann das nicht tun, wenn ich das vorher nicht getan habe .
Zumindest denke ich, dass dies der richtige Weg ist, den wir verwenden
Include
. Ich denke, das Beispiel mit Laptop und Garantie von rechts oben ist das überzeugendste!quelle
Wenn es dann Voraussetzungen für einen Anwendungsfall gibt, wählen Sie include.
Für Anwendungsfälle mit Authentifizierung, Worst-Case-Szenario oder optional, wählen Sie "Erweitern".
Beispiel: Für einen Anwendungsfall der Suche nach Zulassung, Termin, Ticketreservierung MÜSSEN SIE EIN Formular (Registrierungs- oder Feedback-Formular) AUSFÜLLEN.
Beispiel: Für einen Anwendungsfall, bei dem die Anmeldung überprüft oder in Ihrem Konto angemeldet wird, ist Ihre Authentifizierung ein Muss. Denken Sie auch an Worst-Case-Szenarien wo verlängern kommt zu spielen ...
Nicht überbeanspruchen, in die Diagramme aufnehmen und erweitern.
HALTE ES EINFACH DUMM !!!
quelle
Achten Sie auch auf die UML-Version: Es ist lange her, dass << verwendet >> und << enthält >> durch << enthalten >> und << erweitert >> durch << erweitern >> UND Verallgemeinerung ersetzt wurden .
Für mich ist das oft der irreführende Punkt: Als Beispiel handelt der Beitrag und Link von Stephanie von einer alten Version:
Tatsächlich gibt es keine wirkliche Alternative zu "Artikel bezahlen"! In der heutigen UML ist "Nachnahme" eine Erweiterung, und "Bezahlen mit Paypal" / "Bezahlen mit Karte" sind Spezialisierungen.
quelle
"Einschließen" wird verwendet, um den Basisanwendungsfall zu erweitern, und es ist eine Muss-Bedingung, dh der Lauf des eingeschlossenen Anwendungsfalls muss erfolgreich ausgeführt werden, um die Basisnutzung abzuschließen.
Beispiel: Betrachten Sie einen Fall von E-Mail-Service. Hier ist "Anmelden" ein enthaltener Anwendungsfall, der ausgeführt werden muss, um eine E-Mail zu senden (Basis-Anwendungsfall).
"Ausschließen" ist dagegen ein optionaler Anwendungsfall, der den Basisanwendungsfall erweitert. Der Basisanwendungsfall kann erfolgreich ausgeführt werden, auch ohne den erweiterten Anwendungsfall aufzurufen / aufzurufen.
Betrachten Sie beispielsweise "Laptop-Kauf" als Basis-Anwendungsfall und "Zusätzliche Garantie" als erweiterten Anwendungsfall. Hier können Sie den Basis-Anwendungsfall "Laptop-Kauf" auch ohne zusätzliche Garantie ausführen.
quelle
Login
ist überhaupt kein Anwendungsfall. Es ist eine Funktion, die ausgeführt wird, um eine Vorbedingung zu erfüllen.Dies ist eine großartige Ressource mit einer großartigen Erklärung: Was ist im Anwendungsfall enthalten? Was ist Extend im Anwendungsfall?
quelle
Diagrammelemente
Schauspieler: Wird auch als Rollen bezeichnet. Name und Stereotyp eines Schauspielers können auf der Registerkarte Eigenschaften geändert werden.
Vererbung: Verfeinerung der Beziehungen zwischen den Akteuren. Diese Beziehung kann einen Namen und ein Stereotyp tragen.
Anwendungsfälle: Diese können Erweiterungspunkte haben.
Erweiterungspunkte: Dies definiert einen Ort, an dem eine Erweiterung hinzugefügt werden kann.
Assoziationen: Zwischen Rollen und Anwendungsfällen. Es ist nützlich, Assoziationen Namen zu geben.
Abhängigkeiten: Zwischen Anwendungsfällen. Abhängigkeiten haben oft ein Stereotyp, um die Rolle der Abhängigkeit besser zu definieren. Um ein Stereotyp auszuwählen, wählen Sie die Abhängigkeit aus dem Diagramm oder dem Navigationsbereich aus und ändern Sie das Stereotyp auf der Registerkarte Eigenschaften. Es gibt zwei spezielle Arten von Abhängigkeiten:
<<extend>>
und<<include>>
, für die Poseidon eigene Schaltflächen anbietet (siehe unten).Beziehung erweitern: Eine unidirektionale Beziehung zwischen zwei Anwendungsfällen. Eine erweiterte Beziehung zwischen Anwendungsfall B und Anwendungsfall A bedeutet, dass das Verhalten von B in A aufgenommen werden kann.
Beziehung einschließen: Eine unidirektionale Beziehung zwischen zwei Anwendungsfällen. Eine solche Beziehung zwischen den Anwendungsfällen A und B bedeutet, dass das Verhalten von B immer in A enthalten ist.
Systemgrenze: Die Systemgrenze ist in Poseidon for UML nicht als Modellelement implementiert. Sie können einfach ein Rechteck zeichnen, es in den Hintergrund senden und als Systemrand verwenden, indem Sie alle entsprechenden Anwendungsfälle in das Rechteck einfügen.
quelle
Beide
<include>
und<extend>
hängen von der Basisklasse ab, sind jedoch<extend>
optional, dh sie werden von der Basisklasse abgeleitet, können jedoch aus Sicht der Benutzer verwendet oder nicht verwendet werden.<include>
ist in der Basisklasse enthalten, dh es ist obligatorisch, es<include>
in Ihrem Anwendungsfall zu verwenden, da es sonst als unvollständig angesehen wird.z.B:
Im Geldautomatenbau (aus Anwendersicht):
1: Auszahlung, Einzahlung von Bargeld und Überprüfung des Kontos fallen unter,
<extend>
da es vom Benutzer abhängt, ob eine Auszahlung oder Einzahlung oder ein Scheck erfolgt. Dies sind optionale Dinge, die der Benutzer tut.2: "Geben Sie die PIN ein, platzieren Sie die Karte, entfernen Sie die Karte" Dies sind die Dinge, die darunter fallen,
<include>
weil der Benutzer eine Karte platzieren und eine gültige PIN zur Überprüfung eingeben muss und sollte.quelle
Ich empfehle die Verwendung nicht, um mich an die beiden zu erinnern:
Mein Anwendungsfall: Ich gehe in die Stadt.
beinhaltet -> Auto fahren
verlängert -> Benzin einfüllen
Ich würde es vorziehen, wenn Sie Folgendes verwenden: Mein Anwendungsfall: Ich gehe in die Stadt.
verlängert -> das Auto fahren
beinhaltet -> Benzin einfüllen
Mir wird beigebracht, dass eine erweiterte Beziehung das Verhalten einer Basisklasse fortsetzt. Die Funktionen der Basisklasse müssen vorhanden sein. Die Include-Beziehung hingegen ähnelt Funktionen, die aufgerufen werden können. Mai ist fett gedruckt.
Dies ist an der Wiederverwendung von Agilemodellen in Anwendungsfallmodellen zu erkennen
quelle
Der Unterschied zwischen beiden wurde hier erklärt. Was jedoch nicht erklärt wurde, ist die Tatsache, dass
<<include>>
und<<extend>>
sollte überhaupt nicht verwendet werden.Wenn Sie Bittner / Spence lesen, wissen Sie, dass es in Anwendungsfällen um Synthese und nicht um Analyse geht. Eine Wiederverwendung von Anwendungsfällen ist Unsinn. Es zeigt deutlich, dass Sie Ihre Domain falsch geschnitten haben. Der Mehrwert muss per se eindeutig sein. Die einzige Wiederverwendung des mir bekannten Mehrwerts ist das Franchise. Also, wenn Sie im Burgergeschäft sind, nett. Aber überall sonst besteht Ihre Aufgabe als BA darin, einen USP zu finden. Und das muss in guten Anwendungsfällen dargestellt werden.
Immer wenn ich Leute sehe, die eine dieser Beziehungen verwenden, versuchen sie, eine funktionale Zerlegung durchzuführen. Und das ist einfach falsch.
Um es einfach auszudrücken: Wenn Sie Ihrem Chef ohne zu zögern antworten können "Ich habe getan ...", dann ist das "..." Ihr Anwendungsfall, da Sie Geld dafür haben. (Das wird auch deutlich machen, dass "Login" überhaupt kein Anwendungsfall ist.)
In dieser Hinsicht ist es sehr unwahrscheinlich, eigenständige Anwendungsfälle zu finden, die andere Anwendungsfälle enthalten oder erweitern. Schließlich können Sie verwenden
<<extend>>
, um die Optionalität Ihres Systems anzuzeigen, dh ein Lizenzierungsschema, mit dem Anwendungsfälle für einige Lizenzen eingeschlossen oder weggelassen werden können. Aber sonst - meide sie einfach.quelle
Extends wird verwendet, wenn Sie verstehen, dass Ihr Anwendungsfall zu komplex ist. Sie extrahieren also die komplexen Schritte in ihre eigenen Anwendungsfälle für "Erweiterungen".
Includes wird verwendet, wenn in zwei Anwendungsfällen häufiges Verhalten auftritt. Sie abstrahieren also das gemeinsame Verhalten in einen separaten "abstrakten" Anwendungsfall.
(Ref: Jeffrey L. Whitten, Lonnie D. Bentley, Systemanalyse- und Entwurfsmethoden, McGraw-Hill / Irwin, 2007)
quelle
Die Include- Beziehung ermöglicht es einem Anwendungsfall, die Schritte eines anderen Anwendungsfalls einzuschließen.
Angenommen, Sie haben ein Amazon-Konto und möchten eine Bestellung überprüfen. Es ist unmöglich, die Bestellung zu überprüfen, ohne sich zuvor in Ihrem Konto anzumelden. Der Ablauf der Ereignisse möchte also so ...
Die Erweiterungsbeziehung wird verwendet, um dem Ablauf eines Anwendungsfalls einen zusätzlichen Schritt hinzuzufügen, der normalerweise ein optionaler Schritt ist ...
Stellen Sie sich vor, wir sprechen immer noch über Ihren Amazon-Account. Nehmen wir an, der Basisfall ist Order und der Anwendungsfall für Erweiterungen ist Amazon Prime . Der Benutzer kann wählen, ob er den Artikel nur regelmäßig bestellen möchte, oder er hat die Möglichkeit, Amazon Prime auszuwählen, um sicherzustellen, dass seine Bestellung zu höheren Kosten schneller eintrifft.
Beachten Sie jedoch, dass der Benutzer Amazon Prime nicht auswählen muss. Dies ist nur eine Option. Er kann diesen Anwendungsfall ignorieren.
quelle
Amazon Prime
sein? Es enthält nicht einmal ein Verb.Ich stelle mir "Includes" gerne als notwendige Voraussetzung / Begleitung für den Basisanwendungsfall vor. Dies bedeutet, dass der Basisanwendungsfall ohne den darin enthaltenen Anwendungsfall nicht als vollständig betrachtet werden kann. Ich werde das Beispiel einer E-Commerce-Website geben, die Artikel an Kunden verkauft. Es gibt keine Möglichkeit, einen Artikel zu bezahlen, ohne ihn zuerst auszuwählen und in den Warenkorb zu legen. Dies bedeutet, dass der Anwendungsfall "Artikel bezahlen" "Artikel auswählen" enthält.
Es gibt verschiedene Verwendungszwecke von Erweiterungen, aber ich stelle es mir gerne als Alternative vor, die verwendet werden kann oder nicht. Zum Beispiel - immer noch auf der E-Commerce-Website. Wenn Sie für einen Artikel bezahlen, können Sie wählen, ob Sie per Nachnahme, mit Paypal oder mit Karte bezahlen möchten. Dies sind alles Alternativen zum Anwendungsfall "Artikel bezahlen". Ich kann je nach Wunsch eine dieser Optionen wählen.
Lesen Sie meinen Artikel hier, um mehr Klarheit und die Regeln für Anwendungsfälle zu erhalten:
http://businessanalystlearnings.com/ba-techniques/2013/2/20/use-case-diagram-the-basics
quelle
login
nochcreate
Konto sind Anwendungsfälle. Beides sind Funktionen. Daher -1