You might consider using a layer diagram, which you can use to describe the logical structure of your system. You can create layer diagrams bottom up from code or from the top-down in Visual Studio 2010 Ultimate. In addition, VS 2010 lets you validate code against a layer diagram that is mapped to it.
For more information, see the product documentation:
Layer Diagrams: Reference: http://msdn.microsoft.com/en-us/library/dd409462%28VS.100%29.aspx
You can use a layer diagram to visualize the logical architecture of your system. A layer diagram
organizes the physical artifacts in your system into logical, abstract groups called layers. These
layers help you identify, describe, and differentiate the kinds of tasks that those artifacts perform.
Each layer can also contain additional layers, or sublayers, that describe smaller specific tasks that
discrete groups of artifacts perform. You can also show the intended or existing dependencies
between certain layers. These dependencies indicate which layers can use or currently use the
functionality in other layers. By organizing your system into layers that describe distinct roles and
functions, a layer diagram can help make it easier for you to understand, reuse, and maintain
your code.

How to: Validate Code Against Layer Diagrams: http://msdn.microsoft.com/en-us/library/dd409395%28VS.100%29.aspx
Validating code against a layer
diagram helps you enforce
architectural constraints on the code
as it evolves. When you perform this
task, dependencies in the code are
compared with dependencies on the
diagram.