Gewusst wie: Untersuchen von Code mit Sequenzdiagrammen
Aktualisiert: August 2010
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. Um Sequenzdiagramme aus ASP.NET-Websiteprojekten zu generieren, installieren Sie Visual Studio 2010 Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack.
Tipp
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.
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 Gewusst wie: Verknüpfen von Modellelementen mit Arbeitsaufgaben.
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.
Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in der Methodendefinition, und klicken Sie dann auf Sequenzdiagramm generieren.
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. Das Sequenzdiagramm zeigt die zweite Ebene von Aufrufen als Meldungen an, die keine Ziellebenslinie enthalten. Diese Meldungen werden als verlorene Meldungen bezeichnet.
Tipp
Nachdem Sie das Diagramm generiert haben, können Sie bestimmte verlorene Meldungen erweitern.
Wählen Sie unter Aufrufe einbeziehen einen Bereich aus der folgenden Tabelle aus:
Gewünschte Anzeige
Auszuwählende Option
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.
Klicken Sie abschließend auf OK.
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.
Tipp
Arraydeklarationen werden nicht auf generierten Sequenzdiagrammen angezeigt.
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.
Zweck |
Auszuführende Schritte |
---|---|
Anzeigen der nächsten Aufrufebene |
Klicken Sie mit der rechten Maustaste auf eine Meldung, die keine Ziellebenslinie aufweist, und klicken Sie dann auf Ausgehend erweitern. |
Erweitern einer Meldung in einem neuen Diagramm |
Klicken Sie mit der rechten Maustaste auf eine Meldung, und klicken Sie dann auf Sequenzdiagramm generieren. Dem aktuellen Projekt wird das neue Diagramm hinzugefügt. |
Reduzieren einer Gruppe von Meldungen auf eine Lebenslinie |
Wählen Sie die zu gruppierenden Lebenslinien aus, klicken Sie mit der rechten Maustaste auf die Auswahl, und klicken Sie dann auf Reduzieren. Sie können eine Gruppe umbenennen, der Name geht jedoch verloren, wenn Sie die Gruppe erweitern. Um die Gruppe zu erweitern, klicken Sie mit der rechten Maustaste darauf, und klicken Sie dann auf Erweitern. |
Löschen von Elementen |
Klicken Sie mit der rechten Maustaste auf die Form, und klicken Sie anschließend auf Löschen. |
Verbessern des Layouts |
Klicken Sie mit der rechten Maustaste auf einen leeren Bereich des Diagramms, und klicken Sie dann auf Layout neu anordnen. Sie können diesen Befehl auch rückgängig machen. |
Hervorheben von ausgewählten Elementen |
Klicken Sie mit der rechten Maustaste auf ein Element, und klicken Sie dann auf Eigenschaften. Legen Sie im Fenster Eigenschaften das Feld Farbe fest. |
Kommentieren des Diagramms |
Klicken Sie auf das Tool Kommentar, klicken Sie auf 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 Informationen finden Sie unter UML-Sequenzdiagramme: Richtlinien.
Zweck |
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 |
Klicken Sie in der Toolbox auf Lebenslinie und dann auf das Diagramm. |
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 |
Klicken Sie mit der rechten Maustaste auf eine Meldung, und klicken Sie dann auf In Diagramm verschieben. 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
Zweck |
Auszuführende Schritte |
---|---|
Navigieren von einer Lebenslinie oder Meldung zur Definition der Klasse bzw. Methode |
Klicken Sie mit der rechten Maustaste auf die Lebenslinie oder Meldung, und klicken Sie dann auf Gehe zu Definition. |
Suchen der Klasse oder Methode im Architektur-Explorer |
Klicken Sie mit der rechten Maustaste auf eine Lebenslinie oder Meldung, und klicken Sie dann auf Im Architektur-Explorer anzeigen. Weitere Informationen finden Sie unter Gewusst wie: Generieren von Abhängigkeitsdiagrammen für .NET-Code. |
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. Weitere Informationen finden Sie unter Gewusst wie: Verknüpfen von Modellelementen mit Arbeitsaufgaben.
Zweck |
Auszuführende Schritte |
---|---|
Verknüpfen von Lebenslinien, Meldungen oder anderen Elementen mit Arbeitsaufgaben |
Sie können diesen Befehl später wiederholen, um dem gleichen Modellelement weitere Arbeitsaufgabenlinks hinzuzufügen. |
Anzeigen von verknüpften Arbeitsaufgaben |
Klicken Sie mit der rechten Maustaste auf ein oder mehrere Elemente, und klicken Sie dann auf Arbeitsaufgaben anzeigen. |
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 Gewusst wie: Generieren von Abhängigkeitsdiagrammen für .NET-Code.
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
Aufgaben
Gewusst wie: Erstellen von Ebenendiagrammen aus Artefakten
Referenz
UML-Sequenzdiagramme: Referenz
Konzepte
Visualisieren von vorhandenem Code
Gewusst wie: Generieren von Abhängigkeitsdiagrammen für .NET-Code
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
August 2010 |
Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack ist erforderlich, um Sequenzdiagramme für ASP.NET-Websiteprojekte zu generieren. |
Kundenfeedback. |
April 2011 |
Platzhalterzeichen (*) werden im Feld Andere Namespaces nicht unterstützt. |
Kundenfeedback. |