Freigeben über


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

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

  2. Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in der Methodendefinition, und klicken Sie dann auf Sequenzdiagramm generieren.

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

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

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

  1. Klicken Sie in der Toolbox auf Kommentar, und klicken Sie dann im Diagramm auf eine Stelle in der Nähe des Elements.

  2. Klicken Sie in der Toolbox auf Kommentarverknüpfung, klicken Sie anschließend im Diagramm auf den Kommentar, 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.

    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

Klicken Sie in der Toolbox auf Lebenslinie und dann auf das Diagramm.

Hinzufügen einer Meldung

  1. Klicken Sie in der Toolbox auf eine Meldung vom Typ Synchron oder Asynchron.

    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. Klicken Sie auf eine Ziellebenslinie.

    - oder -

    Um eine gefundene Meldung 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.

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. Klicken Sie mit der rechten Maustaste auf die Auswahl, zeigen Sie auf Umschließen mit, und klicken Sie dann auf einen Typ von kombiniertem 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

  1. Klicken Sie mit der rechten Maustaste auf die Sequenzdiagrammoberfläche, und klicken Sie dann auf Eigenschaften.

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

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

  1. Klicken Sie mit der rechten Maustaste auf ein oder mehrere Elemente, und klicken Sie dann auf Mit Arbeitsaufgabe verknüpfen.

  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

Klicken Sie mit der rechten Maustaste auf ein oder mehrere Elemente, und klicken Sie dann auf Arbeitsaufgaben anzeigen.

Entfernen von Links zu Arbeitsaufgaben

  1. Klicken Sie mit der rechten Maustaste auf ein Element, und klicken Sie dann auf Arbeitsaufgaben entfernen.

  2. Klicken Sie im Dialogfeld Links entfernen zu Arbeitsaufgaben auf die Arbeitsaufgabenlinks, 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 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:

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

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.