Domain Specific Language Tools
The Domain Specific Language Tools (DSL Tools) is a toolkit for making a graphical domain specific language. In other words, it is a toolkit for making a designer for modelling something from a specific domain or area of expertise.
For example, if a company frequently makes applications that involve selling insurance products, a designer can be made that is used to model the buying process. Insurance selling can be complicated, involving many agents, brokers, and underwriters, even for a single product. The organisation of these people and companies associated with an insurance product can be modelled using the designer, and source code can be generated for an application designed to sell that particular product.
Using this approach, a significant portion of the application can be auto generated. Assuming that many insurance selling applications are made by the same development team, time will be saved in future projects.
Extending Visual Studio with the DSL Tools
The designers created by the DSL Tools run inside Visual Studio, extending Visual Studio by adding a new project item type, designer, toolbox, and DSL explorer window. The code generation performed, which is based on the model created by the designer, is also done within Visual Studio, assuming that T4 templates are used.
The runtime for the DSL Tools was made a standard part of Visual Studio for Visual Studio 2008, but is also available for Visual Studio 2005. New DSL Tools packages can be created by using either the Visual Studio 2005 or Visual Studio 2008 SDK.
Light Speed IT Solutions and the DSL Tools
The DSL Tools is used by Light Speed IT Solutions to create extra models, in addition to the entity model created using LLBLGen Pro, from which code can be generated.
For example, it is used to design custom configuration sections. The object model for the configuration settings is created using a DSL Tools designer, and then once the model is complete, the code needed for the configuration section is generated using T4 templates. The configuration section is complete, including an XSD schema for validation, factory classes when needed, and unit tests that use a sample implementation of the configuration section.