Title :
Agile Engineering of Internal Domain-Specific Languages with Dynamic Programming Languages
Author :
Günther, Sebastian ; Haupt, Maximilian ; Splieth, Matthias
Author_Institution :
Sch. of Comput. Sci., Univ. of Magdeburg, Magdeburg, Germany
Abstract :
Domain-Specific Languages (DSL) abstract from the domain entities and operations to represent domain knowledge in the form of an executable language. While they solve many of the current software development challenges, related literature claims that DSLs usually have a flaw: The high effort required to implement and use them. However, internal DSLs are developed with less effort because they are built on top of an existing programming language and can use the whole language infrastructure consisting of interpreter, compiler, or editors. This article presents an engineering process for internal DSLs. An agile process leads from analysis to design and implementation. Expressions and language capabilities are implemented using tests and a set of patterns, which provide reusable knowledge how to properly structure and design the DSL implementation. As a case study, we show how to implement a software product line configuration DSL using Ruby and Python as host languages. In summary, the proposed process and patterns facilitate the successful planning and developing of internal DSLs using dynamic programming languages as the host.
Keywords :
high level languages; software engineering; Python; Ruby; agile engineering; agile process; compiler; domain entities; domain knowledge; dynamic programming languages; editors; executable language; internal domain-specific languages; interpreter; reusable knowledge; software development; software product line configuration DSL; Concrete; Context; DSL; Semantics; Software; Unified modeling language; domain-specific-languages;
Conference_Titel :
Software Engineering Advances (ICSEA), 2010 Fifth International Conference on
Conference_Location :
Nice
Print_ISBN :
978-1-4244-7788-3
Electronic_ISBN :
978-0-7695-4144-0
DOI :
10.1109/ICSEA.2010.32