<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |
<HTML> | |
<HEAD> | |
<meta name="copyright" content="Copyright (c) Thales Corporate Services S.A.S, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." > | |
<meta name="author" content="Benoit Langlois" > | |
<meta name="keywords" content="domain-specific language, domain specific language, dsl"/> | |
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> | |
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> | |
<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css"> | |
<title>DSL (Domain-Specific Language)</title> | |
</HEAD> | |
<BODY BGCOLOR="#ffffff"> | |
<table border="0" cellpadding="2" cellspacing="0" width="100%"> | |
<tbody> | |
<tr> | |
<td colspan="2" align="left" bgcolor="#0080c0" valign="top"> | |
<h2><font face="Arial,Helvetica"><font color="#ffffff"> | |
DSL (Domain-Specific Language) | |
</font></font></h2> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<a name="definition"><h2>Definition</h2></a> | |
<p class="Para">A DSL (Domain-Specific Language) is a specialized and problem-oriented language <a href="#[1]">[1]</a>.</p> | |
<a name="motivation"><h2>Motivation</h2></a> | |
<p class="Para">A DSL is a specialized and problem-oriented language <a href="#[1]">[1]</a>. Contrarily to a General Purpose Language (GPL) (e.g., UML, Java or C#), a DSL serves to accurately describe a domain of knowledge. The interest to combine a DSL and a transformation function is to raise the abstraction level of software. A DSL user concentrates her/his efforts on domain description while complexity, design and implementation decisions and details are hidden <a href="#[2]">[2]</a>. The result of the transformation, the solution, is a part of a software application that is integrated later in the development process. The stake with DSLs is to improve productivity and software quality <a href="#[2]">[2]</a>.</p> | |
<p align="center"> | |
<img src="./images/dslGlobalView.jpg" alt="DSL Global view"/> | |
</p> | |
<p align="center"> | |
<i>Figure 1. DSL Global view</i> | |
</p> | |
<a name="structure"><h2>Structure</h2></a> | |
<p class="Para">A DSL is a language formalized by a model. A DSL description, given by a user, is a model instance. An abstract syntax corresponds to the DSL model and is independent of any representation (e.g., textual, graphical representation). On the contrary, a concrete syntax is the abstract syntax represented in a human-usable language (e.g., textual, graphical, tabular). As a consequence, a DSL viewpoint (where DSL descriptions are located) contains for every DSL description i) at least a model that conforms to the abstract syntax of the DSL, ii) different representations of the same DSL description.</p> | |
<p align="center"> | |
<img src="./images/dslStructure.jpg" alt="DSL structure"/> | |
</p> | |
<p align="center"> | |
<i>Figure 2. DSL structure</i> | |
</p> | |
<br> | |
<dl> | |
<dt><a name="[1]">[1]</a> Czarnecki, K., and Eisenecker, U.W., <i>Generative Programming</i>, Addison-Wesley, 2000.</dt> | |
<dt><a name="[2]">[2]</a> Sánchez-Ruíz, A., Saeki, M., Langlois, B., Paiano, R., <i>Domain-Specific Software Development Terminology : Do we All Speak the Same Language?</i>, Proceeding of the 7th OOPSLA Workshop on Domain-Specific Modeling, 2007.</dt> | |
<dt><a name="[3]">[3]</a> Stahl, T., Volter, M., Bettin, J., Haase, A., Helsen, S., <i>Model-Driven Software Development</i>, Wiley, 2006.</dt> | |
</dl> | |
</body> | |
</html> |