There’s two ways that you can approach this in Visual Studio 2010 Ultimate:
– At the physical level
You can visualize your code from the top-down by generating dependency graphs at the overall assembly, namespace, or class level, and then drill down to more granular levels.
If you have a very large solution, this can be overwhelming, so you can also use Architecture Explorer to start from the bottom-up. You can use dependency graphs or Architecture Explorer to create layer diagrams and maintain control over the code’s architecture by running layer validation (see below).
– At the logical level
You can create layer diagrams from code and other artificts to visualize what the architecture should look like and then reverse-engineer the existing dependencies. You can save that diagram as a baseline and then edit the diagram to show where the dependencies should be.
You can also run validation against layer diagrams to get a list of conflicts and create linked work items so that you can address those conflicts incrementally. By running regular validation reguarly, you can maintain control over changes in the code that might conflict with the intended architecture.
For more information about how to perform these tasks, see these Visual Studio 2010 topics. If you also install the Visualization & Modeling Feature Pack, which is available for MSDN subscribers, with Visual Studio 2010 Ultimate, you can create custom layer validation rules and perform the same tasks for C and C++ code.
PS: Please let me know how you like this post by clicking a star under RATE THIS in the top right corner or post comment below. If you don’t like this post, please tell me what you want to see. Don’t worry, you won’t hurt my feelings. 🙂
I initially created this post to answer a question on the MSDN Modeling and Tools forum and thought other folks might find this useful too. Thanks!