Layer Diagrams: Guidelines

 

Die neueste Dokumentation zu Visual Studio 2017 finden Sie unter Dokumentation zu Visual Studio 2017.

Beschreiben Sie die allgemeine Architektur Ihrer App, indem Sie Ebenendiagramme in Visual Studio erstellen. Stellen Sie sicher, dass Code und Entwurf konsistent bleiben, indem Sie den Code mit einem Ebenendiagramm validieren. Sie können auch eine Ebenenvalidierung im Buildprozess einschließen. Weitere Informationen finden Sie unter Visual Studio Ultimate 2012: Verwenden von Ebenendiagrammen zum Entwerfen und Überprüfen der Architektur (Channel 9-Video).

Welche Versionen von Visual Studio dieses Feature unterstützen, finden Sie unter Versionsunterstützung für Architektur- und Modellierungstools.

In einem Ebenendiagramm werden wie in einem herkömmlichen Architekturdiagramm die wichtigsten Komponenten oder Funktionseinheiten des Entwurfs sowie ihre Abhängigkeiten identifiziert. 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 in zukünftigen Änderungen mit der Architektur des Systems übereinstimmt. Siehe Layer Diagrams: Reference.

Die folgenden Schritte bieten einen Überblick über die Verwendung von Ebenendiagrammen 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.

System_CAPS_ICON_note.jpg 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 Ebenendiagramm für die gesamte Anwendung oder für eine Ebene in der Anwendung.

  2. Definieren Sie Ebenen, um die wichtigsten Funktionsbereiche oder Komponenten der Anwendung darzustellen. Benennen Sie diese Ebenen nach ihrer Funktion, z. B. "Präsentation" oder "Dienste". In einer Visual Studio-Projektmappe können Sie jede Ebene einer Auflistung 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, dem der Code entsprechen soll.

  5. Entwerfen Sie neue Bereiche der Anwendung, indem Sie Ebenen erstellen, um die wichtigsten Architekturblöcke oder -komponenten darzustellen, und Abhängigkeiten definieren, um zu zeigen, wie jede Ebene die anderen Ebenen verwendet.

  6. Bearbeiten Sie das Layout und die Darstellung des Diagramms, damit Sie es mit Kollegen erörtern können.

  7. Überprüfen Sie den Code anhand des Ebenendiagramms, um die Konflikte zwischen dem Code und der erforderlichen Architektur aufzuzeigen.

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

  9. Schließen Sie Ebenenvalidierung in den Buildvorgang ein, um sicherzustellen, dass der Code weiterhin dem Entwurf entspricht.

Ein Ebenendiagramm muss in einem Modellierungsprojekt erstellt werden. Sie können einem vorhandenen Modellierungsprojekt ein neues Ebenendiagramm hinzufügen, ein Modellierungsprojekt für das neue Ebenendiagramm erstellen oder ein vorhandenes Ebenendiagramm innerhalb des gleichen Modellierungsprojekts kopieren.

System_CAPS_ICON_important.jpg Wichtig

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

Siehe Create layer diagrams from your code.

Ebenen stellen logische Gruppen von Artefakten dar, z. B. Projekte, Codedateien, Namespaces, Klassen und Methoden. Sie können Ebenen aus Artefakten aus Visual C# .NET- und Visual Basic .NET-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. Weitere Informationen zu Ebenenmuster finden Sie auf der Patterns und Practices-Website unter http://go.microsoft.com/fwlink/?LinkId=145794.

System_CAPS_ICON_tip.jpg Tipp

Bestimmte Arten von Artefakten können mit Ebenen verknüpft, aber nicht anhand des Ebenendiagramms ü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 Ebenendiagramme ziehen. Sie können dann Ebenendiagramme verwenden, um den Code zu aktualisieren und ihn mit dem Entwurf konsistent zu halten.

Thema

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.

System_CAPS_ICON_note.jpg 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 eine Rückentwicklung 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 keine Rückentwicklung von Abhängigkeiten 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.

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

AnAuszuführende Schritte
Löschen einer unerwünschten AbhängigkeitKlicken Sie auf die Abhängigkeit, und drücken Sie ENTF.
Ändern oder Einschränken der Richtung einer AbhängigkeitLegen Sie die Eigenschaft Richtung fest.
Erstellen von neuen AbhängigkeitenVerwenden 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ürfenGeben Sie die Namespaces in die Eigenschaft für 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ürfenGeben Sie die Namespaces in die Eigenschaft für 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üssenGeben Sie den Namespace in die Eigenschaft für 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. Der Entwurf von gut strukturiertem Code lässt sich leicht in einem Ebenendiagramm abstrakt darstellen.

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.

Falls dies nicht der Fall ist, sind Änderungen des Codes während seiner Lebensdauer schwieriger, und er eignet sich weniger für die Validierung mithilfe von Ebenendiagrammen.

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 identifizierbare architektonische Muster in den Ebenendiagrammen an, sofern möglich. Beispielsweise kann ein Ebenendiagramm, das eine Desktopanwendung beschreibt, die Ebenen Präsentation, Domänenlogik und Datenspeicher enthalten. Ein Ebenendiagramm für eine einzelne Funktion in einer Anwendung kann beispielsweise die Ebenen Modell, Ansicht und Controller enthalten. Weitere Informationen zu solchen Mustern finden Sie unter Patterns & Practices: Application Architecture (auf Englisch).

    Wenn Sie häufig ähnliche Muster entwerfen, erstellen Sie ein benutzerdefiniertes Tool. Siehe Define a custom modeling toolbox item.

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

  • Sie müssen die meisten Klassen und andere Artefakte nicht mit Ebenen verknüpfen, da sie zu größeren Artefakten z. B. Namespaces, gehören, die Sie bereits mit Ebenen verknüpft haben.

  • Erstellen Sie für eine neue Funktion ein neues Diagramm. In der Regel sind ein oder mehrere Ebenendiagramme 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.

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 Eigenschaftenfenster die Eigenschaft Farbe.

Wenn Sie das Diagramm bearbeitet haben, können Sie es jederzeit manuell oder automatisch beim Ausführen eines lokalen Builds oder von Team Foundation Build anhand des Codes überprüfen.

Thema

Normalerweise treten Fehler auf, wenn Sie den Code zum ersten Mal anhand eines aktualisierten Ebenendiagramms ü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 Validate code with layer diagrams.

System_CAPS_ICON_note.jpg Hinweis

Beim Entwickeln oder Umgestalten des Codes müssen Sie möglicherweise neue Artefakte mit dem Ebenendiagramm 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 Arbeitsaufgabe zu protokollieren. Informationen zur Ausführung dieser Aufgabe finden Sie unter Validate code with layer diagrams.

Schließen Sie Ebenenvalidierung in den standardmäßigen Buildprozess der Projektmappe ein, um sicherzustellen, dass zukünftige Änderungen im Code den Ebenendiagrammen entsprechen. Jedes Mal, wenn andere Teammitglieder die Projektmappe erstellen, werden Unterschiede zwischen den Abhängigkeiten im Code und dem Ebenendiagramm als Buildfehler gemeldet. Weitere Informationen zum Einschließen der Ebenenvalidierung im Buildprozess finden Sie unter Validate code with layer diagrams.

Layer Diagrams: Reference
Create layer diagrams from your code

Anzeigen: