To quote Martin Danner, domain specific language is a “…small, highly-focused language for solving a clearly identifiable problem.   It’s all about abstraction.”

 

One of the main goals of a DSL is to automate mundane parts of the development process.  DSLs can be divided into two categories -- industry specific (vertical) and technology specific (horizontal).

 

For example, user interface designer surface that generates code-behind representing the user interface is an example of a technology specific DSL.  in VS-Team System Architect edition the ‘distributed system’ project is an example of a DSL in the domain of service oriented architecture.  Another example is UML (unified modeling language) – a language heavily used for modeling object oriented applications. 

 

Seeing the pattern, you can conclude that DSL is part of software factories initiatives; and, in fact, that is correct.

 

Microsoft has a toolkit for creating your own design tools to solve problems in your domain – be it models that describe business processes, information flow, industry specific objects, etc.  Check it out at http://msdn.microsoft.com/vstudio/DSLTools/.