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.
Hinweis |
---|
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
Öffnen Sie in Visual Studio die Codedatei, die die Methodendefinition enthält.
Öffnen Sie im Kontextmenü auf eine beliebige Stelle in der Methodendefinition, und wählen Sie dann Sequenzdiagramm generieren aus.
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.
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 über verlorene Meldungen finden Sie unter UML-Sequenzdiagramme: Referenz.
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.
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.
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.
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. |
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:
|
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:
|
Verschieben und Neuanordnen von Meldungen |
Ziehen Sie im Diagramm eine Meldung aufwärts oder abwärts.
|
Hinzufügen einer Lebenslinie |
Wählen Sie in LebenslinieToolbox aus, und wählen Sie dann das Diagramm aus. |
Hinzufügen einer Meldung |
|
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 |
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 |
|
Navigieren aus dem Diagramm
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 |
|
Verknüpfen Sie Lebenslinien, Meldungen und anderen Elementen an Arbeitsaufgaben |
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 |
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 Visualisieren von Codeabhängigkeiten in 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:
|
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