Domain-specific languages

Domain-Specific Languages are used in software engineering in order to enhance quality, flexibility, and timely delivery of software systems, by taking advantage of specific properties of a particular application domain. This survey covers terminology, risks and benefits, examples, design methodologies, and implementation techniques of domain-specific languages as used for the construction and maintenance of software systems. Moreover, it covers an annotated selection of 75 key publications in the area of domain-specific languages.

[1]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[2]  Benjamin C. Pierce,et al.  Xduce: a typed xml processing language , 1997 .

[3]  Gregory D. Hager,et al.  Monadic robotics , 1999, DSL '99.

[4]  Wolfgang Thomas,et al.  Automata on Infinite Objects , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[5]  Martín Abadi,et al.  Extensible Syntax with Lexical Scoping , 1994 .

[6]  Uwe Kastens,et al.  Language Design and Implementation by Selection , 1997 .

[7]  not Cwi,et al.  XHTML™ 1.0 The Extensible HyperText Markup Language , 2002 .

[8]  C. M. Sperberg-McQueen,et al.  Extensible Markup Language (XML) , 1997, World Wide Web J..

[9]  Paul Hudak,et al.  Modular domain specific languages and tools , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[10]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[11]  Guy L. Steele,et al.  Building interpreters by composing monads , 1994, POPL '94.

[12]  Stephen A. Schuman,et al.  Proceedings of the international symposium on Extensible languages , 1971 .

[13]  Alan O. Freier,et al.  The SSL Protocol Version 3.0 , 1996 .

[14]  Calvin Lin,et al.  An annotation language for optimizing software libraries , 1999, DSL '99.

[15]  Todd L. Veldhuizen,et al.  Using C++ template metaprograms , 1996 .

[16]  Yannis Smaragdakis,et al.  DiSTiL: A Transformation Library for Data Structures , 1997, DSL.

[17]  Dan Suciu,et al.  XMill: an efficient compressor for XML data , 2000, SIGMOD '00.

[18]  Donald Roberts Evolve Frameworks into Domain-Specific Languages , 1997 .

[19]  I. G. BONNER CLAPPISON Editor , 1960, The Electric Power Engineering Handbook - Five Volume Set.

[20]  Dawson R. Engler,et al.  Interface Compilation: Steps Toward Compiling Program Interfaces as Languages , 1999, IEEE Trans. Software Eng..

[21]  Dan Suciu,et al.  Declarative specification of data-intensive Web sites , 1999, DSL '99.

[22]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.

[23]  Benjamin C. Pierce,et al.  Regular expression pattern matching for XML , 2003, POPL '01.

[24]  Jonathan Robie,et al.  Document Object Model (DOM) Level 2 Specification , 1998 .

[25]  Shishir Gundavaram,et al.  CGI Programming on the World Wide Web , 1996 .

[26]  Valdis Berzins,et al.  The Realizable Benefits of a Language Prototyping Language , 1988, IEEE Trans. Software Eng..

[27]  Robert Glück,et al.  Generative Programming and Active Libraries , 1998, Generic Programming.

[28]  Jean E. Sammet,et al.  Some Approaches to, and Illustrations of, Programming Language History , 1991, Annals of the History of Computing.

[29]  Douglas C. Schmidt,et al.  Object-oriented application frameworks , 1997, CACM.

[30]  Paul B. Thistlewaite,et al.  Active FORMs , 1996, Comput. Networks.

[31]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[32]  Matthias Felleisen,et al.  On the Expressive Power of Programming Languages , 1990, European Symposium on Programming.

[33]  Jon Louis Bentley,et al.  Programming pearls: little languages , 1986, CACM.

[34]  Robert Hieb,et al.  Syntactic abstraction in scheme , 1992, LISP Symb. Comput..

[35]  Paul Hudak,et al.  Building domain-specific embedded languages , 1996, CSUR.

[36]  Thomas W. Reps,et al.  Generating Language-Based Environments , 1982 .

[37]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[38]  Kenneth C. Cox Lunchbot: A Tale of Two Ways to Program Web Services , 1996 .

[39]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[40]  Peter Thiemann,et al.  Under Consideration for Publication in J. Functional Programming a Typed Representation for Html and Xml Documents in Haskell , 2022 .

[41]  William S. Brown Applied template metaprogramming in siunits: the library of unit-based computation , 2001 .

[42]  Ellis Horowitz,et al.  A survey of Application Generators , 1985, IEEE Software.

[43]  Conal Elliott,et al.  An Embedded Modeling Language Approach to Interactive 3D and Multimedia Animation , 1999, IEEE Trans. Software Eng..

[44]  Emir Pasalic,et al.  DSL implementation using staging and monads , 1999, DSL '99.

[45]  Jan A. Bergstra,et al.  The Discrete Time TOOLBUS - A Software Coordination Architecture , 1998, Science of Computer Programming.

[46]  John Schenken,et al.  ASP.NET Programmer's Reference , 2001 .

[47]  David R. Barstow Domain-Specific Automatic Programming , 1985, IEEE Transactions on Software Engineering.

[48]  Robert S. Gray,et al.  Agent Tcl: A transportable agent system , 1995, CIKM Information Agents Workshop.

[49]  Fred Douglis,et al.  HPP: HTML Macro-Preprocessing to Support Dynamic Document Caching , 1997, USENIX Symposium on Internet Technologies and Systems.

[50]  Arie van Deursen,et al.  Domain-Specific Languages versus Object-Oriented Frameworks: A Financial Engineering Case Study , 1997 .

[51]  John K. Ousterhout,et al.  Scripting: Higher-Level Programming for the 21st Century , 1998, Computer.

[52]  Paul Hudak,et al.  Modular monadic semantics and compilation , 1998 .

[53]  Jean E. Sammet Application of extensible languages to specialized application languages , 1971 .

[54]  Alec Wolman Characterizing Web Workloads to Improve Performance , 1999 .

[55]  Paul Hudak,et al.  Lambda in Motion: Controlling Robots with Haskell , 1999, PADL.

[56]  Dennis Gannon,et al.  Active Libraries: Rethinking the roles of compilers and libraries , 1998, ArXiv.

[57]  David C. Gross,et al.  Managing Domain-Specific, Product-Line Development , 1996, IEEE Softw..

[58]  Claus Brabrand,et al.  The bigwig Project , 2000 .

[59]  James Withey Investment Analysis of Software Assets for Product Lines. , 1996 .

[60]  Matthias Felleisen,et al.  Hygienic macro expansion , 1986, LFP '86.

[61]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[62]  Anders Sandholm,et al.  Distributed Safety Controllers for Web Services , 1997, FASE.

[63]  Uday S. Reddy,et al.  Imperative functional programming , 1996, CSUR.

[64]  Philip Wadler,et al.  Comprehending monads , 1990, Mathematical Structures in Computer Science.

[65]  Jonathan Bachrach,et al.  The Java Syntactic Extender , 2001, OOPSLA.

[66]  Daniel Weise,et al.  Programmable syntax macros , 1993, PLDI '93.

[67]  Anders Sandholm,et al.  A Case Study on Using Automata in Control Synthesis , 2000, FASE.

[68]  Leon Atkinson,et al.  Core PHP Programming , 1999 .

[69]  Stewart I. Schlesinger,et al.  Simple automatic coding systems , 1958, CACM.

[70]  Calton Pu,et al.  Microlanguages for Operating System Specialization , 1997 .

[71]  Nils Klarlund,et al.  Yakyak: parsing with logical side constraints , 1999, Developments in Language Theory.

[72]  Andrew Shalit,et al.  The Dylan Reference Manual , 1996 .

[73]  Arie van Deursen,et al.  Industrial Applications of ASF+SDF , 1996, AMAST.

[74]  Andreas Girgensohn,et al.  Seamless Integration of Interactive Forms into the Web , 1997, Comput. Networks.

[75]  David A. Espinosa Semantic Lego , 1995 .

[76]  Owen R. Mock,et al.  The problem of programming communication with changing machines: a proposed solution , 1958, CACM.

[77]  Magne Haveraaen,et al.  An algebraic programming style for numerical software and its optimization , 2000, Sci. Program..

[78]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[79]  Thomas Ball,et al.  Mawl: A Domain-Specific Language for Form-Based Services , 1999, IEEE Trans. Software Eng..

[80]  E. Schmidt,et al.  Lex—a lexical analyzer generator , 1990 .

[81]  Nenad Medvidovic,et al.  Domains of Concern in Software Architectures and Architecture Description Languages , 1997, DSL.

[82]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[83]  Paul Hudak,et al.  Monad transformers and modular interpreters , 1995, POPL '95.

[84]  Eugenio Moggi,et al.  Computational lambda-calculus and monads , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[85]  Mark A. Simos,et al.  Organization domain modeling (ODM): formalizing the core domain modeling life cycle , 1995, SSR '95.

[86]  Wilson C. Hsieh,et al.  Maya: multiple-dispatch syntax extension in Java , 2002, PLDI '02.

[87]  Keith D. Cooper,et al.  Combining analyses, combining optimizations , 1995, TOPL.

[88]  Michael Benedikt,et al.  Experience with a Domain Specific Language for Form-based Services , 1997, DSL.

[89]  Claus Brabrand,et al.  Static validation of dynamically generated HTML , 2001, PASTE '01.

[90]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

[91]  G. Arango Domain analysis: from art form to engineering discipline , 1989, IWSSD '89.

[92]  Craig E. Wills,et al.  Studying the impact of more complete server information on Web caching , 2001, Comput. Commun..

[93]  William Maddox Semantically-Sensitive Macroprocessing , 1989 .

[94]  Roger F. Crew ASTLOG: A Language for Examining Abstract Syntax Trees , 1997, DSL.

[95]  G. Barish,et al.  World Wide Web caching: trends and techniques , 2000, IEEE Commun. Mag..

[96]  Arie van Deursen,et al.  Domain-specific languages: an annotated bibliography , 2000, SIGP.

[97]  Keshav Pingali,et al.  A case for source-level transformations in MATLAB , 1999, DSL '99.

[98]  R. Kent Dybvig,et al.  Extending the scope of syntactic abstraction , 1999, POPL '99.

[99]  TraczWill,et al.  Software development using domain-specific software architectures , 1995 .

[100]  Erik Meijer,et al.  XMlambda - A Functional Language for Constructing and Manipulating XML Documents , 2000 .

[101]  R. Kent Dybvig,et al.  Visualizing partial evaluation , 1998, CSUR.

[102]  Richard Sharp,et al.  Abstracting application-level web security , 2002, WWW.

[103]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[104]  Klaus Schmid,et al.  A systematic approach to derive the scope of software product lines , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[105]  Rob Brooks-Bilson,et al.  Programming ColdFusion , 2001 .

[106]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[107]  Arvind Malhotra,et al.  Xml schema part 2: datatypes , 1999 .

[108]  Tao Yang,et al.  Exploiting Result Equivalence in Caching Dynamic Web Content , 1999, USENIX Symposium on Internet Technologies and Systems.

[109]  Michael R. Levy Web programming in guide , 1998 .

[110]  Valérie Issarny,et al.  Caching Strategies for Data-Intensive Web Sites , 2000, VLDB.

[111]  Tim Sheard,et al.  A software engineering experiment in software component generation , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[112]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[113]  Tao Yang,et al.  Class-based cache management for dynamic Web content , 2001, Proceedings IEEE INFOCOM 2001. Conference on Computer Communications. Twentieth Annual Joint Conference of the IEEE Computer and Communications Society (Cat. No.01CH37213).

[114]  Claus Brabrand,et al.  A Runtime System for Interactive Web Services , 1999, Comput. Networks.

[115]  Haruo Hosoya Validation and boolean operations for attribute-element constraints , 2002 .

[116]  Wolfgang Pree,et al.  Object-Oriented Application Frameworks , 1995 .

[117]  W. R. Campbell A Compiler Definition Facility Based on the Syntactic Macro , 1978, Comput. J..

[118]  Jakob Nielsen,et al.  Designing Web Usability: The Practice of Simplicity , 1999 .

[119]  Marco Antoniotti,et al.  SHIFT and SMART-AHS: A Language for Hybrid System Engineering Modeling and Simulation , 1997, DSL.

[120]  Emin Gün Sirer,et al.  Using production grammars in software testing , 1999, DSL '99.

[121]  Mehdi T. Harandi,et al.  Workshop on software specification and design , 1988, SOEN.

[122]  James M. Neighbors,et al.  The Draco Approach to Constructing Software from Reusable Components , 1984, IEEE Transactions on Software Engineering.

[123]  Gregg Rothermel,et al.  Slicing spreadsheets: an integrated methodology for spreadsheet testing and debugging , 1999, DSL '99.

[124]  Mitchell Wand,et al.  Macro-by-example: Deriving syntactic transformations from their specifications , 1987, POPL '87.

[125]  Anja Feldmann,et al.  Potential benefits of delta encoding and data compression for HTTP , 1997, SIGCOMM '97.

[126]  Daniel Hoffman,et al.  Commonality and Variability in Software Engineering , 1998, IEEE Softw..

[127]  W. Orchard-Hays The general problem of computing languages: Their nature, function and translation. , 1961 .

[128]  Mark A. Ardis,et al.  Jargons for domain engineering , 1999, DSL '99.

[129]  Luca Cardelli,et al.  Service Combinators for Web Computing , 1999, DSL.

[130]  Nils Klarlund,et al.  MONA Version 1.4 - User Manual , 2001 .

[131]  Jeremy G. Siek,et al.  Concept Checking: Binding Parametric Polymorphism in C++ , 2000 .

[132]  J. Christopher Ramming,et al.  Two Application languages in software production , 1994 .

[133]  Tim Berners-Lee,et al.  Hypertext transfer protocol--http/i , 1993 .

[134]  Jean E. Sammet,et al.  Roster of programming languages for 1973 , 1974, SIGP.

[135]  Arie van Deursen,et al.  REPORT RAPPORT , 1997 .

[136]  Olin Shivers A Universal Scripting Framework or Lambda: The Ultimate "Little Language" , 1996, ASIAN.

[137]  Jia Wang,et al.  A survey of web caching schemes for the Internet , 1999, CCRV.

[138]  W. Barkley Fritz Selected definitions , 1963, CACM.

[139]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[140]  Roy T. Fielding,et al.  Hypertext Transfer Protocol - HTTP/1.0 , 1996, RFC.

[141]  J. Craig Cleaveland,et al.  Building application generators , 1988, IEEE Software.

[142]  Yannis Smaragdakis,et al.  Static interfaces in C , 2000 .

[143]  Robert Hieb,et al.  Revised 5 Report on the Algorithmic Language , 1999 .

[144]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[145]  Jin Zhang,et al.  Active Cache: caching dynamic contents on the Web , 1999, Distributed Syst. Eng..

[146]  Andrew W. Appel,et al.  The Zephyr Abstract Syntax Description Language , 1997, DSL.

[147]  Lars S. Nyland,et al.  KHEPERA: A System for Rapid Implementation of Domain Specific Languages , 1997, DSL.

[148]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[149]  James Jennings,et al.  Verischemelog: Verilog embedded in Scheme , 1999, DSL '99.

[150]  Arun Iyengar,et al.  Improving Web Server Performance by Caching Dynamic Data , 1997, USENIX Symposium on Internet Technologies and Systems.

[151]  Charles Consel,et al.  Domain-Specific Languages: From Design to Implementation Application to Video Device Drivers Generation , 1999, IEEE Trans. Software Eng..

[152]  J. C. Wortmann,et al.  Development and Evolution of Software Architectures for Product Families , 1998, Lecture Notes in Computer Science.

[153]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[154]  Michael Hanus,et al.  High-Level Server Side Web Scripting in Curry , 2001, PADL.

[155]  Anders Sandholm,et al.  A type system for dynamic Web documents , 2000, POPL '00.

[156]  Erik Sandewall,et al.  Programming in an Interactive Environment: the ``Lisp'' Experience , 1978, CSUR.

[157]  Claus Brabrand,et al.  Growing languages with metamorphic syntax macros , 2000, PEPM '02.

[158]  D. Flannanghan JavaScript: The definitive guide , 1999 .

[159]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[160]  Todd L. Veldhuizen C++ Templates as Partial Evaluation , 1999, PEPM.

[161]  Peter Thiemann,et al.  WASH/CGI: Server-Side Web Scripting with Sessions and Typed, Compositional Forms , 2002, PADL.

[162]  Paul Hudak,et al.  Modular Denotational Semantics for Compiler Construction , 1996, ESOP.

[163]  Jonathan Rees,et al.  Macros that work , 1991, POPL '91.

[164]  David Sandberg Lithe: a language combining a flexible syntax and classes , 1982, POPL '82.

[165]  Guy L. Steele,et al.  Growing a Language , 1999, High. Order Symb. Comput..

[166]  Arun Iyengar,et al.  A scalable system for consistently caching dynamic Web data , 1999, IEEE INFOCOM '99. Conference on Computer Communications. Proceedings. Eighteenth Annual Joint Conference of the IEEE Computer and Communications Societies. The Future is Now (Cat. No.99CH36320).

[167]  Burt M. Leavenworth,et al.  Syntax macros and extended translation , 1966, CACM.

[168]  Daniel E. Stevenson,et al.  Programming Language Support for Digitized Images or, The Monsters in the Closet , 1997, DSL.

[169]  C. M. Sperberg-McQueen,et al.  eXtensible Markup Language (XML) 1.0 (Second Edition) , 2000 .

[170]  Arie van Deursen,et al.  Language Prototyping: An Algebraic Specification Approach , 1996, AMAST Series in Computing.

[171]  Thomas R. Gross,et al.  Code Composition as an Implementation Language for Compilers , 1997, DSL.

[172]  Peter Henderson Functional geometry , 1982, LFP '82.