If you use Visual Studio, layer diagrams and layer diagram validation in Visual Studio 2010 Ultimate can help your project stay within the specified design. Layer diagrams describe the logical architecture or design of your system. Layer validation identifies code that conflicts with the design prescribed by the diagram, which you can create from or map to solution artifacts, such as namespaces, classes, methods, projects, and so on. You can include layer validation as part of the build process and gated check-in to catch these conflicts during those operations. VS 2010 Premium supports read-only versions of the layer diagram, but it does supports layer validation.
VS 2010 Ultimate also includes other useful tools to help you see where the code might have gone astray. You can create dependency graphs from .NET application projects and assemblies. These show you existing relationships in your code and where there might be undesirable patterns or dependencies. You can generate sequence diagrams from .NET code to see how the code implements a particular method. The current release supports only .NET code, but the team is working to provide additional support in future releases.
You can also help ensure the project meets its requirements by using UML diagrams to visualize and communicate the users' requirements and the intended design. The team is working on additional features to enhance the functionality of these diagrams in future releases. The elements on the diagrams can be linked to Team Foundation work items to help the necessary development and test work and monitor its progress.
The following topics describe this in more detail. I've posted more links on my profile for more info.
How to: Create Layer Diagrams from Artifacts: http://msdn.microsoft.com/en-us/library/dd465141%28VS.100%29.aspx
How to: Validate Code Against Layer Diagrams: http://msdn.microsoft.com/en-us/library/dd409395%28VS.100%29.aspx
How to: Generate Graph Documents from Code: http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource
How to: Find Code Using Architecture Explorer: http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx
How to: Explore Code with Sequence Diagrams: http://msdnstage.redmond.corp.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx
Using Models within the Development Process: http://msdn.microsoft.com/en-us/library/dd409423%28VS.100%29.aspx