Q:

How to document/verify consistent layering?

I have recently moved to the dark side: I am now a CUSTOMER of software development -- mainly websites. With this new role comes new concerns.  
As a programmer i know how solid an application becomes when it is properly layered, and I want to use this knowledge in my new job. I don't want business logic in my presentation layer, and certainly not presentation stuff in my data layer. Thus, I want to be able to demand from my supllier that they document the level of layering, and how neat and consistent the layering is. 
The big question is: How is the level of layering documented to me as a customer, and is that a reasonable demmand for me to have, so I don't have to look in the code (I'm not supposed to do that anymore)? 

A:

This is reasonable - as a customer you can require anything you want, and using good layering as an indication of code quality and separation of concerns is a valid requirement.
There are many tools out there that will help with such documentation - some of them will produce an image of the Directed Acyclic Graph, showing you that the lower down layers are not calling the higher up levels. Some static analysis tools will do so too.
Getting a representation of the DAG is probably what will give you the most idea regarding how layering works in the code base.
In the .NET world, NDepend is a good commercial tool that will help with visualizing the high level architecture and layering of anapplication.

