Question: [diagram http://img526.imageshack.us/img526/2506/picture1lx.jpg](http://img526.imageshack.us/img526/2506/picture1lx.jpg)

The question is pretty self-explanatory. Is there a technical name for that diagram? Is it considered UML? Second of all, what sort of program might have been used to generate it? I'd like to make one of my own. I'm running Windows 7, but suggestions for programs on other operating systems are welcome too.

Answer: 
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.
> 
> 
> 

[![Layer diagram](https://i.stack.imgur.com/RrBJP.png)](https://i.stack.imgur.com/RrBJP.png)

**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.
> 
> 
>
It's not UML as Nicolas suggests.

The closest term I know is [Layered Architecture](http://en.wikipedia.org/wiki/Abstraction_(computer_science)#Layered_architecture) diagram.

As it seems like there is no agreed rules/convention on this type of diagram (as compared to UML,) any graphics tool would do e.g. Visio, [Creately](http://creately.com/) (online one.)