prerequisitesdownload.microsoft.com/download/b/c/8/bc8558e1-192e-428… · web viewunderstanding...

17
Hands-On Lab Understanding Class Coupling with Visual Studio Ultimate 2013 Lab version: 12.0.30723.00 Update 3 Last updated: 9/10/2014

Upload: others

Post on 10-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Hands-On LabUnderstanding Class Coupling with Visual Studio Ultimate 2013Lab version: 12.0.30723.00 Update 3

Last updated: 9/10/2014

Page 2: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

CONTENTS

OVERVIEW................................................................................................................................................. 3

EXERCISE 1: USING DEPENDENCY GRAPHS TO VISUALIZE CLASS RELATIONSHIPS...................3

EXERCISE 2: DISCOVERING CIRCULAR REFERENCES.....................................................................13

Page 3: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Overview

Understanding and communicating the relationship between classes in a complex project can be difficult. In this lab, you'll use the DGML (Directed Graph Markup Language) diagrams in Visual Studio Ultimate 2013 to drill down into an existing code base and figure out how types are related.

Prerequisites

In order to complete this lab you will need the Visual Studio 2013 virtual machine provided by Microsoft. For more information on acquiring and using this virtual machine, please see this blog post.

It is recommended that you complete the “Code Discovery using the Architecture Tools in Visual Studio Ultimate 2013” lab before exploring this lab.

Change log

For Update 3:

Screenshot updates as necessary, other minor edits

Exercises

This hands-on lab includes the following exercises:

1. Using Dependency Graphs to Visualize Class Relationships

2. Discovering Circular References

Estimated time to complete this lab: 30 minutes.

Exercise 1: Using Dependency Graphs to Visualize Class Relationships

In this exercise, you will learn how to generate and navigate a class dependency graph.

1. Log in as Julia (VSALM\Julia). All user passwords are P2ssw0rd.

2. Launch Visual Studio 2013 from the taskbar and open Team Explorer.

Page 4: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

3. Select the Connect to Team Projects button.

Figure 1Connecting to a different team project

4. In Team Explorer – Connect, double-click on the Tailspin Toys project.

Figure 2Loading the Tailspin Toys project

5. In Team Explorer – Home, double-click on the third TailspinToys solution (associated with the Main branch).

Figure 3Loading Tailspin Toys solution

6. Rebuild the solution (Build | Rebuild Solution from the main menu). This step may take a few minutes to complete.

7. Create a new dependency graph (Architecture | Generate Dependency Graph | For Solution). The dependency graph is stored in a Directed Graph Markup Language format (hereafter referred to as DGML), which allows you to work with it using Visual Studio 2013 as well as other standard tools.

Page 5: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Note: Generating the dependency graph for all projects in the solution may take a minute to complete. When you generate a dependency graph for the first time, a code index is created for all the dependencies that are found, which helps improve the performance of subsequent operations.

Figure 4Dependency graph for entire solution

8. Select and expand the Tailspin.Model.dll assembly node to reveal the contained namespaces.

Figure 5Expanding a graph node

9. Select and expand the Tailspin.Model namespace node.

Page 6: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Figure 6Expanding a graph node

Note: Once you expand the Tailspin.Model namespace node, you will see a bunch of classes that are likely too small to read without zooming in.

10. Select the Quick Clusters Layout to view all classes and their relationships at a glance.

Figure 7Quick Clusters Layout option

Page 7: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Figure 8Quick Clusters view of generated class dependency graph

Note: The generated dependency graph views that you see may be different from the screenshots shown in this lab manual. You may need to perform additional zooming, scrolling, and visually searching for objects specified in the lab steps.

11. The Quick Clusters layout view of this class dependency graph only gives us an idea of the number of classes in all TailspinToys projects and their degree of dependency between each other. This is of limited usefulness to us, so let’s go ahead and find a specific node by searching for the Product class. There are two options that you can use to achieve this task, represented by the next few steps.

12. The first option is to manually zoom in towards the center of the graph by using the mouse scroll wheel until you can clearly see the Product class.

Note: Zooming can also be done using the Zoom drop down.

Page 8: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Figure 9View controls

13. The second option is to perform a search of the graph. Press Ctrl+F to show the search box, and then type “Product”. Press the F3 key to cycle through search results until the Product class is highlighted.

Note: By default, search includes items in collapsed groups. However, if an item is in a collapsed group that was never expanded, the item might not be found. This is why we expanded a couple of groups in the previous steps. This would also be important to do before sending a DGML file to another Visual Studio user.

Figure 10

Page 9: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Searching for the Product class

Note: Gray lines of varying thicknesses represent the magnitude of relationship interdependencies between nodes, with thicker lines equating to more relationships. The darker gray lines represent the direct relationships between the Product class and other classes and groups on the graph.

14. Selecting the Product class node from the graph helps highlight its direct relationship to other classes, but it is still difficult to distinguish between incoming and outgoing dependency relationships. To help visually make this distinction, change the graph layout to Top to Bottom Layout.

Figure 11Selecting Top to Bottom layout

Figure 12Result of Top to Bottom layout

Page 10: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

15. The top to bottom layout shows incoming dependency relationship lines on the top and outgoing lines on the bottom. This is an improvement, but there is still some visual noise from dependency relationships to other groups, i.e. the relationship that the Product class has to the Tailspin.Test.Model assembly. Select the Hide All Cross-Group Links option from the Layout | Advanced menu.

Figure 13Hiding all cross-group links

Page 11: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Figure 14Graph view without cross-group links shown

16. Return to the Quick Clusters layout.

Figure 15Graph view using Quick Clusters layout, also without cross-group links

17. Locate and select the relationship line that connects the Product and OrderLine class nodes.

Figure 16Relationship information between classes

Page 12: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

18. To view the contributing links for the relationship, right-click on the relationship line and select Advanced | Show Contributing Links on New Code Map.

Figure 17Showing contributing links

19. The new graph shows all of the OrderLine class members that contribute to the overall incoming relationship to the Product class.

Page 13: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Figure 18Detailed view of relationship between OrderLine and Product classes

Exercise 2: Discovering Circular References

In this exercise, you will learn how to use the circular reference analyzer in order to discover classes that are strongly coupled to each other.

1. Return to the original class dependencies graph (AssemblyDependencies1.dgml) and make sure that the Product class node is visible.

Page 14: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Figure 19Dependency graph with Product class node selected

2. Select the Legend button.

Figure 20Legend button location

3. Click the + button at the top of the Legend box to view the available options to add to the diagram.

Figure 21Location of + button on Legend

4. Select Analyzer | Circular References to add the analyzer to the dependency graph. Dependency graph analyzers will continue to run after you apply them, even if you change the graph.

Page 15: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult

Figure 22Adding the Circular References analyzer

5. If the Product node is selected, go ahead and click on a blank spot within the graph. Note that there are red outlines around types that are strongly coupled. At this point, you could continue to investigate the highlighted relationships in an effort to simplify them using the tools explored in the previous exercise.

Figure 23Dependency diagram showing circular references between classes

To give feedback please write to [email protected]

Copyright © 2023 by Microsoft Corporation. All rights reserved.

Page 16: Prerequisitesdownload.microsoft.com/download/B/C/8/BC8558E1-192E-428… · Web viewUnderstanding and communicating the relationship between classes in a complex project can be difficult