Freigeben über


Abhängigkeitsdiagramme: Richtlinien

Beschreiben Sie die Architektur Ihrer App auf einer allgemeinen Ebene, indem Sie Abhängigkeitsdiagramme in Visual Studio erstellen. Stellen Sie sicher, dass Code und Entwurf konsistent bleiben, indem Sie den Code mit einem Abhängigkeitsdiagramm validieren. Sie können auch eine Ebenenvalidierung im Buildprozess einschließen.

Welche Visual Studio-Editionen dieses Feature unterstützen, erfahren Sie unter Edition-Unterstützung für Architektur- und Modellierungstools.

Hinweis

Abhängigkeitsdiagramme für .NET Core-Projekte werden ab Visual Studio 2019, Version 16.2 unterstützt.

Was ist ein Abhängigkeitsdiagramm?

Wie ein herkömmliches Architekturdiagramm identifiziert ein Abhängigkeitsdiagramm die wichtigsten Komponenten oder Funktionseinheiten des Entwurfs und ihre Abhängigkeiten untereinander. Jeder Knoten im Diagramm, als Ebene bezeichnet, stellt eine logische Gruppe von Namespaces, Projekten oder anderen Artefakten dar. Sie können die Abhängigkeiten zeichnen, die im Entwurf vorhanden sein sollen. Anders als bei einem herkömmlichen Architekturdiagramm können Sie überprüfen, ob die tatsächlichen Abhängigkeiten im Quellcode den gewünschten Abhängigkeiten entsprechen, die Sie angegeben haben. Indem Sie die Validierung zu einem Bestandteil eines regulären Buildvorgangs in Team Foundation Server machen, stellen Sie sicher, dass der Programmcode auch bei zukünftigen Änderungen mit der Systemarchitektur übereinstimmt. Siehe Abhängigkeitsdiagramme: Referenz.

So entwerfen oder aktualisieren Sie Ihre App mit Abhängigkeitsdiagrammen

Die folgenden Schritte bieten einen Überblick über die Verwendung von Abhängigkeitsdiagrammen im Entwicklungsprozess. In späteren Abschnitten dieses Themas werden die einzelnen Schritte ausführlicher beschrieben. Wenn Sie einen neuen Entwurf entwickeln, lassen Sie die Schritte aus, die sich auf vorhandenen Code beziehen.

Hinweis

Die Schritte entsprechen ungefähr der tatsächlichen Reihenfolge. Wahrscheinlich werden Sie die Aufgaben überlappend ausführen, die Reihenfolge Ihrer eigenen Situation anpassen und am Anfang jeder Iteration im Projekt nochmals auf die Beschreibung der Schritte zurückkommen.

  1. Erstellen Sie ein Abhängigkeitsdiagramm für die gesamte Anwendung oder für eine Ebene in der Anwendung.

  2. Definieren Sie Ebenen zur Darstellung der wichtigsten Funktionsbereiche oder Komponenten Ihrer Anwendung. Benennen Sie diese Ebenen nach ihrer Funktion, z. B. "Präsentation" oder "Dienste". In einer Visual Studio-Projektmappe können Sie jede Ebene einer Sammlung von Artefakten zuordnen, z. B. Projekten, Namespaces, Dateien usw.

  3. Ermitteln Sie die vorhandenen Abhängigkeiten zwischen Ebenen.

  4. Bearbeiten Sie die Ebenen und Abhängigkeiten, um den aktualisierten Entwurf darzustellen, den Sie im Code wiedergeben möchten.

  5. Entwerfen Sie neue Bereiche der Anwendung, indem Sie Ebenen erstellen, die die wichtigsten Architekturbausteine oder Komponenten darstellen und Abhängigkeiten definieren, um zu zeigen, wie jede Ebene die anderen nutzt.

  6. Bearbeiten Sie das Layout und das Aussehen des Diagramms, um es mit Kollegen zu besprechen.

  7. Überprüfen Sie den Code anhand des Abhängigkeitsdiagramms, um Konflikte zwischen dem Code und der gewünschten Architektur aufzuzeigen.

  8. Aktualisieren Sie den Code, damit er Ihrer neuen Architektur entspricht. Führen Sie die Entwicklung und Umgestaltung von Code in Iterationen durch, bis bei der Validierung keine Konflikte auftreten.

  9. Integrieren Sie die Ebenenvalidierung in den Buildprozess, um sicherzustellen, dass der Code weiterhin Ihrem Entwurf entspricht.

Erstellen eines Abhängigkeitsdiagramms

Ein Abhängigkeitsdiagramm muss innerhalb eines Modellierungsprojekts erstellt werden. Sie können einem vorhandenen Modellierungsprojekt ein neues Abhängigkeitsdiagramm hinzufügen, ein neues Modellierungsprojekt für das Abhängigkeitsdiagramm erstellen oder ein vorhandenes Abhängigkeitsdiagramm innerhalb desselben Modellierungsprojekts kopieren.

Wichtig

Fügen Sie Modellierungsprojekten oder anderen Speicherorten in der Projektmappe keine vorhandenen Abhängigkeitsdiagramme aus Modellierungsprojekten hinzu, und kopieren bzw. verschieben Sie diese nicht. Ein auf diese Weise kopiertes Abhängigkeitsdiagramm weist die gleichen Verweise auf wie das ursprüngliche Diagramm auf, auch wenn Sie das Diagramm ändern. Dies verhindert das ordnungsgemäße Funktionieren der Ebenenvalidierung und verursacht möglicherweise andere Probleme, z. B. fehlende Elemente oder andere Fehler beim Versuch, das Diagramm zu öffnen.

Siehe Erstellen von Abhängigkeitsdiagrammen aus dem Code.

Ebenen definieren, um Funktionsbereiche oder Komponenten darzustellen

Ebenen stellen logische Gruppen von Artefakten dar, z. B. Projekte, Codedateien, Namespaces, Klassen und Methoden. Sie können Ebenen aus Artefakten aus Visual C#- und Visual Basic-Projekten erstellen, oder Sie können Spezifikationen oder Pläne an eine Ebene anfügen, indem Sie Dokumente verknüpfen, z. B. Word-Dateien oder PowerPoint-Präsentationen. Jede Ebene wird im Diagramm als Rechteck angezeigt und gibt Aufschluss über die Anzahl der mit ihr verknüpften Artefakte. Eine Ebene kann geschachtelte Ebenen enthalten, um spezielle Aufgaben zu beschreiben.

Benennen Sie als allgemeine Richtlinie Ebenen nach ihrer Funktion, z. B. "Präsentation" oder "Dienste". Fügen Sie Artefakte in der gleichen Ebene ein, wenn zwischen ihnen eine enge Abhängigkeit besteht. Wenn die Artefakte getrennt voneinander aktualisiert oder in separaten Anwendungen verwendet werden können, sollten sie auf unterschiedlichen Ebenen eingefügt werden.

Tipp

Bestimmte Arten von Artefakten können mit Ebenen verknüpft, aber nicht anhand des Abhängigkeitsdiagramms überprüft werden. Öffnen Sie den Ebenen-Explorer, und überprüfen Sie die Eigenschaft Unterstützt die Validierung des Artefaktlinks, um festzustellen, ob das Artefakt die Validierung unterstützt. Siehe auch Vorhandene Abhängigkeiten zwischen Ebenen ermitteln.

Bei der Aktualisierung einer nicht vertrauten Anwendung können Sie auch Codezuordnungen erstellen. Diese Diagramme können Ihnen helfen, Muster und Abhängigkeiten zu ermitteln, während Sie den Code untersuchen. Mithilfe des Projektmappen-Explorers können Namespaces und Klassen untersucht werden, die häufig den vorhandenen Ebenen entsprechen. Weisen Sie diese Codeartefakte Ebenen zu, indem Sie sie aus dem Projektmappen-Explorer in Abhängigkeitsdiagramme ziehen. Anschließend können Sie mithilfe von Abhängigkeitsdiagrammen den Code aktualisieren und ihn mit Ihrem Design konsistent halten.

Siehe:

Vorhandene Abhängigkeiten zwischen Ebenen ermitteln

Eine Abhängigkeit ist überall dort vorhanden, wo ein Artefakt, das einer Ebene zugeordnet ist, einen Verweis auf ein Artefakt enthält, das einer anderen Ebene zugeordnet ist. Beispiel: Eine Klasse in einer Ebene deklariert eine Variable, deren Klasse sich auf einer anderen Ebene befindet. Vorhandene Abhängigkeiten können mittels Reverse Engineering (Zurückentwicklung) ermittelt werden.

Hinweis

Bei bestimmten Arten von Artefakten ist kein Reverse Engineering der Abhängigkeiten möglich. So kann beispielsweise bei einer Ebene, die mit einer Textdatei verknüpft ist, keinerlei Rückentwicklung der Abhängigkeiten vorgenommen werden. Klicken Sie zum Anzeigen der Artefakte mit Abhängigkeiten, bei denen ein Reverse-Engineering möglich ist, mit der rechten Maustaste auf mindestens eine Ebene, und klicken Sie anschließend auf Links anzeigen. Überprüfen Sie im Ebenen-Explorer die Spalte Unterstützt die Validierung. Bei Artefakten, die in dieser Spalte den Eintrag False enthalten, ist ein Reverse-Engineering von Abhängigkeiten nicht möglich.

So entwickeln Sie vorhandene Abhängigkeiten zwischen Ebenen zurück

Wählen Sie mindestens eine Ebene aus, klicken Sie mit der rechten Maustaste auf die ausgewählte Ebene, und klicken Sie anschließend auf Abhängigkeiten generieren.

In der Regel sind einige unerwünschte Abhängigkeiten vorhanden. Diese Abhängigkeiten können bearbeitet werden, um sie mit dem geplanten Entwurf in Einklang zu bringen.

Ebenen und Abhängigkeiten bearbeiten, um den beabsichtigten Entwurf zu zeigen

Um die geplanten Änderungen an Ihrem System oder der vorgesehenen Architektur zu beschreiben, verwenden Sie die folgenden Schritte zum Bearbeiten des Abhängigkeitsdiagramms. Sie können vor dem Erweitern des Codes ggf. auch einige Refactoringänderungen vornehmen, um die Codestruktur zu verbessern. Siehe auch Verbessern der Struktur des Codes.

An Auszuführende Schritte
Löschen einer unerwünschten Abhängigkeit Klicken Sie auf die Abhängigkeit, und drücken Sie ENTF.
Ändern oder Einschränken der Richtung einer Abhängigkeit Legen Sie die Eigenschaft Richtung fest.
Erstellen von neuen Abhängigkeiten Verwenden Sie die Tools Abhängigkeit und Bidirektionale Abhängigkeit.

Doppelklicken Sie zum Zeichnen mehrerer Abhängigkeiten auf das Tool. Klicken Sie nach Abschluss des Vorgangs auf das Tool Zeiger, oder drücken Sie ESC.
Angeben, dass einer Ebene zugeordnete Artefakte nicht von den angegebenen Namespaces abhängen dürfen Geben Sie die Namespaces in die Eigenschaft Unzulässige Namespaceabhängigkeiten der Ebene ein. Trennen Sie die Namespaces mit einem Semikolon (;).
Angeben, dass einer Ebene zugeordnete Artefakte nicht zu den angegebenen Namespaces gehören dürfen Geben Sie die Namespaces in die Eigenschaft Unzulässige Namespaces der Ebene ein. Trennen Sie die Namespaces mit einem Semikolon (;).
Angeben, dass einer Ebene zugeordnete Artefakte zu einem der angegebenen Namespaces gehören müssen Geben Sie den Namespace in die Eigenschaft Erforderliche Namespaces der Ebene ein. Trennen Sie die Namespaces mit einem Semikolon (;).

Verbessern der Struktur des Codes

Umgestaltungsänderungen sind Verbesserungen, die das Verhalten der Anwendung nicht ändern, jedoch zukünftige Änderungen und Erweiterungen des Codes erleichtern. Bei einem gut strukturiertem Code lässt sich der Entwurf leicht in ein Abhängigkeitsdiagramm abstrahieren.

Wenn Sie z. B. eine Ebene für jeden Namespace im Code erstellen und die Abhängigkeiten dann zurück entwickeln, sollte die Anzahl unidirektionaler Abhängigkeiten zwischen den Ebenen minimal sein. Wenn Sie ein detailliertes Diagramm mit Klassen oder Methoden als Ebenen zeichnen, sollte das Ergebnis dieselben Merkmale aufweisen.

Andernfalls lässt sich der Code im Laufe seiner Lebensdauer nur schwer ändern und eignet sich weniger gut für die Validierung mithilfe von Abhängigkeitsdiagrammen.

Neue Bereiche der Anwendung entwerfen

Wenn Sie mit der Entwicklung eines neuen Projekts oder eines neuen Bereichs in einem neuen Projekt beginnen, können Sie Ebenen und Abhängigkeiten zeichnen, um die Hauptkomponenten zu identifizieren, bevor Sie mit dem Entwickeln des Codes beginnen.

  • Zeigen Sie in Ihren Abhängigkeitsdiagrammen nach Möglichkeit erkennbare Architekturmuster an. Beispielsweise kann ein Abhängigkeitsdiagramm, das eine Desktopanwendung beschreibt, die Ebenen „Präsentation“, „Domänenlogik“ und „Datenspeicher“ enthalten. Ein Abhängigkeitsdiagramm für ein einzelnes Feature in einer Anwendung kann beispielsweise die Ebenen „Modell“, „Ansicht“ und „Controller“ enthalten.

  • Erstellen Sie ein Codeartefakt für jede Ebene, z. B. einen Namespace, eine Klasse oder eine Komponente. Dies vereinfacht das Verfolgen des Codes und das Verknüpfen der Codeartefakte mit den Ebenen. Verknüpfen Sie jedes Artefakt mit der entsprechenden Ebene, sobald Sie das Artefakt erstellen.

  • Die meisten Klassen und anderen Artefakte müssen nicht mit Ebenen verknüpft werden, da sie größeren Artefakten (wie z. B. Namespaces) angehören, die Sie bereits mit Ebenen verknüpft haben.

  • Erstellen Sie ein neues Diagramm für ein neues Feature. In der Regel sind ein oder mehrere Abhängigkeitsdiagramme vorhanden, die die gesamte Anwendung beschreiben. Wenn Sie eine neue Funktion in der Anwendung entwerfen, ändern Sie nicht die vorhandenen Diagramme, und fügen Sie ihnen keine Elemente hinzu. Erstellen Sie stattdessen ein eigenes Diagramm, das die neuen Teile des Codes wiedergibt. Das neue Diagramm kann beispielsweise Ebenen für die Präsentation, Domänenlogik und Datenbank der neuen Funktion enthalten.

    Wenn Sie die Anwendung erstellen, wird der Code sowohl anhand des allgemeinen Diagramms als auch anhand des ausführlicheren Funktionsdiagramms überprüft.

Das Layout für die Präsentation und Diskussion bearbeiten

Bearbeiten Sie Darstellung und Layout des Diagramms, um die Suche nach Ebenen und Abhängigkeiten sowie Diskussionen mit Teammitgliedern zu vereinfachen. Führen Sie hierzu die folgenden Schritte aus:

  • Ändern der Größe, Formen und Positionen von Ebenen

  • Ändern der Farben von Ebenen und Abhängigkeiten

    • Wählen Sie eine oder mehrere Ebenen oder Abhängigkeiten aus, klicken Sie mit der rechten Maustaste, und klicken Sie dann auf Eigenschaften. Bearbeiten Sie im Fenster Eigenschaften die Eigenschaft Farbe.

Den Code anhand des Diagramms überprüfen

Wenn Sie das Diagramm bearbeitet haben, können Sie es jederzeit manuell oder bei jedem Build automatisch anhand des Codes validieren.

Thema

Den Code aktualisieren, um ihn an die neue Architektur anzupassen

Normalerweise treten Fehler auf, wenn Sie den Code zum ersten Mal anhand eines aktualisierten Abhängigkeitsdiagramms überprüfen. Diese Fehler können mehrere Ursachen haben:

  • Ein Artefakt wurde der falschen Ebene zugewiesen. Verschieben Sie in diesem Fall das Artefakt.

  • Von einem Artefakt (beispielsweise einer Klasse) wird eine andere Klasse auf eine Weise verwendet, die einen Konflikt mit der Architektur zur Folge hat. Gestalten Sie in diesem Fall den Code um, um die Abhängigkeit zu entfernen.

Aktualisieren Sie zum Beheben dieser Fehler den Code, bis bei der Validierung keine Fehler mehr angezeigt werden. Dies ist normalerweise ein iterativer Vorgang. Weitere Informationen zu diesen Fehlern finden Sie unter Überprüfen von Code mit Abhängigkeitsdiagrammen.

Hinweis

Beim Entwickeln oder Umgestalten des Codes müssen Sie möglicherweise neue Artefakte mit dem Abhängigkeitsdiagramm verknüpfen. Dies ist jedoch möglicherweise nicht erforderlich, wenn Ebenen z. B. vorhandene Namespaces darstellen und diesen Namespaces mit dem neuen Code lediglich weitere Elemente hinzugefügt werden.

Während des Entwicklungsprozesses können Sie ggf. einige der Konflikte unterdrücken, die während der Validierung gemeldet werden. Beispielsweise können Sie Fehler unterdrücken, die Sie bereits behandeln oder die für das spezifische Szenario nicht relevant sind. Wenn Sie einen Fehler unterdrücken, empfiehlt es sich, in Team Foundation eine Arbeitselement zu protokollieren. Informationen zum Ausführen dieser Aufgabe finden Sie unter Überprüfen von Code mit Abhängigkeitsdiagrammen.

Ebenenvalidierung in den Buildprozess einschließen

Integrieren Sie die Ebenenvalidierung in den standardmäßigen Buildprozess Ihrer Projektmappe, um sicherzustellen, dass zukünftige Änderungen im Code den Abhängigkeitsdiagrammen entsprechen. Jedes Mal, wenn andere Teammitglieder die Projektmappe kompilieren, werden Unterschiede zwischen den Abhängigkeiten im Code und dem Abhängigkeitsdiagramm als Buildfehler gemeldet. Weitere Informationen zum Einschließen der Ebenenvalidierung in den Buildprozess finden Sie unter Überprüfen von Code mit Abhängigkeitsdiagrammen.