Freigeben über


Visualisieren von Code durch Erzeugen von Sequenzdiagrammen

Generieren Sie in Visual Studio Ultimate ein Sequenzdiagramm, in dem die Implementierung einer bestimmten Methode durch den Code visuell dargestellt und veranschaulicht wird.Ein Sequenzdiagramm beschreibt eine Interaktion zwischen Objekten als eine Reihe von Lebenslinien und Meldungen.Lebenslinien stellen Instanzen von Objekten dar, und Meldungen stellen Methodenaufrufe zwischen diesen Objekten dar.Sie können Sequenzdiagramme aus Visual C# .NET-Code oder Visual Basic .NET-Code generieren.

HinweisHinweis

In einem generierten Sequenzdiagramm werden die Elemente auf ähnliche Weise wie in einem UML-Sequenzdiagramm angezeigt.Ein aus Code generiertes Sequenzdiagramm ist unabhängig von einem UML-Modell vorhanden und kann zu jedem .NET-Projekt hinzugefügt werden.Ein von Hand gezeichnetes UML-Sequenzdiagramm ist hingegen immer Teil des Modells, in dem es erstellt wurde.Weitere Informationen finden Sie unter UML-Sequenzdiagramme: Referenz.

In diesem Thema

  • Generieren eines Sequenzdiagramms aus Quellcode

  • Untersuchen von Code in Sequenzdiagrammen

  • Bearbeiten des Diagramms, um Entwurfsänderungen vorzuschlagen

  • Navigieren aus dem Diagramm

  • Verknüpfen eines Sequenzdiagramms mit Arbeitsaufgaben

  • Beziehungen zu anderen Diagrammen

  • Problembehandlung bei Sequenzdiagrammen

Generieren eines Sequenzdiagramms aus Quellcode

So generieren Sie ein Sequenzdiagramm aus Code

  1. Öffnen Sie in Visual Studio die Codedatei, die die Methodendefinition enthält.

  2. Öffnen Sie im Kontextmenü auf eine beliebige Stelle in der Methodendefinition, und wählen Sie dann Sequenzdiagramm generieren aus.

    Dialogfeld „Sequenz erstellen“

  3. Geben Sie im Dialogfeld Sequenzdiagramm generieren im Feld Maximale Aufruftiefe die maximale Ebene von Aufrufen an, die angezeigt werden soll.

    Wenn z. B. nur die erste Ebene von Aufrufen angezeigt werden soll, geben Sie die maximale Aufruftiefe 1 an.

    HinweisHinweis

    Das Sequenzdiagramm zeigt die zweite Ebene von Aufrufen als Meldungen an, die keine Ziellebenslinie enthalten. Diese Meldungen werden als verlorene Meldungen bezeichnet.Nachdem Sie das Diagramm generiert haben, können Sie bestimmte verlorene Meldungen erweitern.Weitere Informationen über verlorene Meldungen finden Sie unter UML-Sequenzdiagramme: Referenz.

  4. Wählen Sie unter Aufrufe einbeziehen einen Bereich aus der folgenden Tabelle aus:

    Gewünschte Anzeige

    Choose

    Aufrufe von Elementen im aktuellen Projekt

    Aktuelles Projekt

    Aufrufe von Elementen in der Projektmappe

    Aktuelle Projektmappe (Standard)

    Aufrufe von Elementen innerhalb und außerhalb der Projektmappe

    Projektmappe und externe Verweise

    Sie können z. B. mit einem einfachen Sequenzdiagramm beginnen, indem Sie nur die Methodenaufrufe von Elementen im aktuellen Projekt untersuchen.Sie können den Bereich des Diagramms erweitern, indem Sie ein neues Diagramm generieren, das Aufrufe von Elementen anzeigt, die sich in der gesamten Projektmappe befinden.Wenn Sie Aufrufe von Elementen anzeigen möchten, die nicht in der Projektmappe enthalten sind, müssen Sie ein Diagramm generieren, das externe Verweise enthält.

  5. Unter Aufrufe ausschließen können Sie das Diagramm weiter vereinfachen, indem Sie Aufrufe der folgenden Elemente ausschließen:

    Auszuschließende Aufrufe

    Select

    Eigenschaften und Ereignisse

    Eigenschaften und Ereignisse (Standard)

    System-Namespace

    Systemnamespace (Standard)

    Bestimmte Namespaces

    Andere Namespaces. Geben Sie die Namespaces durch Kommas (,) getrennt in das Feld ein.Verwenden Sie keine Platzhalterzeichen (*). Diese werden nicht unterstützt.

    Um Aufrufe dieser Elemente einzuschließen, deaktivieren Sie die entsprechenden Kontrollkästchen.

  6. Wenn Sie fertig sind, wählen Sie OK aus.

    Visual Studio generiert ein Sequenzdiagramm und fügt es dem entsprechenden Projekt hinzu.Informationen zu Problemen beim Generieren von Sequenzdiagrammen finden Sie unter Problembehandlung bei Sequenzdiagrammen.

    HinweisHinweis

    Arraydeklarationen werden nicht auf generierten Sequenzdiagrammen angezeigt.

Zum Identifizieren und Übermitteln von Änderungen, die Sie möglicherweise vornehmen möchten, ohne den Code zu beeinflussen, können Sie ein generiertes Sequenzdiagramm untersuchen und ändern.Sie können z. B. neue Lebenslinien, Meldungen, Interaktionsverwendungen und Fragmente hinzufügen.Zum Erstellen und Nachverfolgen von Aufgaben für Arbeit, die Sie am entsprechenden Code ausführen möchten, können Sie Arbeitsaufgaben erstellen oder mit Diagrammelementen verknüpfen.Weitere Informationen finden Sie unter Verknüpfen von Modellelementen und Arbeitsaufgaben.

Wichtiger HinweisWichtig

Nachdem Sie das Diagramm generiert haben, werden Änderungen am Diagramm nicht im Code angezeigt, und Änderungen, die Sie am Code vornehmen, erscheinen nicht im Diagramm.Um diese Änderungen anzuzeigen, müssen Sie ein neues Sequenzdiagramm generieren.Sie können ein neues Sequenzdiagramm so oft aus der gleichen Methode generieren, wie Sie möchten.

Untersuchen von Code in Sequenzdiagrammen

Sie können mithilfe eines Sequenzdiagramms Code untersuchen und anderen Personen präsentieren.Experimentieren Sie beim Generieren des Diagramms mit verschiedenen Bereichen, um das zweckmäßigste Diagramm für diese Zwecke zu erzeugen.Sie können das Diagramm auch ändern, nachdem Sie es generiert haben.Sie können z. B. Meldungen löschen, die zum Präsentieren und Erörtern des Entwurfs nicht relevant sind.

Sie können die folgenden Änderungen am Sequenzdiagramm vornehmen.

To

Auszuführende Schritte

Anzeigen der nächsten Aufrufebene

Öffnen Sie das Kontextmenü für eine Meldung, die keine Ziellebenslinie hat, und wählen Sie dann Ausgehend erweitern aus.

Erweitern einer Meldung in einem neuen Diagramm

Öffnen Sie das Kontextmenü für eine Meldung, und wählen Sie dann Sequenzdiagramm generieren aus.

Dem aktuellen Projekt wird das neue Diagramm hinzugefügt.

Reduzieren einer Gruppe von Meldungen auf eine Lebenslinie

Wählen Sie die zu gruppierenden Lebenslinien, die das Kontextmenü zu öffnen, und wählen dann für die Auswahl Reduzieren aus.

Sie können eine Gruppe umbenennen, der Name geht jedoch verloren, wenn Sie die Gruppe erweitern.

Um die Gruppe zu erweitern, öffnen Sie das Kontextmenü für das Steuerelement, und wählen Sie dann Erweitern aus.

Löschen von Elementen

Öffnen Sie das Kontextmenü für die Form, und wählen Sie dann Löschen aus.

Verbessern des Layouts

Öffnen Sie das Kontextmenü für einen leeren Bereich des Diagramms, und wählen Sie dann Layout neu anordnen aus.

Sie können diesen Befehl auch rückgängig machen.

Hervorheben von ausgewählten Elementen

Öffnen Sie das Kontextmenü für ein Element, und wählen Sie dann Eigenschaften aus.Legen Sie im Fenster Eigenschaften das Feld Farbe fest.

Kommentieren des Diagramms

Wählen Sie das Kommentar Tool aus, klicken Sie im Diagramm, und geben Sie dann einen Hinweis in den Kommentar ein.Verwenden Sie das Tool Kommentarverknüpfung, um den Kommentar mit einem oder mehreren Punkten auf Lebenslinien oder in Fragmenten zu verknüpfen.

Bearbeiten des Diagramms, um Entwurfsänderungen vorzuschlagen

Sie können das Diagramm ändern, indem Sie Elemente hinzufügen und löschen, um alternative Entwürfe zu erwägen.Sie können auch Teile des Diagramms in ein UML-Sequenzdiagramm kopieren, das Sie in einem UML-Modellierungsprojekt erstellt haben.Das ermöglicht es Ihnen, die Lebenslinien den Typen, Komponenten und Akteuren des UML-Modells zuzuordnen.

In der folgenden Tabelle werden hilfreiche Änderungen zum Beschreiben von Entwurfsvorschlägen zusammengefasst.Weitere Informationen finden Sie unter UML-Sequenzdiagramme: Richtlinien.

To

Auszuführende Schritte

Hervorheben von Lebenslinien, Meldungen und anderen Elementen

Ändern Sie die Eigenschaft Farbe des Elements.

- oder -

Verknüpfen Sie einen Kommentar mit dem Element:

  1. In Toolbox wählen Sie Kommentar, und klicken Sie dann im Diagramm, klicken Sie neben dem Element aus.

  2. In Toolbox wählen Sie Kommentarverknüpfung, und klicken Sie dann im Diagramm auswählen den Kommentar und wählen Sie das Element aus.

Verschieben von Lebenslinien

Ziehen Sie eine Lebenslinie in einen anderen Bereich des Diagramms.

Zum Verschieben einer Gruppe von Lebenslinien, die über verlorene oder gefundene Meldungen verfügen, führen Sie folgende Schritte aus, um die Lebenslinien vor dem Verschieben auszuwählen:

  • Zeichnen Sie um die Lebenslinien ein Rechteck.

    - oder -

    Halten Sie die STRG Schlüssel an, während Sie eine Lebenslinie auswählen.

    HinweisHinweis
    Wenn Sie mit Alle auswählen oder STRG+A alle Lebenslinien auswählen und sie dann verschieben, werden verlorene oder gefundene Meldungen, die diesen Lebenslinien zugeordnet sind, nicht verschoben.Wenn diese Situation eintritt, können Sie diese Meldungen separat verschieben.

Verschieben und Neuanordnen von Meldungen

Ziehen Sie im Diagramm eine Meldung aufwärts oder abwärts.

  1. Wählen Sie eine Meldung aus, und gehen Sie dann wie folgt vor:

  2. Verwenden Sie die NACH-OBEN-TASTE und die NACH-UNTEN-TASTE, um die Position der Meldung zu ändern.

  3. Verwenden Sie STRG+NACH-OBEN und STRG+NACH-UNTEN, um die Reihenfolge der Meldungen zu ändern.

Hinzufügen einer Lebenslinie

Wählen Sie in LebenslinieToolbox aus, und wählen Sie dann das Diagramm aus.

Hinzufügen einer Meldung

So erstellen Sie Meldungen
  1. In Toolbox wählen Sie eine Synchron oder Asynchron Meldung aus.

    Um eine gefundene Meldung oder verlorene Meldung hinzuzufügen, verwenden Sie eine Meldung vom Typ Asynchron.Eine gefundene Meldung stammt aus einer unbekannten Ereignisquelle, und eine verlorene Meldung wird an einen unbekannten Empfänger übertragen.

  2. Klicken Sie im Diagramm lebenslinie Wählen Sie eine Quelle aus.

  3. Wählen Sie ein Ziel aus. lebenslinie

    - oder -

    Um eine gefundene Meldung oder verlorene Meldung zu erstellen, wählen Sie einen leeren Bereich des Diagramms vor oder hinter der Quelle lebenslinie ihr erzeugt.

  4. Geben Sie einen neuen Namen für die Meldung ein.

Kopieren von Lebenslinien und Meldungen aus anderen Diagrammen bzw. in andere Diagramme

Kopieren Sie Lebenslinien, und fügen Sie sie ein.

Die Meldungen zwischen ihnen werden automatisch ebenfalls kopiert.

HinweisHinweis
Wenn Sie Lebenslinien aus einem UML-Sequenzdiagramm in einem Modellierungsprojekt in ein generiertes Sequenzdiagramm kopieren, werden möglicherweise nur die Kopfzeilen der Lebenslinien angezeigt, oder Sie müssen ihre Farben anpassen.Um dieses Problem zu beheben, wählen Sie die eingefügten Lebenslinien aus, und legen Sie die zugehörige Eigenschaft Farbe fest.

Einschließen von Meldungen in ein kombiniertes Fragment

  1. Wählen Sie eine oder mehrere Meldungen aus.

  2. Öffnen Sie das Kontextmenü für die Auswahl, zeigen Sie auf Umschließen mit, und wählen Sie dann einen Typ kombiniertes Fragment aus.

Verwenden Sie kombinierte Fragmente, um alternative Sequenzen, Schleifen und andere Zusammenstellungen von Meldungen darzustellen.

Verschieben einer Meldung in ein neues Diagramm

Öffnen Sie das Kontextmenü für eine Meldung, und wählen Sie dann In Diagramm verschieben aus.

Ein neues Diagramm wird erstellt, das die Meldung und die untergeordneten Meldungen enthält.Im ursprünglichen Diagramm wird die Meldung durch eine Interaktionsverwendung ersetzt.

Kopieren des Diagramms

Kopieren Sie das Diagramm im Projektmappen-Explorer, oder kopieren Sie die Dateien im Windows-Explorer.Jedem Diagramm sind zwei Dateien zugeordnet.

Ein generiertes Sequenzdiagramm kann mit einer beliebigen Instanz von Visual Studio Ultimate bearbeitet und mit Visual Studio Ultimate oder Visual Studio Premium gelesen werden.

Kein Hervorheben von bestimmten manuellen Änderungen, z. B. Hinzufügungen und Namensänderungen

  1. Öffnen Sie das Kontextmenü für die Sequenzdiagramm Oberfläche, und wählen Sie dann Eigenschaften aus.

  2. Legen Sie die Eigenschaft Manuelle Änderungen anzeigen auf False fest.

To

Auszuführende Schritte

Navigieren von einer Lebenslinie oder Meldung zur Definition der Klasse bzw. Methode

Öffnen Sie das Kontextmenü für die Lebenslinie oder Meldung, und wählen Sie dann Gehe zu Definition aus.

Suchen der Klasse oder Methode im Architektur-Explorer

Öffnen Sie das Kontextmenü für eine Lebenslinie oder Meldung, und wählen Sie dann Im Architektur-Explorer anzeigen aus.

Weitere Informationen finden Sie unter Visualisieren von Codeabhängigkeiten in Abhängigkeitsdiagrammen.

Verknüpfen eines Sequenzdiagramms mit Arbeitsaufgaben

Sie können Elemente jeder Art in einem Sequenzdiagramm mit Arbeitsaufgaben in Team Foundation Server verknüpfen, um das Implementieren einer Änderung zu planen.Bevor Sie beginnen, sollten Sie sicherstellen, dass Sie eine Verbindung mit einem Team Foundation Server verbunden sind.Weitere Informationen finden Sie unter Verknüpfen von Modellelementen und Arbeitsaufgaben.

To

Auszuführende Schritte

Erstellen und Verknüpfen Sie neue Arbeitsaufgaben auf Lebenslinien, Meldungen und anderen Elementen

  • Öffnen Sie das Kontextmenü für eines oder mehrere Elemente, wählen Sie Arbeitsaufgabe erstellen aus, und klicken Sie dann auf den Arbeitsaufgabentyp, den Sie erstellen möchten.

    Eine neue Arbeitsaufgabe wird geöffnet, damit Sie es ausführen können.

Verknüpfen Sie Lebenslinien, Meldungen und anderen Elementen an Arbeitsaufgaben

  1. Öffnen Sie das Kontextmenü für eines oder mehrere Elemente, und wählen Sie dann Mit Arbeitsaufgabe verknüpfen aus.

  2. Führen Sie im Dialogfeld Mit Arbeitsaufgaben eine Abfrage aus, um eine Arbeitsaufgabe zu suchen, oder geben Sie direkt die ID der Arbeitsaufgabe ein.Sie können eine beliebige Anzahl von Arbeitsaufgaben auswählen.

Sie können diesen Befehl später wiederholen, um dem gleichen Modellelement weitere Arbeitsaufgabenlinks hinzuzufügen.

Anzeigen von verknüpften Arbeitsaufgaben

Öffnen Sie das Kontextmenü für eines oder mehrere Elemente, und wählen Sie dann Arbeitsaufgaben anzeigen aus.

Entfernen von Links zu Arbeitsaufgaben

  1. Öffnen Sie das Kontextmenü für ein Element, und wählen Sie dann Arbeitsaufgaben entfernen aus.

  2. Wählen Sie im Dialogfeld Entfernen Sie Links zu Arbeitsaufgaben links die Arbeitsaufgaben aus, die Sie entfernen möchten.

Die Links zwischen dem Modellelement und den ausgewählten Arbeitsaufgaben werden gelöscht.Die Arbeitsaufgaben und die Modellelemente werden nicht entfernt.

Richtlinien zum Verwenden von generierten Sequenzdiagrammen

Beim Untersuchen von Code mit generierten Sequenzdiagrammen sind die folgenden Richtlinien eventuell hilfreich.

Ee317485.collapse_all(de-de,VS.110).gifUntersuchen des Codes

Generieren Sie Abhängigkeitsdiagramme, um ein Gesamtbild der wichtigsten Gruppierungen und Abhängigkeiten in einem umfangreichen Codeabschnitt zu erhalten.Generieren Sie anschließend Sequenzdiagramme, um einzelne Teile des Entwurfs zu untersuchen.Weitere Informationen finden Sie unter Visualisieren von Codeabhängigkeiten in Abhängigkeitsdiagrammen.

Ee317485.collapse_all(de-de,VS.110).gifInterpretieren des Diagramms

Durch den Algorithmus zum Erstellen des Diagramms erfolgt eine symbolische Ausführung des Codes.Es gibt einige Situationen, die in diesem Verfahren nicht berücksichtigt werden.Dabei handelt sich insbesondere um die folgenden Situationen:

  • Möglicherweise enthält das Diagramm mehrere Lebenslinien, jedoch behandelt der ausgeführte Code nur eine Instanz.Im Allgemeinen wird für jede Meldung eine eigene Lebenslinie generiert.

  • Der Typ einer Lebenslinie ist der im Programmcode deklarierte Typ, auch wenn im Code immer ein Untertyp verwendet wird.

Ee317485.collapse_all(de-de,VS.110).gifKonzentrieren der Aufmerksamkeit auf einen Aspekt des Entwurfs

  • Wählen Sie einen Aspekt des Entwurfs aus, auf den Sie sich konzentrieren.Sie können unterschiedliche Diagramme generieren, um sich auf unterschiedliche Aspekte zu konzentrieren, und in jeder Phase der Arbeit Kopien der Diagrammdateien erstellen.

  • Um ein zweckdienliches Diagramm zu erhalten, das jeden Aspekt des Entwurfs darstellt, müssen Sie möglicherweise mit den Namespacefiltern und der Namespacegenerierung experimentieren.

  • Löschen Sie Meldungen, die für den jeweiligen Aspekt nicht relevant sind, und erweitern Sie relevante Meldungen, um weitere Details anzuzeigen.

  • Verwenden Sie den Befehl Reduzieren, um Lebenslinien zu gruppieren, die eine Gruppe von interagierenden Objekten darstellen, sofern die internen Interaktionen nicht für den Aspekt relevant sind, auf den Sie sich konzentrieren.

Ee317485.collapse_all(de-de,VS.110).gifAktualisieren des Entwurfs

  • Mithilfe von Versionskontrolle können Sie gemeinsam mit anderen Personen an einem Diagramm arbeiten.Es empfiehlt sich, ein Diagramm während der Bearbeitung zu sperren, damit es jeweils nur von einer Person bearbeitet werden kann.

  • Mithilfe eines generierten Sequenzdiagramms können Sie häufig Funktionen des vorhandenen Codes identifizieren, die das Ändern oder Anpassen des Codes erschweren.Beispielsweise beobachten Sie eventuell, dass eine Lebenslinie alle Meldungen sendet, andere Lebenslinien jedoch nur auf Meldungen antworten, ohne viele eigene Meldungen zu senden.Überlegen Sie, ob es effizienter ist, die von diesem Objekt ausgeführte Arbeit auf die anderen Objekte zu verteilen.Jede Objektklasse sollte über eine einzelne eindeutig definierte Aufgabe verfügen.Diese Richtlinie erleichtert es im Allgemeinen, zu bestimmen, welche Teile des Programms geändert werden müssen, wenn sich die Anforderungen der Benutzer ändern, oder die Teile in einer anderen Variante der Anwendung neu anzuordnen.

  • Wenn ein Diagramm einen bestimmten Aspekt des Entwurfs darstellt, erstellen Sie Kopien des Diagramms, und bearbeiten Sie diese, um alternative Vorschläge für Änderungen zu erstellen.

  • Sie können Elemente eines generierten Sequenzdiagramms in ein UML-Sequenzdiagramm kopieren.Sie müssen zunächst das UML-Sequenzdiagramm in einem UML-Modellierungsprojekt erstellen.In diesem können Sie unterschiedliche Ansichten des aktualisierten Entwurfs modellieren, und Sie können die Lebenslinien mit Komponenten oder Klassen im Modell verknüpfen.Sie können auch die Interaktion erweitern, um externe Akteure einzuschließen.

Problembehandlung bei Sequenzdiagrammen

In der folgenden Tabelle werden Probleme, die beim Generieren von Sequenzdiagrammen auftreten können, sowie mögliche Problemlösungen beschrieben:

Problem

Lösung

Sequenzdiagramm kann nicht generiert werden.

Ein Sequenzdiagramm kann möglicherweise nicht generiert werden, wenn der System-Namespace ausgeschlossen ist und der Code einen Aufruf einer COM-Methode enthält, die ref-Parameter oder out-Parameter akzeptiert, und einen Parameter mithilfe des new-Schlüsselworts übergibt.Ändern Sie den Code, oder schließen Sie den System-Namespace ein, wenn Sie das Diagramm generieren, um dieses Problem zu vermeiden.

Ein leeres Sequenzdiagramm wird generiert, nachdem die folgende Meldung angezeigt wurde:

"Der Objektverweis ist nicht auf eine Objektinstanz festgelegt."

Dieses Problem tritt auf, wenn ein Sequenzdiagramm von einer expliziten Implementierung einer Schnittstellenmethode generiert wird und das Diagramm nicht automatisch zum Quellprojekt hinzugefügt wird.Bei einer expliziten Implementierung wird dem Methodennamen der Schnittstellenname und ein Punkt (.) vorangestellt.

Dieses Problem tritt z. B. auf, wenn Sie ein Sequenzdiagramm aus der folgenden Signatur generieren, ohne das Sequenzdiagramm automatisch zu dem Projekt hinzuzufügen:

void ILinkedWorkItemExtension.OnWorkItemCreated( ) {}

Schließen Sie den Schnittstellennamen und den Punkt (.) nach Möglichkeit nicht ein.

- oder -

Stellen Sie im Dialogfeld zur Erstellung des Sequenzdiagramms sicher, dass dem Projekt das Sequenzdiagramm automatisch hinzugefügt wird.

Die Generierung des Sequenzdiagramms dauert sehr lange.

- oder -

Bei erneutem Öffnen stürzt das Sequenzdiagramm ab.

Je nach Computerkonfiguration könnte das Sequenzdiagramm zu groß sein, um schnell generiert zu werden. Möglicherweise verfügt Visual Studio nicht über genügend Arbeitsspeicher und stürzt beim Schließen und erneuten Öffnen des Diagramms ab.Ein Sequenzdiagramm, das z. B. über 390 Lebenslinien und 19.000 Meldungen verfügt, führt zu einer Diagrammdatei mit einer Größe von mehr als 85 MB.

Reduzieren Sie den Umfang des Diagramms, indem Sie die Aufruftiefe verringern, unnötige Namespaces herausfiltern, Eigenschaften und Ereignisse entfernen usw.

Siehe auch

Referenz

UML-Sequenzdiagramme: Referenz

Konzepte

Visualisieren und Verstehen von Code

Visualisieren von Codeabhängigkeiten in Abhängigkeitsdiagrammen

Erstellen von Ebenendiagrammen aus Code