Visualisieren von Code in Sequenzdiagrammen

Wenn Sie visualisieren möchten, wie der Code eine bestimmte Methode implementiert, erstellen Sie ein Sequenzdiagramm aus einer Methode in Visual Studio Ultimate. Das Sequenzdiagramm stellt die Interaktion zwischen Objekten als eine Reihe von Lebenslinien und Meldungen dar. Lebenslinien stellen Instanzen von Objekten dar, und Meldungen stellen Methodenaufrufe zwischen diesen Objekten dar. Sie können Sequenzdiagramme aus Visual C# .NET- oder Visual Basic .NET-Code generieren, jedoch nicht aus Projekten, die Code in mehreren Apps gemeinsam verwenden.

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.

  • Generieren eines Sequenzdiagramms aus Quellcode

  • Erforschen von Code in Sequenzdiagrammen

  • Bearbeiten des Diagramms, um Entwurfsänderungen vorzuschlagen

  • Vom Diagramm zu Code gehen

  • Verknüpfen eines Sequenzdiagramms mit Arbeitsaufgaben

  • Beziehungen zu anderen Diagrammen

  • Problembehandlung bei Sequenzdiagrammen

Generieren eines Sequenzdiagramms aus Quellcode

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

  2. Wechseln Sie zur Methodendefinition, klicken Sie im Editor mit der rechten Maustaste, und wählen Sie dann Sequenzdiagramm generieren aus.

  3. Geben Sie im Feld Maximale Aufruftiefe die maximale Anrufebene an, die Sie anzeigen möchten. Wenn z. B. nur die erste Ebene von Aufrufen angezeigt werden soll, geben Sie die maximale Aufruftiefe 1 an.

    Dialogfeld „Sequenz erstellen“

    Hinweis

    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 zu verlorenen 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

    Auswahl

    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. Aktivieren Sie das Kontrollkästchen, wenn Sie das Diagramm zum aktuellen Projekt hinzufügen möchten.

  7. Wenn Sie fertig sind, wählen Sie OK aus, um das Sequenzdiagramm zu generieren.

    Informationen zu Problemen beim Generieren von Sequenzdiagrammen finden Sie unter Problembehandlung bei Sequenzdiagrammen.

    Hinweis

    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.

Wichtig

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.

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

So wird's gemacht

Auszuführende Schritte

Anzeigen der nächsten Aufrufebene

Öffnen Sie das Kontextmenü für eine Meldung, die keine Ziellebenslinie aufweist, 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 Lebenslinien, die Sie gruppieren möchten, öffnen Sie das Kontextmenü für die Auswahl, und wählen Sie dann Reduzieren aus.

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

Zum Erweitern der Gruppe öffnen Sie deren Kontextmenü, 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 Tool Kommentar, klicken Sie in das 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 Details finden Sie unter UML-Sequenzdiagramme: Richtlinien.

So wird's gemacht

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. Wählen Sie im Werkzeugkasten die Option Kommentar aus, und klicken Sie dann im Diagramm auf eine Stelle in der Nähe des Elements.

  2. Wählen Sie im Werkzeugkasten die Option Kommentarverknüpfung aus, wählen Sie anschließend im Diagramm den Kommentar aus, und klicken Sie dann auf das Element.

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-TASTE gedrückt, während Sie auf die einzelnen Lebenslinien klicken.

    Hinweis

    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

Klicken Sie im Werkzeugkasten auf Lebenslinie, und wählen Sie dann das Diagramm aus.

Hinzufügen einer Meldung

So erstellen Sie Meldungen
  1. Wählen Sie im Werkzeugkasten eine Meldung vom Typ Synchron oder Asynchron 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 auf eine Quelllebenslinie.

  3. Wählen Sie eine Ziellebenslinie aus.

    - oder -

    Um eine gefundene oder verlorene Meldung zu erstellen, klicken Sie im Diagramm auf einen leeren Bereich hinter bzw. vor der Quelllebenslinie.

  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.

Hinweis

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 des kombinierten Fragments 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 Sequenzdiagrammoberfläche, und wählen Sie dann Eigenschaften aus.

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

Vom Diagramm zu Code gehen

So wird's gemacht

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 eine Meldung, und wählen Sie dann Im Architektur-Explorer anzeigen aus.

Weitere Informationen finden Sie unter Zuordnen von Abhängigkeiten im Code von 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, vergewissern Sie sich, dass Sie mit einem Team Foundation Server verbunden sind. Weitere Informationen finden Sie unter Verknüpfen von Modellelementen und Arbeitsaufgaben.

So wird's gemacht

Auszuführende Schritte

Erstellen von neuen Arbeitsaufgaben und Verknüpfen der Arbeitsaufgaben mit Lebenslinien, Meldungen oder anderen Elementen

  • Öffnen Sie das Kontextmenü für ein oder mehrere Elemente, wählen Sie Arbeitsaufgabe erstellen aus, und wählen Sie dann den Typ der zu erstellenden Arbeitsaufgabe aus.

    Eine neue Arbeitsaufgabe wird geöffnet, sodass Sie sie ausführen können.

Verknüpfen von Lebenslinien, Meldungen oder anderen Elementen mit Arbeitsaufgaben

  1. Öffnen Sie das Kontextmenü für ein 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 ein 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 für Links zu Arbeitsaufgaben entfernen die Links zu den 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.

Untersuchen 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 Zuordnen von Abhängigkeiten im Code von Abhängigkeitsdiagrammen.

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

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

Aktualisieren 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 von Code

Zuordnen von Abhängigkeiten im Code von Abhängigkeitsdiagrammen

Erstellen von Ebenendiagrammen aus Code