A domain-specific language (DSL), quite simply, is a specific language targeted at a specific problem space rather than a general-purpose language used to solve everything.
Consider the following examples of DSLs in use today by Microsoft Tools: The Class Designer available in Visual Studio 2005 enables developers to visualize the classes within their projects and understand relationships between them; this designer is based on a CLR Type DSL that describes classes, methods, properties, and so on. The Class Designer is covered in Chapter 5.
The Visual Designers available in Visual Studio 2005 enable software architects and infrastructure architects to model their view of a software architecture through the use of two different designers that are based on the System Definition Model (SDM), which is part of the Dynamic Systems Initiative (DSI).
Another potential example could be the XML Schema editor. You could build a DSL based on the XML Schema standard and then render a graphical design surface to allow easy modification, although the current XML Schema designer is not built using the DSL Tools release.
Figure 6-1 provides an example of a Visual Studio 2005 SDM Designer in action, showing the components of an application and how they interact. You can then generate Visual Studio 2005 projects and any appropriate boilerplate code from this domain model.