scispace - formally typeset
Open AccessJournal ArticleDOI

When and how to develop domain-specific languages

TLDR
In this article, the authors identify patterns in the decision, analysis, design, and implementation phases of DSL development and discuss domain analysis tools and language development systems that may help to speed up DSL development.
Abstract
Domain-specific languages (DSLs) are languages tailored to a specific application domain. They offer substantial gains in expressiveness and ease of use compared with general-purpose programming languages in their domain of application. DSL development is hard, requiring both domain knowledge and language development expertise. Few people have both. Not surprisingly, the decision to develop a DSL is often postponed indefinitely, if considered at all, and most DSLs never get beyond the application library stage.Although many articles have been written on the development of particular DSLs, there is very limited literature on DSL development methodologies and many questions remain regarding when and how to develop a DSL. To aid the DSL developer, we identify patterns in the decision, analysis, design, and implementation phases of DSL development. Our patterns improve and extend earlier work on DSL design patterns. We also discuss domain analysis tools and language development systems that may help to speed up DSL development. Finally, we present a number of open problems.

read more

Content maybe subject to copyright    Report

C e n t r u m v o o r W i s k u n d e e n I n f o r m a t i c a
Software ENgineering
When and how to develop domain-specific languages
M. Mernik, J. Heering, A.M. Sloane
REPORT SEN-E0517 DECEMBER 2005
SEN
Software Engineering

CWI is the National Research Institute for Mathematics and Computer Science. It is sponsored by the
Netherlands Organization for Scientific Research (NWO).
CWI is a founding member of ERCIM, the European Research Consortium for Informatics and Mathematics.
CWI's research has a theme-oriented structure and is grouped into four clusters. Listed below are the names
of the clusters and in parentheses their acronyms.
Probability, Networks and Algorithms (PNA)
Software Engineering (SEN)
Modelling, Analysis and Simulation (MAS)
Information Systems (INS)
Copyright © 2005, Stichting Centrum voor Wiskunde en Informatica
P.O. Box 94079, 1090 GB Amsterdam (NL)
Kruislaan 413, 1098 SJ Amsterdam (NL)
Telephone +31 20 592 9333
Telefax +31 20 592 4199
ISSN 1386-369X

When and how to develop domain-specific
languages
ABSTRACT
Domain-specific languages (DSLs) are languages tailored to a specific application domain.
They offer substantial gains in expressiveness and ease of use compared with general-purpose
programming languages in their domain of application. DSL development is hard, requiring both
domain knowledge and language development expertise. Few people have both. Not
surprisingly, the decision to develop a DSL is often postponed indefinitely, if considered at all,
and most DSLs never get beyond the application library stage. Although many articles have
been written on the development of particular DSLs, there is very limited literature on DSL
development methodologies and many questions remain regarding when and how to develop a
DSL. To aid the DSL developer, we identify patterns in the decision, analysis, design, and
implementation phases of DSL development. Our patterns improve and extend earlier work on
DSL design patterns. We also discuss domain analysis tools and language development
systems that may help to speed up DSL development. Finally, we state a number of open
problems.
2000 Mathematics Subject Classification: 68N15
1998 ACM Computing Classification System: D.3.2
Keywords and Phrases: domain-specific language; application language; domain analysis; language development
system
Note: Accepted for publication in ACM Computing Surveys. This is a revised and extended version of CWI report SEN-
E0309 with the same title. Many examples illustrating the various patterns were added, the section on domain analysis
was extended, the FODA and FAST approaches are discussed in more detail, and the number of references was
increased from 100 to 150.


      

 
½
 
¾
  
¿
    

   

  


       
        
        
        ! 
 "     # 

 $         
           
  
%          
          
   !       
        





    &
     "     '
          
        #   
 
 
 
   

   !
 "  #!$%   

&''()


&'*( ++)

&',()

&'- '.) 

&//)  
 
#*0$% &//)  
!$   
 
  !$   
         #01$%
&'* .'-)
!$    +    2 
    3    
'

Citations
More filters
Journal ArticleDOI

Exploration and exploitation in evolutionary algorithms: A survey

TL;DR: A fresh treatment is introduced that classifies and discusses existing work within three rational aspects: what and how EA components contribute to exploration and exploitation; when and how Exploration and exploitation are controlled; and how balance between exploration and exploited is achieved.

A Exploration and Exploitation in Evolutionary Algorithms: A Survey

TL;DR: In this paper, a good ratio between exploration and exploitation of a search space is defined as the ratio between the probability that a search algorithm is successful and the probability of being successful.
Journal ArticleDOI

DECOR: A Method for the Specification and Detection of Code and Design Smells

TL;DR: DETEX is proposed, a method that embodies and defines all the steps necessary for the specification and detection of code and design smells, and a detection technique that instantiates this method, and an empirical validation in terms of precision and recall of DETEX.
Proceedings ArticleDOI

The spoofax language workbench: rules for declarative specification of languages and IDEs

TL;DR: The architecture of Spoofax is described and idioms for high-level specifications of language semantics using rewrite rules are introduced, showing how analyses can be reused for transformations, code generation, and editor services such as error marking, reference resolving, and content completion.
Journal ArticleDOI

Limits on fundamental limits to computation

TL;DR: Fundamental limits to computation in the areas of manufacturing, energy, physical space, design and verification effort, and algorithms are reviewed, to outline what is achievable in principle and in practice.
References
More filters
Book

Design Patterns: Elements of Reusable Object-Oriented Software

TL;DR: The book is an introduction to the idea of design patterns in software engineering, and a catalog of twenty-three common patterns, which most experienced OOP designers will find out they've known about patterns all along.
Book

Component Software: Beyond Object-Oriented Programming

TL;DR: Anyone responsible for developing software strategy, evaluating new technologies, buying or building software will find Clemens Szyperski's objective and market-aware perspective of this new area invaluable.
ReportDOI

Feature-Oriented Domain Analysis (FODA) Feasibility Study

TL;DR: This report will establish methods for performing a domain analysis and describe the products of the domain analysis process to illustrate the application of domain analysis to a representative class of software systems.
Book

Generative Programming: Methods, Tools, and Applications

TL;DR: This chapter discusses Domain Engineering and Object-Oriented Analysis and Design, and main development steps in Generative Programming, as well as Static versus Dynamic Parameterization, and a Fresh Look at Polymorphism.

OWL Web Ontology Language - Reference

TL;DR: This document contains a structured informal description of the full set of {owL} language constructs and is meant to serve as a reference for {OWL} users who want to construct {OWl} ontologies.