Was ist der Unterschied zwischen Einschließen und Erweitern im Anwendungsfalldiagramm?


377

Was ist der Unterschied zwischen includeund extendin einem Anwendungsfalldiagramm ?


Ich würde nicht besser als Scott Ambler erklären, wie sie für die Wiederverwendung in Anwendungsfallmodellen verwendet werden können und wie sie sich unterscheiden. Anstatt ihn zu paraphrasieren, würde ich vorschlagen, Wiederverwendung in Anwendungsfallmodellen zu lesen : & lt; & lt; & gt; & lt; & lt; & lt; & gt; & gt; und Vererbung einschließen .
Pascal Thivent

7
In der Tat ist diese Frage programmierungsbezogen ...
Pascal Thivent

35
@closers: Dies ist eine gültige Frage.
Henk Holterman

82
Kurz -> include = Madatory, verlängern = Optional
Thein

2
@Megamind ‚erweitern = Optional‘ ist nicht ganz richtig ... Schauen Sie sich das Beispiel Link
Shanaka Jayalath

Antworten:


262

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.


1
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 Dank
Blaze Tama

2
Ich muss nicht zustimmen, dass die "Anmeldeschritte" ein guter Kandidat für ein Include sind . Diese Schritte bilden einen eigenen Anwendungsfall und sollten über Nachbedingungen -> Vorbedingungen mit den anderen Anwendungsfällen verknüpft werden.
Bruno Brant

22
@Bruno - Niemand würde sich an einem Geldautomaten anmelden und einfach glücklich weggehen. Konkrete Anwendungsfälle müssen dem Akteur einen eigenständigen Wert bieten, andernfalls sind sie nur Funktionen in einer funktionalen Zerlegung.
Doug Knesek

@Blaze - Alle Teile des Anmeldeflusses, einschließlich dieser Schritte.
Doug Knesek

1
Wie könnte Assess Fee eine UC sein? Dies ist ein bedingter Ablauf in einem Szenario. Es ist überhaupt kein Mehrwert. Es ist das genaue Gegenteil.
qwerty_so

113

Dies 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:

  1. Der Basisanwendungsfall stellt die "Muss" -Funktionalität eines Projekts dar, während der erweiterte Anwendungsfall ein optionales (sollte / könnte / wollen) Verhalten darstellt. Hier ist der Begriff optional relevant - optional, ob er erstellt / bereitgestellt werden soll, anstatt optional, ob er manchmal als Teil der Basisanwendungsfallsequenz ausgeführt wird.
  2. In Phase 1 können Sie den Basisanwendungsfall bereitstellen, der die Anforderungen zu diesem Zeitpunkt erfüllt, und in Phase 2 werden zusätzliche Funktionen hinzugefügt, die im erweiterten Anwendungsfall beschrieben werden. Dies kann Sequenzen enthalten, die immer oder manchmal ausgeführt werden, nachdem Phase 2 geliefert wurde (wiederum entgegen dem weit verbreiteten Missverständnis).
  3. Es kann verwendet werden, um Teilsequenzen des Basisanwendungsfalls zu extrahieren, insbesondere wenn sie ein "außergewöhnliches" komplexes Verhalten mit eigenen alternativen Flüssen darstellen.

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.


3
wäre toll, wenn Sie einige Referenzen für diese Behauptung hinzufügen könnten
Mibollma

1
Es tut uns leid, ein UML-Diagramm auf diese Weise zu erstellen, während die Software Iterationen durchläuft, die neue Funktionen hinzufügen, die im Endzustand immer erforderlich waren. Dies wäre jedoch unnötig verwirrend und komplex. Ich bevorzuge Doug Kneseks Ansatz, der viel einfacher zu verstehen und zu bearbeiten ist, ohne unnötige Verwirrung oder Komplexität zu verursachen.
BigMac66

1
Obwohl Sie das Recht haben, das "Includes sind immer und erweitert sind manchmal" in Bezug auf Anwendungsfallinstanzen in Frage zu stellen, kann Ihre Entscheidung, die "Extend" -Semantik zur Unterstützung der inkrementellen Übermittlung auszunutzen, andere dazu veranlassen, zu denken, dass "Erweitern" ÜBER inkrementelle Übermittlung ist.
Doug Knesek

81

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.


Aber "Benzin tanken" bedeutet eigentlich "in die Stadt gehen", nicht umgekehrt, oder?
Petr Hudeček

1
Ich denke, es hängt vom Standpunkt Petr ab. Imho "Benzin tanken" kann tatsächlich auch das Auto verlängern.
Daniel Perník

2
In die Stadt zu gehen und das Benzin zu füllen, klingt wie zwei völlig unabhängige Dinge, die zufällig passieren könnten.
OdraEncoded

1
@OdraEncoded ist korrekt. Benzin tanken ist nicht abhängig davon, in die Stadt zu gehen.
Nonybrighto

57

Anwendungsfälle werden verwendet, um das Verhalten zu dokumentieren, z. B. um diese Frage zu beantworten.

Beantworten Sie den Anwendungsfall der Frage

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.

Forschung die Antwort erweitern

Ein Verhalten ist in einem anderen enthalten, wenn es Teil des Einschlussverhaltens ist, z. B. Anmeldung zum Stapelaustausch.

Login zum Stack Exchange gehören

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.

...


23

Ich denke, es ist wichtig, die Absicht von Includes zu verstehen und zu erweitern:

"Die Include-Beziehung dient zur Wiederverwendung von Verhalten, das von einem anderen Anwendungsfall modelliert wurde , während die Extend-Beziehung zum Hinzufügen von Teilen zu vorhandenen Anwendungsfällen sowie zum Modellieren optionaler Systemdienste vorgesehen ist" (Overgaard und Palmkvist, Anwendungsfälle: Muster und Blaupausen. Addison -Wesley, 2004).


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.)


23

Vereinfachen,

zum include

  1. Wenn der Basisanwendungsfall ausgeführt wird, wird der enthaltene Anwendungsfall JEDERZEIT ausgeführt .
  2. Der Basisanwendungsfall erforderte die Fertigstellung des enthaltenen Anwendungsfalls, um abgeschlossen zu werden.

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

  1. Wenn der Basisanwendungsfall ausgeführt wird, wird der erweiterte Anwendungsfall nur EINMAL ausgeführt
  2. Der erweiterte Anwendungsfall tritt nur auf, wenn bestimmte Kriterien erfüllt sind.

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.


tolles Beispiel!
Pavel Durov

15

Ich denke, was msdn hier erklärt hat, ist ziemlich leicht zu verstehen.

Include [5]

Ein eingeschlossener Anwendungsfall ruft den eingeschlossenen auf oder ruft ihn auf. Die Einbeziehung wird verwendet, um zu zeigen, wie ein Anwendungsfall in kleinere Schritte unterteilt wird. Der mitgelieferte Anwendungsfall befindet sich am Ende der Pfeilspitze.

Verlängern [6]

In der Zwischenzeit fügt ein erweiterter Anwendungsfall dem erweiterten Anwendungsfall Ziele und Schritte hinzu. Die Erweiterungen funktionieren nur unter bestimmten Bedingungen. Der erweiterte Anwendungsfall befindet sich am Ende der Pfeilspitze.

Geben Sie hier die Bildbeschreibung ein


Sie sollten zumindest das Wesentliche in Ihrer Antwort zitieren und nicht einfach einen Link zu einer Antwort hinzufügen. Darüber hinaus ist die Erklärung, auf die Sie sich beziehen, auch nicht wirklich gut oder präzise.
Geert Bellekens

Hallo @GeertBellekens, ich habe einige Details hinzugefügt, um den Unterschied zwischen Einschließen und Erweitern zu erklären. IMHO kommuniziert das Diagramm selbst deutlich den Unterschied und dafür wird das Diagramm verwendet.
Etic

Ich bin froh, dass Sie die Erklärungen hinzugefügt haben, aber ich denke immer noch, dass sie nicht sehr gut oder präzise sind. Menschen (auch oder gerade wenn sie für msdn schreiben) sollten aufhören, ihre eigenen Definitionen für etwas zu erfinden, das bereits in einem Standard definiert ist.
Geert Bellekens

15

Lassen Sie uns dies klarer machen. Wir verwenden includejedes 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!


1
Über verlängert?
AlphaGoku

8

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 !!!


6

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:

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.

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.


5

"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.


Vielleicht würde der Fall der "Zahlung" als "Inklusiv" für den Kauf eines Laptops dienen? Ich sage das, weil es schön ist, die Beispiele "zusammen" im selben Szenario zu haben. Eine Zahlung wird auch in vielen verschiedenen Szenarien verwendet, sodass es sich möglicherweise um einen geeigneten Kandidaten für << include >> handelt.
Baxx

Loginist überhaupt kein Anwendungsfall. Es ist eine Funktion, die ausgeführt wird, um eine Vorbedingung zu erfüllen.
qwerty_so


4

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.


4

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.


3

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


Es sollte eher "Benzin füllen -> verlängern" lauten, da Ihr Haupt-UC "Benzin füllen" nicht verlängert. Außer Sie sind eine Benzinfirma.
qwerty_so

3

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.


3

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)


1
Extend hat nichts mit einem Anwendungsfall zu tun, der einfach zu komplex ist. Dieser Ansatz führt dazu, dass eher eine funktionale Zerlegung als ein tatsächliches Anwendungsfallmodell erstellt wird.
Doug Knesek

1
Ich denke, dass Software-Engineering-Konzepte und im Allgemeinen alles, was sich den Geisteswissenschaften nähert, viel meinungsbasiert wird. Ich habe den Verweis eingefügt (siehe Seite 248). Sei nicht zu hart, Mann :)
Mrmashal

3

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 ...

Geben Sie hier die Bildbeschreibung ein

Die Erweiterungsbeziehung wird verwendet, um dem Ablauf eines Anwendungsfalls einen zusätzlichen Schritt hinzuzufügen, der normalerweise ein optionaler Schritt ist ...

Geben Sie hier die Bildbeschreibung ein

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.


Was für ein Anwendungsfall sollte Amazon Primesein? Es enthält nicht einmal ein Verb.
qwerty_so

0

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


1
Willkommen bei Stack Overflow! Vielen Dank für Ihre Antwort! Bitte lesen Sie die FAQ zur Eigenwerbung sorgfältig durch. Eigentlich keine schlechte Antwort; Beachten Sie jedoch, was in den häufig gestellten Fragen zu Posts mit Eigenwerbung steht.
Andrew Barber

Das UC-Diagramm am Ende Ihres Links ist nur ein Anti-Pattern. Weder loginnoch create Konto sind Anwendungsfälle. Beides sind Funktionen. Daher -1
qwerty_so
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.