Sdílet prostřednictvím


How to: Create Layer Diagrams from Artifacts

In Visual Studio Ultimate, use layer diagrams to visualize the high-level architecture of your system and to make sure that the code stays consistent with the design. To perform this task, organize and associate the artifacts from a Visual Studio solution into logical, abstract groups, or layers. These layers describe major tasks that the artifacts perform or the major components of your system.

Arrows between layers represent dependencies, which indicate whether layers can use the functionality in other layers. To enforce architectural constraints on the code, describe the intended dependencies on the diagram and then validate the code against the diagram. By using layer diagrams in this way, you can make the code easier to understand, update, reuse, and maintain.

Elements on layer diagrams

For more information about layer diagrams, see the following topics:

In This Topic

  • Create a layer diagram.

  • Create layers from existing artifacts.

  • Manage links between layers and artifacts.

  • Reverse-engineer existing dependencies.

  • Update the layer diagram to show the intended design.

  • Change the appearance of elements on the diagram.

Create a Layer Diagram

A layer diagram must be created inside a modeling project. You can add a new layer diagram to an existing modeling project, or you can create a new modeling in your solution for the new layer diagram.

To add a new layer diagram to a modeling project

  1. On the Architecture menu, click New Diagram.

  2. Under Templates, click Layer Diagram.

  3. Name the diagram

  4. In Add to Modeling Project, browse to and select an existing modeling project in your solution.

    -or-

    Click Create a new modeling project to add a new modeling project to the solution.

    Poznámka

    The layer diagram must exist inside a modeling project. However, you can link it to artifacts that exist anywhere in the solution.

You can also copy an existing layer diagram within the same modeling project.

Poznámka

Do not add, drag, or copy an existing layer diagram from a modeling project to another modeling project or to another location in the solution. A layer diagram that is copied in this way will have the same references as the original diagram, even if you modify the diagram. This will prevent layer validation from working correctly and might cause other issues, such as missing elements or other errors when trying to open the diagram.

To copy a layer diagram, follow these steps:

To copy an existing layer diagram

  1. Add a new layer diagram to the modeling project.

  2. Copy the elements from the source layer diagram to the new layer diagram.

Create Layers from Artifacts

You can create layers from artifacts in a Visual Studio solution, such as projects, code files, namespaces, classes, and methods. This automatically creates links between those layers and the artifacts, which are included in the layer validation process. You can also link layers to certain kinds of artifacts that do not support layer validation. For example, you can link layers to files such as Word documents or PowerPoint presentations. This is useful for associating a layer to specifications or plans. To see whether a linked artifact supports validation, open Layer Explorer and examine the Supports Validation property of the artifact. For more information, see Managing Links to Artifacts.

Each layer appears as a rectangle on the diagram and can contain nested layers that describe more detailed tasks. For more information about layering patterns, visit the Patterns & Practices Web site.

The number on a layer indicates the number of artifacts that are linked to the layer. However, when reading this number, remember the following:

  • If a layer links to an artifact that contains other artifacts, but the layer does not link directly to the other artifacts, then the number includes only the linked artifact. However, the other artifacts are included for analysis during layer validation.

    For example, if a layer is linked to a single namespace, then the number of linked artifacts is 1, even if the namespace contains classes. If the layer also has links to each class in the namespace, then the number will include the linked classes.

  • If a layer contains other layers that are linked to artifacts, then the container layer is also linked to those artifacts, even though the number on the container layer does not include those artifacts.

When creating a layer diagram, you might create dependency graphs to help you explore and understand the code. These graphs can help you discover clusters, patterns, natural layers, and dependencies in the code. This helps make it easier for you to assign artifacts to layers. You might also use Architecture Explorer to explore namespaces and classes, which often correspond well to the existing layers. You can then use layer diagrams to help you update the code.

For more information, see the following topics:

Use the following tasks to create layers:

To

Follow these steps

Create a layer for a single artifact

  1. Drag the artifact onto the layer diagram from any of the following sources:

  2. Rename the layer to reflect the responsibilities of the associated code or artifacts.

Create a single layer for all selected artifacts

Drag all of the artifacts to the layer diagram at the same time.

A layer appears on the diagram and is linked to all of the artifacts.

Create a layer for each selected artifact

Press and hold the SHIFT key while you drag all of the artifacts to the layer diagram at the same time.

NoteNote
If you use the SHIFT key to select a range of items, release the key after you select the artifacts. Press and hold it again when you drag the artifacts to the diagram.

A layer for each artifact appears on the diagram and is linked to each artifact.

Add an artifact to a layer

Drag the artifact to the layer.

Create a new unlinked layer

In the Toolbox, expand the Layer Diagram section, and then drag a Layer to the layer diagram.

To add multiple layers, double-click the tool. When you are finished, click the Pointer tool or press the ESC key.

- or -

Right-click the layer diagram, point to Add, and then click Layer.

Create nested layers

Drag an existing layer onto another layer.

- or -

Right-click a layer, point to Add, and then click Layer.

Create a new layer that contains two or more existing layers

Select the layers, right-click a selected layer, and then click Group.

Change the color of a layer

Set its Color property to the color that you want.

Specify that artifacts associated with a layer must not belong to the specified namespaces

Type the namespaces in the layer's Forbidden Namespaces property. Use a semicolon (;) to separate the namespaces.

Specify that artifacts associated with a layer cannot depend on the specified namespaces

Type the namespaces in the layer's Forbidden Namespace Dependencies property. Use a semicolon (;) to separate the namespaces.

Specify that artifacts associated with a layer must belong to one of the specified namespaces

Type the namespace in the layer's Required Namespaces property. Use a semicolon (;) to separate the namespaces.

  1. On the layer diagram, right-click a layer, and then click View Links.

    Layer Explorer shows the artifact links for the selected layer.

  2. Use the following tasks to manage these links:

To

In Layer Explorer

Delete the link between the layer and an artifact

Right-click the artifact link, and then click Delete.

Move the link from one layer to another

Drag the artifact link to an existing layer on the diagram.

- or -

  1. Right-click the artifact link, and then click Cut.

  2. On the layer diagram, right-click the layer, and then click Paste.

Copy the link from one layer to another

  1. Right-click the artifact link, and then click Copy.

  2. On the layer diagram, right-click the layer, and then click Paste.

Create a new layer from an existing artifact link

Drag the artifact link to a blank area on the diagram.

Verify that a linked artifact supports validation against the layer diagram.

Look at the Supports Validation column for the artifact link.

Reverse-Engineer Existing Dependencies

A dependency exists wherever an artifact that is associated with one layer has a reference to an artifact that is associated with another layer. For example, a class in one layer declares a variable that has a class in another layer. You can reverse-engineer existing dependencies for artifacts that are linked to layers on the diagram.

Poznámka

Dependencies cannot be reverse-engineered for certain kinds of artifacts. For example, no dependencies will be reverse-engineered from or to a layer that is linked to a text file. To see which artifacts have dependencies that you can reverse-engineer, right-click one or multiple layers, and then click View Links. In Layer Explorer, examine the Supports Validation column. Dependencies will not be reverse-engineered for artifacts for which this column shows False.

To reverse-engineer existing dependencies between layers

  • Select one or multiple layers, right-click a selected layer, and then click Generate Dependencies.

Typically, you will see some dependencies that should not exist. You can edit these dependencies to align them with the intended design.

Update the Diagram to Show the Intended Design

To show the changes that you plan to make or the architecture that you want, update the layer diagram.

To

Perform these steps

Delete a dependency that should not exist

Click the dependency, and then press DELETE.

Change or restrict the direction of a dependency

Set its Direction property.

Create new dependencies

Use the Dependency and Bidirectional Dependency tools.

To draw multiple dependencies, double-click the tool. When you are finished, click the Pointer tool or press the ESC key.

Specify that artifacts associated with a layer cannot depend on the specified namespaces

Type the namespaces in the layer's Forbidden Namespace Dependencies property. Use a semicolon (;) to separate the namespaces.

Specify that artifacts associated with a layer must not belong to the specified namespaces

Type the namespaces in the layer's Forbidden Namespaces property. Use a semicolon (;) to separate the namespaces.

Specify that artifacts associated with a layer must belong to one of the specified namespaces

Type the namespace in the layer's Required Namespaces property. Use a semicolon (;) to separate the namespaces.

Change the Appearance of Elements on the Diagram

To help you identify layers and dependencies or discuss them with team members, edit the appearance and layout of the diagram in the following ways:

  • Change the sizes, shapes, and positions of layers.

  • Change the colors of layers and dependencies.

    1. Select the layers or dependencies.

    2. Right-click the selected layers or dependencies, and then click Properties.

    3. In the Properties window, change the Color property.

See Also

Concepts

Visualizing Existing Code