Thursday 16 November 2017

Sequenz Diagramm Für Online Handelssystem


UML-Sequenzdiagramme modellieren den Logikfluss in Ihrem System visuell und ermöglichen es Ihnen, Ihre Logik zu dokumentieren und zu validieren und werden häufig sowohl für Analyse - als auch für Designzwecke verwendet. Sequenzdiagramme sind die beliebtesten UML-Artefakte für die dynamische Modellierung, die sich auf die Identifizierung des Verhaltens in Ihrem System konzentrieren. Andere dynamische Modellierungstechniken umfassen Aktivitätsdiagramme. Kommunikationsdiagramme Timing-Diagramm Und Interaktionsübersicht. Sequenzdiagramme, zusammen mit Klassendiagrammen und physikalischen Datenmodellen sind meiner Meinung nach die wichtigsten Design-Level-Modelle für die moderne Business Application Development. Sequenzdiagramme werden typischerweise zum Modell verwendet: Nutzungsszenarien. Ein Gebrauchsszenario ist eine Beschreibung eines möglichen Wegs, das Ihr System verwendet wird. Die Logik eines Nutzungsszenarios kann Teil eines Anwendungsfalls sein, vielleicht ein alternativer Kurs. Es kann auch ein ganzer Durchlauf durch einen Gebrauchsfall sein, wie die Logik, die durch die grundlegende Vorgehensweise oder einen Teil des grundlegenden Vorgehens beschrieben wird, sowie ein oder mehrere alternative Szenarien. Die Logik eines Nutzungsszenarios kann auch ein Durchlauf durch die Logik sein, die in mehreren Anwendungsfällen enthalten ist. Zum Beispiel schreibt sich ein Student an der Universität ein und schreibt dann sofort in drei Seminaren ein. Die Logik der Methoden. Sequenzdiagramme können verwendet werden, um die Logik einer komplexen Operation, Funktion oder Prozedur zu erforschen. Eine Möglichkeit, an Sequenzdiagramme zu denken, besonders hoch detaillierte Diagramme, ist als visueller Objektcode. Die Logik der Dienstleistungen. Ein Service ist effektiv eine High-Level-Methode, oft eine, die von einer Vielzahl von Kunden aufgerufen werden kann. Dazu gehören Web-Services sowie Geschäftsvorfälle, die von einer Vielzahl von Technologien wie CICSCOBOL oder CORBA-konformen Objektanforderungs-Brokern (ORBs) implementiert werden. Beginnen wir mit drei einfachen Beispielen. Abbildung 1 zeigt ein UML-Sequenzdiagramm für die Einschreibung im Universitätsgebrauch, wobei ein System-Level-Ansatz stattfindet, bei dem die Wechselwirkungen zwischen den Akteuren und dem System gezeigt werden. Abbildung 2 zeigt ein Sequenzdiagramm für die detaillierte Logik eines Dienstes, um festzustellen, ob ein Bewerber bereits ein Student an der Universität ist. Abbildung 3 zeigt die Logik für die Teilnahme an einem Seminar. Ich werde oft ein System-Level-Sequenz-Diagramm mit meinen Stakeholdern zu helfen, sowohl visualisieren und validieren die Logik eines Nutzung Szenario. Es hilft mir auch, signifikante methodsservices zu identifizieren, wie z. B. die Überprüfung, ob der Bewerber bereits als Student existiert, was mein System unterstützen muss. Abbildung 1. Sequenzdiagramm auf Systemebene. Der Grund, warum sie als Sequenzdiagramme bezeichnet werden, sollte offensichtlich sein: Die sequentielle Natur der Logik wird über die Reihenfolge der Meldungen (die horizontalen Pfeile) angezeigt. Die erste Nachricht beginnt in der oberen linken Ecke, die nächste Nachricht erscheint genau darunter, und so weiter. Die Boxen über dem Oberseite des Diagramms stellen Klassifikatoren oder ihre Instanzen dar, verwenden typischerweise Fälle, Objekte, Klassen oder Akteure. Da Sie Nachrichten an Objekte und Klassen senden können, reagieren Objekte auf Nachrichten durch den Aufruf einer Operation und Klassen tun dies durch den Aufruf von statischen Operationen, es ist sinnvoll, sowohl auf Sequenzdiagrammen aufzunehmen. Weil Akteure in den Einsatzszenarien eintreten und aktiv mitwirken, können sie auch in Sequenzdiagrammen aufgenommen werden. Objekte haben Etiketten im Standard-UML-Formatname: ClassName, wobei der Name optional ist (Objekte, denen ein Name im Diagramm gegeben wurde, werden als anonyme Objekte bezeichnet). Klassen haben Etiketten im Format ClassName. Und Akteure haben Namen im Format Actor Name. Beachten Sie, wie Objektetiketten unterstrichen sind, Klassen und Akteure nicht. Zum Beispiel in Abbildung 3. Sie sehen das Studentenobjekt hat den Namen aStudent. Dies wird als benanntes Objekt bezeichnet, während die Instanz des Seminars ein anonymer Gegenstand ist. Die Instanz des Studenten wurde einen Namen gegeben, weil er an mehreren Stellen als Parameter in Nachrichten verwendet wird, während die Instanz des Seminars nicht irgendwo anders im Diagramm referenziert werden musste und somit anonym sein könnte. In Abbildung 2 sendet die Schülerklasse Nachrichten an die PersistenceFramework-Klasse (die das Stereotyp ltltinfrastructuregtgt gegeben werden konnte, aber nicht das Diagramm einfach zu halten). Jede Nachricht, die an eine Klasse gesendet wird, ist als statische Methode implementiert, mehr dazu später. Die gestrichelten Linien, die von den Boxen hängen, heißen Objekt-Rettungsleinen, die die Lebensdauer des Objekts während des Szenarios darstellen. Die langen, dünnen Boxen auf den Rettungsleinen sind Aktivierungsboxen, die auch Methoden-Aufruf-Boxen genannt werden, die anzeigen, dass die Verarbeitung von der Zielobjektklasse durchgeführt wird, um eine Nachricht zu erfüllen. Ich werde nur Aktivierungsboxen zeichnen, wenn Im mit einem Werkzeug, das sie nativ unterstützt, wie ein anspruchsvolles CASE-Tool, und wenn ich Leistungsprobleme erforschen möchte. Aktivierungsboxen sind zu peinlich, um auf Whiteboards zu zeichnen oder mit einfachen Zeichenwerkzeugen, die sie nicht leicht unterstützen. Das X an der Unterseite eines Aktivierungskastens, dessen Beispiel in Abbildung 4 dargestellt ist, ist eine UML-Konvention, um anzuzeigen, dass ein Objekt aus dem Speicher entfernt wurde. In Sprachen wie C, wo Sie brauchen, um Speicher selbst zu verwalten müssen Sie einen Objekt-Destruktor aufrufen, in der Regel modelliert eine Nachricht mit dem Stereotyp von ltltdestroygtgt. In Sprachen wie Java oder C, wo Speicher für Sie verwaltet wird und Objekte, die nicht mehr benötigt werden, werden automatisch aus dem Speicher entfernt, was oft als Garbage Collection bezeichnet wird, müssen Sie die Nachricht nicht modellieren. Ich bin in der Regel nicht mit Modellierung Objekt Zerstörung überhaupt und wird stattdessen vertrauen, dass die Programmierer, oft ich selbst, wird Low-Level-Details wie diese angemessen zu implementieren. Abbildung 4 zeigt ein komplexes UML-Sequenzdiagramm für die grundlegende Vorgehensweise für die Einschreibung im Seminar Use Case. Dies ist ein alternativer Weg, um die Logik eines Nutzungsszenarios zu modellieren, anstatt es auf der Systemebene wie zB Abbildung 1 zu tun, einfach in die Modellierung der detaillierten Logik auf der Objektebene eintauchen. Ich nehme diesen Ansatz, wenn ich mit Entwicklern arbeite, die erfahrene Sequenzdiagramme sind und ich habe einen großen Arbeitsraum (entweder ein riesiges Whiteboard oder ein CASE-Tool, das auf einem Arbeitsplatz mit einem sehr großen Bildschirm und einer guten Grafikkarte installiert ist). Die meiste Zeit entzünden Sie zuerst System-Level-Diagramme und erstellen dann kleine Diagramme entlang der Zeilen dessen, was in den Fig. 2 und 3 gezeigt ist. Abbildung 4. Grundlegende Vorgehensweise für die Einschreibung im Seminar Anwendungsfall. Meldungen werden auf UML-Sequenzdiagrammen als markierte Pfeile angezeigt, wenn die Quelle und das Ziel einer Nachricht ein Objekt oder eine Klasse ist, ist die Beschriftung die Signatur der Methode, die als Antwort auf die Nachricht aufgerufen wird. Wenn jedoch entweder die Quelle oder das Ziel ein menschlicher Akteur ist, dann wird die Nachricht mit einem kurzen Text beschriftet, der die mitgeteilten Informationen beschreibt. Beispielsweise sendet das EnrollInSeminar-Objekt in Abbildung 4 die Nachricht isElableToEnroll (theStudent) an die Instanz des Seminars. Beachten Sie, wie ich sowohl den Methodennamen als auch den Namen der Parameter einbeziehe. Der Schüler-Akteur informiert das SecurityLogon-Objekt über die Nachrichten mit dem Namen Name und Schüler-Nummer (diese wirklich arenten Nachrichten, sie sind tatsächlich Benutzerinteraktionen). Rückgabewerte werden wahlweise mit einem gestrichelten Pfeil mit einem Etikett angegeben, das den Rückgabewert angibt. Zum Beispiel wird der Rückgabewert der Student angezeigt, der aus der Schülerklasse als Ergebnis des Aufrufs einer Nachricht zurückkommt, während kein Rückgabewert als Ergebnis des Sendens der Nachricht isElableToEnroll (theStudent) an Seminar angezeigt wird. Mein Stil ist nicht, um die Rückgabewerte anzuzeigen, wenn es offensichtlich ist, was zurückgegeben wird, also störe ich nicht meine Sequenzdiagramme (wie Sie sehen können, werden Sequenzdiagramme ziemlich schnell kompliziert). Abbildung 5 zeigt eine alternative Möglichkeit, Rückgabewerte mit der Formatnachricht anzugeben: returnValue für Nachrichten, wie Sie mit isEligibleToEnroll (theStudent) sehen können: false. Beachten Sie die Verwendung von Stereotypen im gesamten Diagramm. Für die Boxen habe ich die Stereotypen ltltactorgtgt, ltltcontrollergtgt und ltltUIgtgt angewendet, die anzeigen, dass sie einen Akteur, eine Controller-Klasse oder eine Benutzerschnittstelle (UI) - Klasse darstellen. Ive verwendet auch visuelle Stereotypen auf einigen Diagrammen eine Stockzahl für Akteure das Robustheitsdiagramm visuelle Stereotypen für Controller-, Interface - und Entity-Objekte und eine Drum für die Datenbank. Stereotypen werden auch bei Nachrichten verwendet. Häufige Praxis bei UML-Diagrammen ist es, Schöpfungs - und Zerstörungsnachrichten mit den Stereotypen von ltltcreategtgt und ltltdestroygtgt anzuzeigen. Zum Beispiel sehen Sie das SecurityLogon-Objekt auf diese Weise erstellt (eigentlich würde diese Nachricht wahrscheinlich an die Klasse gesendet werden, die dann zu einem Rückgabewert des erstellten Objekts führen würde, also habe ich ein bisschen betrogen). Dieses Objekt zerstört sich später in ähnlicher Weise, vermutlich wenn das Fenster geschlossen ist. Ich habe eine UML-Note in Abbildung 4 Notizen verwendet werden grundsätzlich Freiform-Text, der auf jedem UML-Diagramm platziert werden kann, um einen Header für das Diagramm, die Angabe seiner Titel und Bezeichner (wie Sie vielleicht bemerkt haben, geben wir eindeutige Identifikationen für alle Artefakte, die ich beabsichtige zu halten). Notizen werden als ein Stück Papier mit der oberen rechten Ecke umgefaltet dargestellt. Ich habe auch eine Notiz verwendet, um zukünftige Arbeit anzugeben, die entweder während der Analyse oder des Designs in diesem Diagramm durchgeführt werden muss - die Qualifikation () - Meldung stellt wahrscheinlich eine Reihe von Nachrichten dar, die an das Studentenobjekt gesendet werden. Gemeinsame UML-Praxis ist es, eine Notiz an ein anderes Modellelement mit einer gestrichelten Linie zu verankern, wenn dies angemessen ist, in diesem Fall ist die Notiz an die Nachricht angehängt. Obwohl Abbildung 4 Modelle die Logik der grundlegenden Vorgehensweise für die Einschreibung in Seminar verwenden Fall, wie würden Sie gehen über Modellierung alternativen Kurse Der einfachste Weg, dies zu tun ist, um ein einziges Sequenzdiagramm für jeden alternativen Kurs zu erstellen, wie Sie sehen, in Abbildung 5. Dieses Diagramm modelliert nur die Logik des alternativen Kurses, wie man durch die Nummerierung der Schritte auf der linken Seite des Diagramms erkennen kann, und die Header-Note für das Diagramm zeigt an, dass es sich um einen alternativen Ablauf handelt. Beachten Sie auch, wie die ID dieses Diagramms enthält, dass dies alternativer Kurs C ist, noch eine andere Modellierung Faustregel, die ich im Laufe der Jahre nützlich gefunden habe. Lets betrachten andere Sequenzdiagramm-Notation. Abbildung 5 enthält eine erste Nachricht, Student wählt Seminar. Die durch den ausgefüllten Kreis gekennzeichnet ist. Dies könnte leicht über einen Methodenaufruf, vielleicht Einschreibung (Seminar) angezeigt worden sein. Abbildung 6 zeigt eine weitere Möglichkeit, die Objekterstellung anzuzeigen, die die neue Nachricht an eine Klasse sendet. Weve tatsächlich gesehen drei Möglichkeiten, dies zu erreichen, die beiden anderen sind, um eine Nachricht mit dem ltltcreategtgt Stereotyp und zu senden, um eine Nachricht in die Seite des Klassifizierer-Symbols zu senden (zum Beispiel in Abbildung 4 die Nachricht geht in die Seite von EnrollInSeminar oder in Abbildung 6 Die Nachricht, die in die Seite von StudentInfoPage geht, mein Rat ist, einen Stil zu wählen und dabei zu bleiben, die Figuren 6 und 7 zeigen jeweils eine Möglichkeit, eine Schlepplogik anzuzeigen. Eine Möglichkeit ist, einen Rahmen mit der Etikettenschleife zu zeigen und eine Einschränkung anzuzeigen Was durchlaufen wird, wie zum Beispiel für jedes Seminar in Abbildung 6. Ein anderer Ansatz ist, einfach einer Botschaft vorzugehen, die mehrmals mit einem Sternchen aufgerufen wird, wie Sie in Abbildung 7 mit der Einbeziehung des Einschreibens in Seminar verwenden. Abbildung 6 enthält eine asynchrone Nachricht, die Nachricht an den Systemdrucker, der die Teilpfeilspitze hat. Eine asynchrone Nachricht ist eine, bei der der Absender nicht auf das Ergebnis der Nachricht wartet, stattdessen verarbeitet er das Ergebnis, wenn und wenn es jemals wieder kommt. Bis zu diesem Punkt sind alle anderen Meldungen synchron, Meldungen, bei denen der Absender auf das Ergebnis wartet, bevor er fortfährt. Es ist üblich, asynchrone Nachrichten an Hardwaregeräte oder autonome Softwaredienste wie Nachrichtenbusse zu senden. Die Methode der Modellierung der Einbeziehung von Anwendungsfällen in Abbildung 7 ist etwas, was ich zuerst vorgeschlagen in The Elements of UML-Stil, obwohl ich keinen Zweifel daran, dass andere diesen Ansatz auch verwenden. Ich zeige grundsätzlich den Use Case als Blase über die Oberseite des Diagramms, genau wie jeder andere Klassifikator und zeige eine Nachricht, die es mit dem ltltincludegtgt Stereotyp geschickt hat. Dies steht im Einklang mit der Verwendung von Falldiagrammen und Sequenzdiagrammen. Abbildung 7 ist auch interessant, weil es zeigt, wie man bedingte Logik modelliert. In diesem Fall wird ein Rahmen mit dem Etikett alt zusammen mit einem Wächter verwendet, in diesem Fall Antragsteller auf Berechtigungsliste. Der Rahmen ist in durch gestrichelte Linien getrennte Bereiche getrennt. In diesem Fall gibt es zwei Regionen, eine für jede Alternative, obwohl man so viele Regionen wie Sie benötigen kann (um das visuelle Äquivalent einer Fall-Anweisung zu unterstützen). Jede Region benötigt einen Wächter. Visuelle Codierung mit Sequenzdiagrammen Früher stellte ich fest, dass Sequenzdiagramme effektiv eine Form der visuellen Codierung sind, oder vielleicht eine andere Möglichkeit, daran zu denken, dass Sequenzdiagramme für sehr detailliertes Design verwendet werden können. Als ich das Sequenzdiagramm von Abbildung 4 entwickelte, habe ich mehrere Entscheidungen getroffen, die möglicherweise meine anderen Modelle beeinflussen könnten. Zum Beispiel, als ich Schritt 10 modellierte, machte ich die Designentscheidung, dass die Gebührenanzeige Bildschirm auch die Überprüfung durch den Schüler, dass die Gebühren akzeptabel waren. Auch als ich die Schritte 2 und 3 modellierte, kam ich zu der Erkenntnis, dass die Schüler wohl Passwörter haben sollten, um ins System zu kommen. Wenn youre nach den AM-Praktiken der aktiven Stakeholder-Teilnahme und Modell mit anderen seine leicht zu finden, wenn Ideen wie diese Sinn machen, weil alles, was Sie tun müssen, ist zu fragen. In diesem Fall entdeckte ich, dass ich falsch war: Die Kombination von Namen und Schülerzahl ist für unsere Zwecke einzigartig und die Universität wollte nicht die zusätzliche Komplexität der Passwortverwaltung. Dies ist eine interessante Entscheidung, die potenziell als Geschäftsregel aufgezeichnet werden könnte, weil es eine operative Politik der Universität ist, was darauf hinweist, dass es notwendig ist, die Praxis zu verfolgen, um ein anderes Artefakt zu betreiben und die Regel zu notieren, wenn sie daran interessiert wäre, eine permanente Aufzeichnung zu halten . Wie man Sequenzdiagramme zeichnet Ich habe versucht, den Leuten zu erklären, wie man Sequenzdiagramme jahrelang zeichnet und was ich entdeckt habe, ist, dass die Leute, die es bekommen, entweder sehr gut denken, in einer logischen Weise zu denken und sie sind gut, Software-Code zu schreiben. Sequenzdiagramme sind wirklich visuelle Codierung, auch wenn Sie ein Nutzungsszenario über ein System-Level-Sequenzdiagramm modellieren. Wenn ich ein Sequenzdiagramm kreiere, fange ich an, den Umfang dessen zu identifizieren, was ich versuche zu modellieren, und weil ich es vorziehe, dem AM-Übungsmodell in kleinen Inkrementen zu folgen, komme ich typischerweise kleine Gebrauchsszenarien auf der Systemebene oder einen einzigen Methodendienst an dem detaillierten Objekt an Ebene. Ein Diagramm wie Abbildung 4 ist zu komplex, um in meiner Erfahrung nützlich zu sein. Ich arbeite dann durch die Logik mit mindestens einer weiteren Person und lege Klassifikatoren über die Oberseite, wie ich sie brauche. Ich füge automatisch die Objekt-Rettungsleinen hinzu, aber wie ich schon früher angemerkt habe, wird in der Regel keine Zeit für die Aktivierung von Aktivierungsboxen investiert. Das Herz des Diagramms ist in den Meldungen, die ich dem Diagramm zu einer Zeit hinzufügen, während ich durch die Logik arbeite. Ich sage selten Rückgabewerte, stattdessen kenne ich intelligente Namen, die oft deutlich machen, was zurückgegeben wird. Es ist interessant zu bemerken, dass Sie als Sequenzdiagramm neue Verantwortlichkeiten für Klassen und Objekte und manchmal sogar neue Klassen identifizieren. Die Implikation ist, dass Sie Ihr Klassenmodell entsprechend aktualisieren möchten, agile Modellierer folgen der Praxis Erstellen Sie mehrere Modelle in Parallel. Etwas, das CASE-Tools automatisch machen wird. Denken Sie daran, dass jede Nachricht, die an eine Klasse gesendet wird, eine statische Methodenoperation auf diese Klasse aufruft, jede Nachricht, die an ein Objekt gesendet wird, ruft eine Operation auf diesem Objekt auf. In Bezug auf Stilprobleme für Sequenzdiagramme ziehe ich es vor, Nachrichten von links nach rechts zu ziehen und Werte von rechts nach links zurückzugeben, obwohl das nicht immer mit komplexen Objektklassen arbeitet. Ich rechtfertige das Label auf Nachrichten und gibt Werte zurück, also sind sie der Pfeilspitze am nächsten. Ich ziehe es vor, die Sequenzdiagramme zu schichten: von links nach rechts. Ich zeige die Akteure, dann die Controller-Klasse (es), und dann die Benutzeroberfläche Klasse (es), und schließlich die Business-Klasse (es). Während des Entwurfs müssen Sie wahrscheinlich System - und Persistenzklassen hinzufügen, die ich normalerweise auf die rechte Seite der Sequenzdiagramme setze. Das Verlegen Ihrer Sequenzdiagramme auf diese Weise macht sie oft einfacher zu lesen und macht es auch einfacher, Layer-Logikprobleme zu finden, wie zB Benutzeroberflächenklassen, die direkt auf Persistenzklassen zugreifen. Halten Sie es agil Die wichtigsten Dinge, die Sie tun können, ist, Ihre Diagramme einfach zu halten, sowohl Inhalt klug und Werkzeug klug. Ich skizze Sequenzdiagramme auf Whiteboards, um etwas zu durchdenken, um entweder die Logik im Anwendungsfall zu überprüfen oder eine Methode oder einen Service zu entwerfen. Ich behalte selten Sequenzdiagramme, wie ich ihren wahren Wert in ihrer Schöpfung finde. Ein häufiger Fehler besteht darin, einen kompletten Satz von Sequenzdiagrammen für Ihr System zu erstellen. Ive gesehen Projektteams vergeuden Monate schaffen mehrere Sequenzdiagramme für jeden ihrer Anwendungsfälle, eine für die grundlegende Vorgehensweise und eine für jeden alternativen Kurs. Mein Rat ist, nur ein Sequenzdiagramm zu erstellen, wenn Sie eine komplexe Logik haben, die Sie durchdenken möchten, wenn die Logik einfach das Sequenzdiagramm ist, fügen Sie keinen Wert hinzu, Sie hatten vielleicht auch direkt zu Code. Die Notation, die in diesen Diagrammen verwendet wird, insbesondere die Handgezeichneten, kann sich aus einem oder mehreren Gründen nicht perfekt mit der aktuellen Version der UML übereinstimmen: Die Notation kann sich entstanden haben, als ich die Diagramme ursprünglich entwickelt habe. Die UML entwickelt sich im Laufe der Zeit, und ich habe die Diagramme nicht auf dem Laufenden gehalten. Vielleicht habe ich es an der ersten Stelle falsch gemacht. Obwohl diese Diagramme sorgfältig für das Buch überprüft wurden und von Tausenden von Menschen online seitdem überprüft worden sind, kann ein Fehler von uns vergangen sein. War nur menschlich. Ich habe mich dafür entschieden, die Notation auf quotnon-standardquot-Weise anzuwenden. Ein agiler Modellierer interessiert sich eher für erstellte Modelle, die effektiv kommunizieren als in Übereinstimmung mit den von einem Komitee festgelegten Notationsregeln. Es ist wahrscheinlich sowieso egal, denn das Modellierungswerkzeug, das du wahrscheinlich nicht benutzt hast, unterstützt die aktuelle Version der UML-Notation trotzdem nicht perfekt. Fazit ist, dass du dich von deinen Werkzeugen sowieso einschränken wirst. Wenn Sie wirklich über die Nuancen der offofficialquot UML Notation besorgt sind, dann lesen Sie die aktuelle Version der UML Spezifikation. Mit Freunden teilen: Lassen Sie uns helfen Wir arbeiten aktiv mit Kunden auf der ganzen Welt, um ihre IT-Praktiken zu verbessern, in der Regel in der Rolle von Mentorcoach, Teamleiter oder Trainer. Eine ausführliche Beschreibung dessen, was wir tun und wie wir uns erreichen können, finden Sie bei Scott Ambler Associates. Empfohlenes Lesen Dieses Buch, Disziplinierte Agile Delivery: Ein Praktiker-Leitfaden für Agile Software Delivery in the Enterprise beschreibt das Disziplined Agile Delivery (DAD) Prozess Entscheidungsrahmen. Das DAD-Framework ist ein Menschen-erster, lernorientierter hybrider, agiler Ansatz für die IT-Lösungslieferung. Es hat einen Risiko-Value-Delivery-Lebenszyklus, ist zielgesteuert, ist Unternehmen bewusst und bietet die Grundlage für die Skalierung agile. Dieses Buch ist besonders wichtig für alle, die verstehen wollen, wie agile Werke von Ende zu Ende innerhalb eines Unternehmens Einstellung. Datenprofis finden es interessant, weil es zeigt, wie agile Modellierung und agile Datenbank-Techniken passen in die gesamte Lösung Lieferung Prozess. Enterprise-Profis finden es interessant, weil es explizit die Idee, dass disziplinierte agile Teams sollten Unternehmen bewusst sein und daher eng mit Unternehmensteams arbeiten. Bestehende agile Entwickler finden es interessant, weil es zeigt, wie man Scrum-basierte und Kanban-basierte Strategien erweitert, um einen kohärenten, durchgängigen, rationalisierten Lieferprozess zu bieten. Die Object Primer 3rd Edition: Agile Model Driven Development mit UML 2 ist ein wichtiges Nachschlagewerk für agile Modellierer und beschreibt, wie man 35 Arten von agilen Modellen einschließlich aller 13 UML 2 Diagramme entwickelt. Darüber hinaus beschreibt dieses Buch die grundlegenden Programmier - und Testtechniken für eine erfolgreiche agile Lösungslieferung. Das Buch zeigt auch, wie man von Ihren agilen Modellen zum Quellcode wechselt, wie man bei Implementierungstechniken wie Refactoring und Test-driven Development (TDD) erfolgreich sein kann. Der Object Primer enthält auch ein Kapitel, in dem die kritischen Datenbankentwicklungsmethoden (Datenbankreactoring, Objektrelational Mapping, Legacyanalyse und Datenbankzugriffscodierung) von meinem preisgekrönten Agile Database Techniques Buch. ConceptDraw Samples Business Prozesse UML Diagramme Samples Software Entwicklung Rapid UML The Geschäftsprozess UML 2.4 Diagramme werden mit ConceptDraw PRO Diagrammen und Vektor Zeichnungssoftware mit Rapid UML Lösung von ConceptDraw Solution Park erweitert erstellt. ConceptDraw PRO bietet Export von vektorgrafischen Mehrfachdokumenten in mehrere Dateiformate: Vektorgrafiken (SVG, EMF, EPS), Bitmap-Grafiken (PNG, JPEG, GIF, BMP, TIFF), Webdokumente (HTML, PDF), PowerPoint-Präsentationen (PPT ), Adobe Flash (SWF). Tutorials und Lösungen: Beispiel 1: UML-Aktivitätsdiagramm UML-Aktivitätsdiagrammbeispiel: Einzahlungsbearbeitung. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Lösung Rapid UML von ConceptDraw Solution Park erweitert wurde. Beispiel 2: UML-Kommunikationsdiagramm UML-Kommunikationsdiagrammbeispiel. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Lösung Rapid UML von ConceptDraw Solution Park erweitert wurde. Beispiel 3: UML Sequenzdiagramm UML Sequenzdiagrammbeispiel. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Lösung Rapid UML von ConceptDraw Solution Park erweitert wurde. Beispiel 4: UML Anwendungsfall Diagramm Trading System UML Anwendung Falldiagramm Beispiel: Trading System. Dieses Beispiel wird mit der ConceptDraw PRO-Diagrammsoftware erstellt, die mit der Lösung Rapid UML von ConceptDraw Solution Park erweitert wurde. Alle Samples sind urheberrechtlich geschützte CS Odessas. Die Verwendung von ihnen wird durch Creative Commons Attribution nicht kommerziell nicht abgeleitet. Die Folgediagramm Dieser Inhalt ist Teil der Serie: UML Grundlagen Bleiben Sie für zusätzliche Inhalte in dieser Serie abgestimmt. Sein Februar, und inzwischen youve vermutlich gelesen, oder hörte Leute reden über, die Änderung zu UML 2.0 - die neue Spezifikation für UML, die eine Anzahl von Verbesserungen enthält. Angesichts der Bedeutung der neuen Spezifikation ändern wir auch die Basis dieser Artikelserie und verschieben unsere Aufmerksamkeit von OMGs UML 1.4 Spezifikation zu OMGs Adopted 2.0 Draft Spezifikation von UML (a. k.a. UML 2). Ich hasse es, die Betonung von 1.4 auf 2.0 in der Mitte einer Reihe von Artikeln zu ändern, aber die UML 2.0 Draft Specification ist ein wichtiger Schritt vorwärts, und ich fühle die Notwendigkeit, das Wort zu verbreiten. Es gab ein paar Gründe, dass die OMG UML verbessert hat. Der Hauptgrund war, dass sie wollten, dass UML-Modelle in der Lage waren, modellgetriebene Architektur (MDA) zu liefern, was bedeutete, dass die UML als mehr modellgetriebene Notation funktionieren musste. Auch das UML 1.x Notation Set war manchmal schwierig, auf größere Anwendungen anzuwenden. Darüber hinaus müssen die Notationselemente verbessert werden, um Diagramme besser lesbar zu machen. (Zum Beispiel war die Modellierung des logischen Flusses in UML 1.x kompliziert und zuweilen unmöglich. Änderungen der in UML 2 eingestellten Sequenzdiagrammstellen haben in der Modellierungslogik in Sequenzen große Verbesserungen vorgenommen.) Erfahren Sie mehr. Mehr entwickeln Verbinden Sie mehr. Einer der Vergünstigungen von developerWorks Premium ist der Zugriff auf mehr als 500 Bücher und Konferenzvideos aus der Safari-Bibliothek. Ein paar Titel, die Sie interessieren könnten: Patterns of Enterprise Application Architecture Java-Anwendungsarchitektur UML Destilliert: Ein kurzer Leitfaden für die Standard-Objekt-Modellierungssprache OReilly Software-Architektur-Konferenz 2015 Komplette Video-Kompilierung Schau dir alles an, was developerWorks Premium zu bieten hat und Mitglied werden soll heute. Beachten Sie die Formulierung in meiner Erklärung oben: Angenommen 2.0 Entwurf Spezifikation von UML. Es stimmt, dass die Spezifikation noch im Entwurfsstatus ist, aber der Schlüssel ist, dass der Entwurf der Spezifikation von OMG angenommen wurde, ein Konsortium, das keine neuen Standards anwendet, bis sie ziemlich solide werden. Es gibt einige Änderungen an der Spezifikation, bevor UML 2 vollständig angenommen wird, aber diese Änderungen sollten minimal sein. Die wichtigsten Änderungen werden in den Interna von UML - mit Funktionen, die in der Regel von Software-Unternehmen, die UML-Tools implementieren verwendet werden. Der Hauptzweck dieses Artikels ist es, diesen Fokus auf die wesentlichen UML-Diagramme in diesem Monat fortzusetzen, wir sehen uns das Sequenzdiagramm genau an. Bitte beachten Sie noch einmal, dass die nachfolgenden Beispiele auf der neuen UML 2-Spezifikation basieren. Die Diagramme Zweck Das Sequenzdiagramm wird hauptsächlich verwendet, um die Wechselwirkungen zwischen Objekten in der sequentiellen Reihenfolge zu zeigen, dass diese Interaktionen auftreten. Ähnlich wie das Klassendiagramm, denken die Entwickler typischerweise, dass Sequenzdiagramme ausschließlich für sie gedacht sind. Jedoch können ein Unternehmens-Geschäftspersonal Sequenzdiagramme finden, die nützlich sind, um zu kommunizieren, wie das Geschäft gegenwärtig arbeitet, indem es zeigt, wie verschiedene Geschäftsobjekte interagieren. Neben der Dokumentation einer aktuellen Unternehmensstrategie kann ein Business-Level-Sequenzdiagramm als Anforderungsdokument verwendet werden, um Anforderungen für eine zukünftige Systemimplementierung zu kommunizieren. Während der Anforderungsphase eines Projekts können die Analysten die Fälle auf die nächste Stufe bringen, indem sie eine formellere Verfeinerung bieten. Wenn dies geschieht, werden Fälle oft in ein oder mehrere Sequenzdiagramme verfeinert. Ein technisches Fachpersonal kann Sequenzdiagramme finden, die nützlich sind, um zu dokumentieren, wie sich ein zukünftiges System verhalten sollte. Während der Designphase können Architekten und Entwickler das Diagramm nutzen, um die Systemobjekt-Interaktionen zu erzwingen und damit den Gesamtsystem-Design auszuschöpfen. Bereitstellung vertrauenswürdig Bereitstellung von qualitativ hochwertigen Software mit DevOps-Diensten auf IBM Bluemix. Melden Sie sich für eine kostenlose Bluemix Cloud-Testversion an. Und loslegen Eine der primären Verwendungen von Sequenzdiagrammen liegt im Übergang von Anforderungen, die als Anwendungsfälle auf die nächste und mehr formale Ebene der Verfeinerung ausgedrückt werden. Anwendungsfälle werden oft in ein oder mehrere Sequenzdiagramme verfeinert. Zusätzlich zu ihrer Verwendung bei der Gestaltung neuer Systeme können Sequenzdiagramme verwendet werden, um zu dokumentieren, wie Objekte in einem bestehenden (call it legacy) System aktuell interagieren. Diese Dokumentation ist sehr nützlich beim Übergang eines Systems zu einer anderen Person oder Organisation. Die Notation Da dies der erste Artikel in meiner UML-Diagrammreihe ist, der auf UML 2 basiert, müssen wir zunächst eine Ergänzung der Notation in UML 2-Diagrammen erörtern, nämlich ein Notationselement, das als Frame bezeichnet wird. Das Rahmenelement wird als Grundlage für viele andere Diagrammelemente in UML 2 verwendet, aber der erste Platz, den die meisten Menschen einem Rahmenelement begegnen, ist die grafische Grenze eines Diagramms. Ein Rahmenelement liefert einen einheitlichen Platz für ein Diagramm-Etikett, während eine grafische Grenze für das Diagramm bereitgestellt wird. Das Rahmenelement ist in UML-Diagrammen optional, wie Sie in den Abbildungen 1 und 2 sehen können. Das Diagramm-Etikett befindet sich in der oberen linken Ecke, in dem man die Frames-Namensbox nennt, eine Art Hunde-Eared-Rechteck und das aktuelle UML-Diagramm Innerhalb des Körpers des größeren umschließenden Rechtecks ​​definiert. Abbildung 1. Ein leeres UML 2-Rahmenelement Neben der Bereitstellung eines visuellen Rahmens hat das Rahmenelement auch eine wichtige funktionale Verwendung in Diagrammen, die Interaktionen darstellen, wie zB das Sequenzdiagramm. Bei Sequenzdiagrammen können eingehende und ausgehende Nachrichten (a. k.a.-Interaktionen) für eine Sequenz modelliert werden, indem die Nachrichten an den Rand des Rahmenelements (wie in Abbildung 2 zu sehen) angeschlossen werden. Dies wird im Abschnitt "Beyond the basics" weiter unten behandelt. Abbildung 2. Ein Sequenzdiagramm, das eingehende und ausgehende Nachrichten hat Beachten Sie, dass in Abbildung 2 das Diagramm-Label mit den Buchstaben sd beginnt, für Sequenzdiagramm. Bei der Verwendung eines Rahmenelements, um ein Diagramm einzuschließen, muss das Diagramm-Label dem Format folgen: Die UML-Spezifikation liefert spezifische Textwerte für Diagrammtypen (z. B. sd Sequenzdiagramm, Aktivität Aktivitätsdiagramm und Anwendungsfall Use Case Diagram). Die Grundlagen Der Hauptzweck eines Sequenzdiagramms besteht darin, Ereignissequenzen zu definieren, die zu einem gewünschten Ergebnis führen. Der Fokus liegt weniger auf Nachrichten selbst und mehr auf die Reihenfolge, in der Nachrichten trotzdem auftreten, die meisten Sequenzdiagramme werden kommunizieren, welche Nachrichten zwischen einem Systemobjekt sowie der Reihenfolge, in der sie auftreten, gesendet werden. Das Diagramm vermittelt diese Informationen entlang der horizontalen und vertikalen Dimensionen: Die vertikale Dimension zeigt, top down, die zeitliche Sequenz von Meldungsaufrufen, wie sie auftreten, und die horizontale Dimension zeigt, von links nach rechts die Objektinstanzen, an die die Nachrichten gesendet werden. Beim Zeichnen eines Sequenzdiagramms werden Lifeline-Notationselemente über der Oberseite des Diagramms platziert. Lifelines repräsentieren entweder Rollen oder Objektinstanzen, die an der zu modellierenden Sequenz teilnehmen. Hinweis: In vollständig modellierten Systemen werden auch die Objekte (Instanzen der Klassen) auf einem Systemklassendiagramm modelliert. Rettungsleinen werden als Kasten mit einer gestrichelten Linie gezeichnet, die von der Mitte der unteren Kante abfällt (Abbildung 3). Der Name der Rettung steht im Feld. Abbildung 3. Ein Beispiel für die Schülerklasse, die in einer Rettungsleine verwendet wird, deren Instanzname Neuling ist Der UML-Standard für die Benennung einer Lifeline folgt dem Format von: In dem in Abbildung 3 gezeigten Beispiel stellt die Rettungsleine eine Instanz der Klasse Schüler dar, deren Instanz Name ist Neuling. Beachten Sie, dass hier der Lifeline-Name unterstrichen ist. Wenn eine Unterstreichung verwendet wird, bedeutet dies, dass die Rettungsleine eine spezifische Instanz einer Klasse in einem Sequenzdiagramm darstellt und nicht eine bestimmte Art von Instanz (d. h. eine Rolle). In einem zukünftigen Artikel sehen Sie sich die Strukturmodellierung an. Für jetzt, nur beobachten, dass Sequenzdiagramme Rollen (wie Käufer und Verkäufer) ohne Angabe, wer spielt diese Rollen (wie Bill und Fred). Dies ermöglicht die Wiederverwendung von Diagrammen in verschiedenen Kontexten. Einfach ausgedrückt, Instanznamen in Sequenzdiagrammen sind unterstrichene Rollennamen nicht. Unsere Beispiel-Rettungsleine in Abbildung 3 ist ein benannter Objekt, aber nicht alle Rettungsleinen repräsentieren benannte Objekte. Stattdessen kann eine Rettungsleine verwendet werden, um eine anonyme oder unbenannte Instanz zu repräsentieren. Bei der Modellierung einer nicht benannten Instanz auf einem Sequenzdiagramm folgt der Name der Lifeline demselben Muster wie eine benannte Instanz, aber anstelle eines Instanznamens ist dieser Teil des Lifelines-Namens leer. Wiederum bezugnehmend auf Fig. 3, wenn die Rettungsleine eine anonyme Instanz der Schülerklasse repräsentiert, wäre die Rettungsleine: Student. Auch weil Sequenzdiagramme während der Entwurfsphase von Projekten verwendet werden, ist es völlig legitim, ein Objekt zu haben, dessen Typ nicht spezifiziert ist: zB Neuling. Die erste Nachricht eines Sequenzdiagramms beginnt immer oben und befindet sich typischerweise auf der linken Seite des Diagramms zur Lesbarkeit. Nachfolgende Meldungen werden dann dem Diagramm etwas niedriger als die vorherige Nachricht hinzugefügt. To show an object (i. e. lifeline) sending a message to another object, you draw a line to the receiving object with a solid arrowhead (if a synchronous call operation) or with a stick arrowhead (if an asynchronous signal). The messagemethod name is placed above the arrowed line. The message that is being sent to the receiving object represents an operationmethod that the receiving objects class implements. In the example in Figure 4, the analyst object makes a call to the system object which is an instance of the ReportingSystem class. The analyst object is calling the system objects getAvailableReports method. The system object then calls the getSecurityClearance method with the argument of userId on the secSystem object, which is of the class type SecuritySystem. Note: When reading this sequence diagram, assume that the analyst has already logged into the system. Figure 4. An example of messages being sent between objects Besides just showing message calls on the sequence diagram, the Figure 4 diagram includes return messages. These return messages are optional a return message is drawn as a dotted line with an open arrowhead back to the originating lifeline, and above this dotted line you place the return value from the operation. In Figure 4 the secSystem object returns userClearance to the system object when the getSecurityClearance method is called. The system object returns availableReports when the getAvailableReports method is called. Again, the return messages are an optional part of a sequence diagram. The use of return messages depends on the level of detailabstraction that is being modeled. Return messages are useful if finer detail is required otherwise, the invocation message is sufficient. I personally like to include return messages whenever a value will be returned, because I find the extra details make a sequence diagram easier to read. When modeling a sequence diagram, there will be times that an object will need to send a message to itself. When does an object call itself A purist would argue that an object should never send a message to itself. However, modeling an object sending a message to itself can be useful in some cases. For example, Figure 5 is an improved version of Figure 4. The Figure 5 version shows the system object calling its determineAvailableReports method. By showing the system sending itself the message determineAvailableReports, the model draws attention to the fact that this processing takes place in the system object. To draw an object calling itself, you draw a message as you would normally, but instead of connecting it to another object, you connect the message back to the object itself. Figure 5. The system object calling its determineAvailableReports method The example messages in Figure 5 show synchronous messages however, in sequence diagrams you can model asynchronous messages, too. An asynchronous message is drawn similar to a synchronous one, but the messages line is drawn with a stick arrowhead, as shown in Figure 6. Figure 6. A sequence diagram fragment showing an asynchronous message being sent to instance2 When modeling object interactions, there will be times when a condition must be met for a message to be sent to the object. Guards are used throughout UML diagrams to control flow. Here, I will discuss guards in both UML 1.x as well as UML 2.0. In UML 1.x, a guard could only be assigned to a single message. To draw a guard on a sequence diagram in UML 1.x, you placed the guard element above the message line being guarded and in front of the message name. Figure 7 shows a fragment of a sequence diagram with a guard on the message addStudent method. Figure 7. A segment of a UML 1.x sequence diagram in which the addStudent message has a guard In Figure 7, the guard is the text pastDueBalance 0. By having the guard on this message, the addStudent message will only be sent if the accounts receivable system returns a past due balance of zero. The notation of a guard is very simple the format is: Combined fragments (alternatives, options, and loops) In most sequence diagrams, however, the UML 1.x in-line guard is not sufficient to handle the logic required for a sequence being modeled. This lack of functionality was a problem in UML 1.x. UML 2 has addressed this problem by removing the in-line guard and adding a notation element called a Combined Fragment. A combined fragment is used to group sets of messages together to show conditional flow in a sequence diagram. The UML 2 specification identifies 11 interaction types for combined fragments. Three of the eleven will be covered here in The Basics section, two more types will be covered in the Beyond The Basics section, and the remaining six I will leave to be covered in another article. (Hey, this is an article, not a book. I want you to finish this piece in one day) Alternatives Alternatives are used to designate a mutually exclusive choice between two or more message sequences. Note: It is indeed possible for two or more guard conditions attached to different alternative operands to be true at the same time, but at most only one operand will actually occur at run time (which alternative wins in such cases is not defined by the UML standard). Alternatives allow the modeling of the classic if then else logic (e. g. if I buy three items, then I get 20 off my purchase else I get 10 off my purchase). As you will notice in Figure 8, an alternative combination fragment element is drawn using a frame. The word alt is placed inside the frames namebox. The larger rectangle is then divided into what UML 2 calls operands. Note: Although operands look a lot like lanes on a highway, I specifically did not call them lanes. Swim lanes are a UML notation used on activity diagrams. Please refer to The Rational Edges earlier article about Activity Diagrams . Operands are separated by a dashed line. Each operand is given a guard to test against, and this guard is placed towards the top left section of the operand on top of a lifeline. Note: Usually, the lifeline to which the guard is attached is the lifeline that owns the variable that is included in the guard expression. If an operands guard equates to true, then that operand is the operand to follow. Figure 8. A sequence diagram fragment that contains an alternative combination fragment As an example to show how an alternative combination fragment is read, Figure 8 shows the sequence starting at the top, with the bank object getting the checks amount and the accounts balance. At this point in the sequence the alternative combination fragment takes over. Because of the guard balance gt amount, if the accounts balance is greater than or equal to the amount, then the sequence continues with the bank object sending the addDebitTransaction and storePhotoOfCheck messages to the account object. However, if the balance is not greater than or equal to the amount, then the sequence proceeds with the bank object sending the addInsuffientFundFee and noteReturnedCheck message to the account object and the returnCheck message to itself. The second sequence is called when the balance is not greater than or equal to the amount because of the else guard. In alternative combination fragments, the else guard is not required and if an operand does not have an explicit guard on it, then the else guard is to be assumed. Alternative combination fragments are not limited to simple if then else tests. There can be as many alternative paths as are needed. If more alternatives are needed, all you must do is add an operand to the rectangle with that sequences guard and messages. The option combination fragment is used to model a sequence that, given a certain condition, will occur otherwise, the sequence does not occur. An option is used to model a simple if then statement (i. e. if there are fewer than five donuts on the shelf, then make two dozen more donuts). The option combination fragment notation is similar to the alternation combination fragment, except that it only has one operand and there never can be an else guard (it just does not make sense here). To draw an option combination you draw a frame. The text opt is placed inside the frames namebox, and in the frames content area the options guard is placed towards the top left corner on top of a lifeline. Then the options sequence of messages is placed in the remainder of the frames content area. These elements are illustrated in Figure 9. Figure 9. A sequence diagram fragment that includes an option combination fragment Reading an option combination fragment is easy. Figure 9 is a reworking of the sequence diagram fragment in Figure 7, but this time it uses an option combination fragment because more messages need to be sent if the students past due balance is equal to zero. According to the sequence diagram in Figure 9, if a students past due balance equals zero, then the addStudent, getCostOfClass, and chargeForClass messages are sent. If the students past due balance does not equal zero, then the sequence skips sending any of the messages in the option combination fragment. The example Figure 9 sequence diagram fragment includes a guard for the option however, the guard is not a required element. In high-level, abstract sequence diagrams you might not want to specify the condition of the option. You may simply want to indicate that the fragment is optional. Occasionally you will need to model a repetitive sequence. In UML 2, modeling a repeating sequence has been improved with the addition of the loop combination fragment. The loop combination fragment is very similar in appearance to the option combination fragment. You draw a frame, and in the frames namebox the text loop is placed. Inside the frames content area the loops guard is placed towards the top left corner, on top of a lifeline. Note: As with the option combination fragment, the loop combination fragment does not require that a guard condition be placed on it. Then the loops sequence of messages is placed in the remainder of the frames content area. In a loop, a guard can have two special conditions tested against in addition to the standard Boolean test. The special guard conditions are minimum iterations written as minint the number (e. g. minint 1) and maximum iterations written as maxint the number (e. g. maxint 5). With a minimum iterations guard, the loop must execute at least the number of times indicated, whereas with a maximum iterations guard the number of loop executions cannot exceed the number. Figure 10. An example sequence diagram with a loop combination fragment The loop shown in Figure 10 executes until the reportsEnu objects hasAnotherReport message returns false. The loop in this sequence diagram uses a Boolean test to verify if the loop sequence should be run. To read this diagram, you start at the top, as normal. When you get to the loop combination fragment a test is done to see if the value hasAnotherReport equals true. If the hasAnotherReport value equals true, then the sequence goes into the loop fragment. You can then follow the messages in the loop as you would normally in a sequence diagram Beyond the basics Ive covered the basics of the sequence diagram, which should allow you to model most of the interactions that will take place in a common system. The following section will cover more advanced notation elements that can be used in a sequence diagram. Referencing another sequence diagram When doing sequence diagrams, developers love to reuse existing sequence diagrams in their diagrams sequences. Note: It is possible to reuse a sequence diagram of any type (e. g. programming or business). I just find that developers like to functionally break down their diagrams more. Starting in UML 2, the Interaction Occurrence element was introduced. The addition of interaction occurrences is arguably the most important innovation in UML 2 interactions modeling. Interaction occurrences add the ability to compose primitive sequence diagrams into complex sequence diagrams. With these you can combine (reuse) the simpler sequences to produce more complex sequences. This means that you can abstract out a complete, and possibly complex, sequence as a single conceptual unit. An interaction occurrence element is drawn using a frame. The text ref is placed inside the frames namebox, and the name of the sequence diagram being referenced is placed inside the frames content area along with any parameters to the sequence diagram. The notation of the referenced sequence diagrams name follows the pattern of: 1. Retrieve Borrower Credit Report(ssn). borrowerCreditReport 2. Process Credit Card(name, number, expirationDate, amount. 100) In example 1, the syntax calls the sequence diagram called Retrieve Borrower Credit Report and passes it the parameter ssn. The Retreive Borrower Credit Report sequence returns the variable borrowerCreditReport. In example 2, the syntax calls the sequence diagram called Process Credit Card and passes it the parameters of name, number, expiration date, and amount. However, in example 2 the amount parameter will be a value of 100. And since example 2 does not have a return value labeled, the sequence does not return a value (presumably, the sequence being modeled does not need the return value). Figure 11. A sequence diagram that references two different sequence diagrams Figure 11 shows a sequence diagram that references the sequence diagrams Balance Lookup and Debit Account. The sequence starts at the top left, with the customer sending a message to the teller object. The teller object sends a message to the theirBank object. At that point, the Balance Lookup sequence diagram is called, with the accountNumber passed as a parameter. The Balance Lookup sequence diagram returns the balance variable. Then the option combination fragments guard condition is checked to verify the balance is greater then the amount variable. In cases where the balance is greater than the amount, the Debit Account sequence diagram is called, passing it the accountNumber and the amount as parameters. After that sequence is complete, the withdrawCash message returns cash to the customer. It is important to notice in Figure 11 that the lifeline of theirBank is hidden by the interaction occurrence Balance Lookup. Because the interaction occurrence hides the lifeline, that means that the theirBank lifeline is referenced in the Balance Lookup sequence diagram. In addition to hiding the lifeline in the interaction occurrence, UML 2 also specifies that the lifeline must have the same theirBank in its own Balance Lookup sequence. There will be times when you model sequence diagrams that an interaction occurrence will overlap lifelines that are not referenced in the interaction occurrence. In such cases the lifeline is shown as a normal lifeline and is not hidden by the overlapping interaction occurrence. In Figure 11, the sequence references the Balance Lookup sequence diagram. The Balance Lookup sequence diagram is shown in Figure 12. Because the example sequence has parameters and a return value, its label 8212located in the diagrams namebox8212follows a specific pattern: 1. SD Balance Lookup(Integer. accountNumber). Real 2. SD Available Reports(Financial Analyst. analyst). Reports Figure 12 illustrates example 1, in which the Balance Lookup sequence uses parameter accountNumber as a variable in the sequence, and the sequence diagram shows a Real object being returned. In cases such as this, where the sequence returns an object, the object being returned is given the instance name of the sequence diagram. Figure 12. A sequence diagram that takes the parameter of accountNumber and returns a Real object Figure 13 illustrates example 2, in which a sequence takes a parameter and returns an object. However, in Figure 13 the parameter is used in the sequences interaction. Figure 13. A sequence diagram that uses its parameter in its interaction and returns a Reports object The previous section showed how to reference another sequence diagram by passing information through parameters and return values. However, there is another way to pass information between sequence diagrams. Gates can be an easy way to model the passing of information between a sequence diagram and its context. A gate is merely a message that is illustrated with one end connected to the sequence diagrams frames edge and the other end connected to a lifeline. A reworking of Figures 11 and 12 using gates can be seen in Figures 14 and 15. The example diagram in Figure 15 has an entry gate called getBalance that takes the parameter of accountNumber. The getBalance message is an entry gate, because it is the arrowed line that is connected to the diagrams frame with the arrowhead connected to a lifeline. The sequence diagram also has an exit gate that returns the balance variable. The exit gate is known, because its a return message that is connected from a lifeline to the diagrams frame with the arrowhead connected to the frame. Figure 14. A reworking of Figure 11, using gates this time Figure 15. A reworking of Figure 12, using gates this time Combined fragments (break and parallel) In the basics section presented earlier in this paper, I covered the combined fragments known as alternative, option, and loop. These three combined fragments are the ones most people will use the most. However, there are two other combined fragments that a large share of people will find useful 128147 break and parallel. The break combined fragment is almost identical in every way to the option combined fragment, with two exceptions. First, a breaks frame has a namebox with the text break instead of option. Second, when a break combined fragments message is to be executed, the enclosing interactions remainder messages will not be executed because the sequence breaks out of the enclosing interaction. In this way the break combined fragment is much like the break keyword in a programming language like C or Java. Figure 16. A reworking of the sequence diagram fragment from Figure 8, with the fragment using a break instead of an alternative Breaks are most commonly used to model exception handling. Figure 16 is a reworking of Figure 8, but this time Figure 16 uses a break combination fragment because it treats the balance lt amount condition as an exception instead of as an alternative flow. To read Figure 16, you start at the top left corner of the sequence and read down. When the sequence gets to the return value balance, it checks to see if the balance is less than the amount. If the balance is not less than the amount, the next message sent is the addDebitTransaction message, and the sequence continues as normal. However, in cases where the balance is less than the amount, then the sequence enters the break combination fragment and its messages are sent. Once all the messages in the break combination have been sent, the sequence exits without sending any of the remaining messages (e. g. addDebitTransaction). An important thing to note about breaks is that they only cause the exiting of an enclosing interactions sequence and not necessarily the complete sequence depicted in the diagram. In cases where a break combination is part of an alternative or a loop, then only the alternative or loop is exited. Todays modern computer systems are advancing in complexity and at times perform concurrent tasks. When the processing time required to complete portions of a complex task is longer than desired, some systems handle parts of the processing in parallel. The parallel combination fragment element needs to be used when creating a sequence diagram that shows parallel processing activities. The parallel combination fragment is drawn using a frame, and you place the text par in the frames namebox. You then break up the frames content section into horizontal operands separated by a dashed line. Each operand in the frame represents a thread of execution done in parallel. Figure 17. A microwave is an example of an object that does two tasks in parallel While Figure 17 may not illustrate the best computer system example of an object doing activities in parallel, it offers an easy-to-understand example of a sequence with parallel activities. The sequence goes like this: A hungryPerson sends the cookFood message to the oven object. When the oven object receives that message, it sends two messages to itself at the same time (nukeFood and rotateFood). After both of these messages are done, the hungryPerson object is returned yummyFood from the oven object. Conclusion The sequence diagram is a good diagram to use to document a systems requirements and to flush out a systems design. The reason the sequence diagram is so useful is because it shows the interaction logic between the objects in the system in the time order that the interactions take place. Downloadable resources Related topicsSample UML Sequence Diagram The sequence diagram in figure 1 represents an elaboration for the Student Registers for Class use case in an automated student registration system. (Click here to see the diagram without the horizontal dotted guidelines.) Figure 1 - Automated Registration System sample sequence diagram The boxes at the top of the sequence diagram constitute the diagram header and represent the components or units of the system. Sequence diagram editor supports four types of header elements (see the full list of supported sequence diagram elements ): Actors - Actors represent a person or other external entity that interacts with the system. Objects - Objects are used to represent object instances in an object-oriented programming language such as Java or C. Units - Units are used to represent logical entities in the system such as components, servers, threads and tasks that may or may not be implemented using objects. They can also be used to distinguish objects from classes. Separators - Separators do not interact with the diagram but rather represent a boundary between header elements. Sequence diagram header elements can be grouped together (see group elements ) into components or subsystems to illustrate the logical layering of the system. In Figure 1, the web server components are grouped together into the Web Server group to indicate that these elements are part of the Web Server. Separator elements can be used to show boundaries between the components of the sequence diagram (such as the air interface between cell phone and base station, or the Internet in a distributed or web-based application). The body of the sequence diagram shows the interactions between the various units as they collaborate to accomplish a particular purpose. The dotted horizontal lines are called guidelines, which are typically used with their corresponding line numbers to refer to portions of the diagram in documentation or during design meetings ( Sequence Diagram Editor allows you to configure whether or not to display these guidelines andor line numbers in your sequence diagrams.) Messages are by far the most common elements and are used to model the interactions and interfaces between components. Sequence diagram editor supports six different types of message elements: Simple Messages - Simple messages can be used to represent interactions between components that are not direct method calls (could be IPC, remoting, http or web services) Asynchronous Messages - Asynchronous messages represent stimuli that can occur at any time based on external events (e. g. interruptssensors or user input) Call Messages - Call messages are usually reserved for method calls between objects in the same threadtask where the calling object waits for the return from the recipient before continuing Return Messages - Return messages indicate a response to a call message, although they can also be used with simple messages to represent requestresponse pairs. Create Messages - Create messages are used to represent the dynamic creation of an object instance. They can also be used to represent the creation of a thread or task. Destroy Messages - Destroy messages are used to represent the dynamic destruction of an object instance. They can also be used to represent the shutdown of a thread or task. Action elements can be used to represent an action or processing performed by a single entity without involving other units. In the sequence diagram example above, the Registration Page entity renders the page in line 16 using an action. State elements are useful for units representing a state machine to describe state transitions that occur as a result of sending a messages or some other event. Sates for different header elements can be configured to share the same guideline. Timer elements can be used to show the start, stop or expiration of a timer associated with a particular header element. They are used extensively in state machine design to handle error conditions when communicating with external systems. Diagram links represent a complex action performed by multiple header elements without showing all the details. For example, the quotuser loginquot box (line 7) in the sequence diagram typically involves interactions between the all the components. The details can be elaborated and shown in a separate sequence diagram with a link from the current diagram. Using diagram links to abstract details that are not specific or relevant to the current scenario reduces the size and clutter of the diagrams and enhances maintainability (used like a function call in a programming language.) Blocks are useful for representing simple alternation or looping constructs for a given header element. For example, in the sequence diagram of Figure 1 the student may not have to go through the login process if they are already logged into the system (line 6-7). If there are significant differences between the alternatives in the sequence diagram, using scenario elements like scenario start, scenario case, and scenario end rather than blocks may be more appropriate as illustrated in figure 2 (lines 22-29). You can always use additional sequence diagrams to describe different scenarios if it would be more clear. This sequence diagram shows the two alternative scenarios (course full found line 22, and No Service Found line 26) in the same diagram. Notice also that Sequence Diagram Editor automatically takes care of pagination by repeating the diagram title and header elements for each page. Documentation notes and Flow Notes are used throughout the sequence diagram to add additional descriptive text. These can be selectively hidden or displayed based on the desired detail level. Free Notes can also be used to add detail or annotations. Sequence Diagram Editor can also export diagrams in PDF (click here ) and RTF (click here ) formats. The PDF and RTF exports can optionally include documentation notes for the sequence diagram provided as a separate table at the end of the export. NOTE: while the exported RTF document tends to be large, opening this document with Microsoft Word and saving it as a Word document considerably reduces the size of the files (sometimes by a factor of 20 or more.) Click here for the corresponding Word document.

No comments:

Post a Comment