In this post we will explain what model driven engineering and what a domain specific language is.
Model driven engineering is a software development methodology that is focused on creating and exploiting domain models. Domain models are systems of abstractions that describe selected aspects of a sphere of knowledge, influence or activity. MDE highlights and aims at abstract representations of the knowledge and activities that govern a particular application domain, rather than the computing concepts.
The primary objective of MDE is increasing productivity by maximizing compatibility between systems by reusing standardized models. It also simplifies the designing process by using models of recurring design patterns, and it promotes communication between developers and other stakeholders working on the system by standardizing the terminology used in the application domain.
Using MDE is effective if its models can be understood by users that are familiar with the domain, and if they can be used as a basis for implementing systems. The models are developed through extensive communication between product managers, designers, developers and users of the application domain. As the models approach completion, they can be used to develop software and systems.
A DSL is a computer language specialized to a particular application domain. They are the opposite of general-purpose languages such as C++ and Java. DSLs are often languages that have very specific goals in design and implementation. Examples of such languages can be visual diagramming languages, or textual languages.
The creation and use of DSLs is a key part of domain engineering. They are created for expressing problems as a standard part of the problem-solving process. Creating a new DSL, rather than reusing an existing language, can be worthwhile if the language allows a particular type of problem or solution to be expressed more clearly than an existing language would allow and the type of problem in question reappears sufficiently often.