Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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)?

share|improve this question
Is successful deployment your responsibility? If so, you better have someone in your team look at the code. – kevin cline Nov 21 '11 at 19:22
up vote 6 down vote accepted

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.

share|improve this answer

You have worked as a programmer, you probably have seen projects fail/take longer than expected and you know that you don't want that as a client.

You have every right to demand such a thing.

What I would suggest is apart from documenting the layers of the application have them run their unit/intergration tests in front of you.

How they organize their tests will tell you more about the code than just the documentation and you won't even have to see it.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.