skip to main content
article

When and how to develop domain-specific languages

Published:01 December 2005Publication History
Skip Abstract Section

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.

References

  1. Anlauff, M., Kutter, P. W., and Pierantonio, A. 1999. Tool support for language design and prototyping with Montages. In Compiler Construction (CC'99), S. Jähnichen, Ed. Lecture Notes in Computer Science, vol. 1575. Springer-Verlag, 296--299.]] Google ScholarGoogle Scholar
  2. Antoniotti, M. and Göllü, A. 1997. SHIFT and SMART-AHS: A language for hybrid system engineering modeling and simulation. In Proceedings of the USENIX Conference on Domain-Specific Languages, 171--182.]] Google ScholarGoogle Scholar
  3. Atkins, D., Ball, T., Bruns, G., and Cox, K. 1999. Mawl: A domain-specific language for form-based services. IEEE Trans. Softw. Eng. 25, 3 (May/June), 334--346.]] Google ScholarGoogle Scholar
  4. Attali, I., Courbis, C., Degenne, P., Fau, A., Parigot, D., and Pasquier, C. 2001. SmartTools: A generator of interactive environments tools. In Compiler Construction: 10th International Conference (CC'01), R. Wilhelm, Ed. Lecture Notes in Computer Science, vol. 2027. Springer-Verlag, 355--360.]] Google ScholarGoogle Scholar
  5. Aycock, J. 2002. The design and implementation of SPARK, a toolkit for implementing domain-specific languages. J. Comput. Inform. Tech. 10, 1, 55--66.]]Google ScholarGoogle Scholar
  6. Backus, J. W. 1960. The syntax and semantics of the proposed International Algebraic Language of the Zurich ACM-GAMM conference. In Proceedings of the International Conference on Information Processing, UNESCO, Paris, 1959. Oldenbourg, Munich and Butterworth, London, 125--132.]]Google ScholarGoogle Scholar
  7. Badros, G. 2000. JavaML: A markup language for Java source code. In Proceedings of the 9th International World Wide Web Conference. http://www9.org/w9cdrom/start.html.]] Google ScholarGoogle Scholar
  8. Bagge, O. S. and Haveraaen, M. 2003. Domain-specific optimisation with user-defined rules in CodeBoost. In Proceedings of the 4th International Workshop on Rule-Based Programming (RULE'03), J.-L. Giavitto and P.-E. Moreau, Eds. Electronic Notes in Theoretical Computer Science, vol. 86(2). Elsevier. http://www.sciencedirect.com/.]]Google ScholarGoogle Scholar
  9. Barron, D. W. 2000. The World of Scripting Languages. John Wiley.]] Google ScholarGoogle Scholar
  10. Batory, D., Lofaso, B., and Smaragdakis, Y. 1998. JTS: Tools for implementing domain-specific languages. In Proceedings of the 5th International Conference on Software Reuse (JCSR'98), P. Devanbu and J. Poulin, Eds. IEEE Computer Society, 143--153.]] Google ScholarGoogle Scholar
  11. Batory, D., Thomas, J., and Sirkin, M. 1994. Reengineering a complex application using a scalable data structure compiler. In Proceedings of the ACM SIGSOFT International Symposium on the Foundations of Software Engineering. 111--120.]] Google ScholarGoogle Scholar
  12. Baxter, I. D., Pidgeon, C., and Mehlich, M. 2004. DMS: Program transformation for practical scalable software evolution. In Proceedings of the 26th International Conference on Software Engineering (ICSE'04). IEEE Computer Society, 625--634.]] Google ScholarGoogle Scholar
  13. Bennett, K. H. and Rajlich, V. T. 2000. Software maintenance and evolution: A roadmap. In The Future of Software Engineering, A. Finkelstein, Ed. ACM Press, 73--87.]] Google ScholarGoogle Scholar
  14. Bentley, J. L. 1986. Programming pearls: Little languages. Comm. ACM 29, 8 (August), 711--721.]] Google ScholarGoogle Scholar
  15. Bergin, T. J. and Gibson, R. G., Eds. 1996. History of Programming Languages II. ACM Press.]] Google ScholarGoogle Scholar
  16. Bertrand, F. and Augeraud, M. 1999. BDL: A specialized language for per-object reactive control. IEEE Trans. Softw. Eng. 25, 3, 347--362.]] Google ScholarGoogle Scholar
  17. Biggerstaff, T. J. 1998. A perspective of generative reuse. Annals Softw. Eng. 5, 169--226.]] Google ScholarGoogle Scholar
  18. Biggerstaff, T. J. and Perlis, A. J., Eds. 1989. Software Reusability. ACM Press/Addison-Wesley. Vol. I: Concepts and Models, Vol. II: Applications and Experience.]] Google ScholarGoogle Scholar
  19. Bonachea, D., Fisher, K., Rogers, A., and Smith, F. 1999. Hancock: A language for processing very large-scale data. In Proceedings of the 2nd USENIX Conference on Domain-Specific Languages, 163--176.]] Google ScholarGoogle Scholar
  20. Bosch, J. and Dittrich, Y. Domain-specific languages for a changing world. http://www.cs.rug.nl/bosch/articles.html.]]Google ScholarGoogle Scholar
  21. Braband, C. and Schwartzbach, M. 2002. Growing languages with metamorphic syntax macros. ACM SIGPLAN Notices 37, 3 (March), 31--40.]] Google ScholarGoogle Scholar
  22. Braband, C., Schwartzbach, M. I., and Vanggaard, M. 2003. The metafront system: Extensible parsing and transformation. In Proceedings of the 3rd Workshop on Language Descriptions, Tools, and Applications (LDTA'03), B. R. Bryant and J. Saraiva, Eds. Electronic Notes in Theoretical Computer Science, vol. 82(3). Elsevier. http://www.sciencedirect.com/.]]Google ScholarGoogle Scholar
  23. Bravenboer, M. and Visser, E. 2004. Concrete syntax for objects: Domain-specific language embedding and assimilation without restrictions. In Proceedings of the 19th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'04), D. C. Schmidt, Ed. ACM, 365--383.]] Google ScholarGoogle Scholar
  24. Brooks, Jr., F. P. 1996. Language design as design. In History of Programming Languages II. T. J. Bergin and R. C. Gibson Eds. ACM Press, 4--15.]] Google ScholarGoogle Scholar
  25. Bruntink, M., van Deursen, A., and Tourwé, T. 2005. Isolating idiomatic crosscutting concerns. In Proceedings of the International Conference on Software Maintenance (ICSM'05). IEEE Computer Society, 37--46.]] Google ScholarGoogle Scholar
  26. Buffenbarger, J. and Gruell, K. 2001. A language for software subsystem composition. In IEEE Proceedings of the 34th Hawaii International Conference on System Sciences.]] Google ScholarGoogle Scholar
  27. Cardelli, L. and Davies, R. 1999. Service combinators for web computing. IEEE Trans. Softw. Eng. 25, 3 (May/June), 309--316.]] Google ScholarGoogle Scholar
  28. Chandra, S., Richards, B., and Larus, J. R. 1999. Teapot: A domain-specific language for writing cache coherence protocols. IEEE Trans. Softw. Eng. 25, 3 (May/June), 317--333.]] Google ScholarGoogle Scholar
  29. Chappell, D. 1996. Understanding ActiveX and OLE. Microsoft Press.]] Google ScholarGoogle Scholar
  30. Chiba, S. 1995. A metaobject protocol for C++. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'95). ACM, 285--299.]] Google ScholarGoogle Scholar
  31. Cleaveland, J. C. 1988. Building application generators. IEEE Softw. 5, 4, 25--33.]] Google ScholarGoogle Scholar
  32. Cleaveland, J. C. 2001. Program Generators Using Java and XML. Prentice-Hall.]] Google ScholarGoogle Scholar
  33. Clements, J., Felleisen, M., Findler, R., Flatt, M., and Krishnamurthi, S. 2004. Fostering little languages. Dr. Dobb's J. 29, 3 (March), 16--24.]]Google ScholarGoogle Scholar
  34. Consel, C. and Marlet, R. 1998. Architecturing software using a methodology for language development. In Principles of Declarative Programming (PLILP'98/ALP'98), C. Palamidessi, H. Glaser, and K. Meinke, Eds. Lecture Notes in Computer Science, vol. 1490. Springer-Verlag, 170--194.]] Google ScholarGoogle Scholar
  35. Coplien, J., Hoffman, D., and Weiss, D. 1998. Commonality and variability in software engineering. IEEE Softw. 15, 6, 37--45.]] Google ScholarGoogle Scholar
  36. Cordy, J. R. 2004. TXL---A language for programming language tools and applications. In Proceedings of the 4th Workshop on Language Descriptions, Tools, and Applications (LDTA'04), G. Hedin and E. van Wyk, Eds. Electronic Notes in Theoretical Computer Science, vol. 110. Elsevier, 3--31. http://www.sciencedirect.com/.]]Google ScholarGoogle Scholar
  37. Courbis, C. and Finkelstein, A. 2004. Towards an aspect weaving BPEL engine. In Proceedings of the 3rd AOSD Workshop on Aspects, Components, and Patterns for Infrastructure Software (ACP4IS), Y. Coady and D. H. Lorenz, Eds. Tech. rep. NU-CCIS-04-04, College of Computer and Information Science, Northeastern University, Boston, MA.]]Google ScholarGoogle Scholar
  38. Črepinšek, M., Mernik, M., Javed, F., Bryant, B. R., and Sprague, A. 2005. Extracting grammar from programs: evolutionary approach. ACM SIGPLAN Notices 40, 4 (April), 39--46.]] Google ScholarGoogle Scholar
  39. Crespi-Reghizzi, S., Melkanoff, M. A., and Lichten, L. 1973. The use of grammatical inference for designing programming languages. Comm. ACM 16, 83--90.]] Google ScholarGoogle Scholar
  40. Crew, R. F. 1997. ASTLOG: A language for examining abstract syntax trees. In Proceedings of the USENIX Conference on Domain-Specific Languages, 229--242.]] Google ScholarGoogle Scholar
  41. Czarnecki, K. and Eisenecker, U. 2000. Generative Programming: Methods, Techniques and Applications. Addison-Wesley.]] Google ScholarGoogle Scholar
  42. de Jonge, M. 2002. Source tree composition. In Software Reuse: Methods, Techniques, and Tools: 7th International Conference (ICSR-7), C. Gacek, Ed. Lecture Notes in Computer Science, vol. 2319. Springer-Verlag, 17--32.]] Google ScholarGoogle Scholar
  43. Dean, M., Schreiber, G., van Harmelen, F., Hendler, J., Horrocks, I., McGuinness, D. L., Patel-Schneider, P. F., and Stein, L. A. 2003. OWL Web Ontology Language Reference. Working draft, W3C (March). http://www.w3.org/TR/2003/WD-owl-ref-20030331/.]]Google ScholarGoogle Scholar
  44. Denny, M. 2003. Ontology building: A survey of editing tools. Tech. rep., XML.com. http://www.xml.com/lpt/a/2002/11/06/ontologies.html.]]Google ScholarGoogle Scholar
  45. Elliott, C. 1999. An embedded modeling language approach to interactive 3D and multimedia animation. IEEE Trans. Softw. Eng. 25, 3 (May/June), 291--308.]] Google ScholarGoogle Scholar
  46. Faith, R. E., Nyland, L. S., and Prins, J. F. 1997. Khepera: A system for rapid implementation of domain specific languages. In Proceedings of the USENIX Conference on Domain-Specific Languages, 243--255.]] Google ScholarGoogle Scholar
  47. Falbo, R. A., Guizzardi, G., and Duarte, K. C. 2002. An ontological approach to domain engineering. In Proceedings of the 14th International Conference on Software Engineering and Knowledge Engineering (SEKE'02). ACM, 351--358.]] Google ScholarGoogle Scholar
  48. Felleisen, M., Findler, R., Flatt, M., and Krishnamurthi, S. 2004. Building little languages with macros. Dr. Dobb's J. 29, 4 (April), 45--49.]]Google ScholarGoogle Scholar
  49. Fertalj, K., Kalpič, D., and Mornar, V. 2002. Source code generator based on a proprietary specification language. In Proceedings of the 35th Hawaii International Conference on System Sciences.]] Google ScholarGoogle Scholar
  50. Frakes, W. 1998. Panel: Linking domain analysis with domain implementation. In Proceedings of the 5th International Conference on Software Reuse. IEEE Computer Society, 348--349.]] Google ScholarGoogle Scholar
  51. Frakes, W., Prieto-Diaz, R., and Fox, C. 1998. DARE: Domain analysis and reuse environment. Annals of Software Engineering 5, 125--141.]] Google ScholarGoogle Scholar
  52. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.]] Google ScholarGoogle Scholar
  53. Germon, R. 2001. Using XML as an intermediate form for compiler development. In XML Conference Proceedings. http://www.idealliance.org/papers/xml2001/index.html.]]Google ScholarGoogle Scholar
  54. Gil, J. and Tsoglin, Y. 2001. JAMOOS---A domain-specific language for language processing. J. Comput. Inform. Tech. 9, 4, 305--321.]]Google ScholarGoogle Scholar
  55. Gilmore, S. and Ryan, M., Eds. 2001. Language Constructs for Describing Features---Proceedings of the FIREworks Workshop. Springer-Verlag.]]Google ScholarGoogle Scholar
  56. Glässer, U., Gurevich, Y., and Veanes, M. 2002. An abstract communication model. Tech. rep. MSR-TR-2002-55. Microsoft Research, Redmond, WA.]]Google ScholarGoogle Scholar
  57. Gondow, K. and Kawashima, H. 2002. Towards ANSI C program slicing using XML. In Proceedings of the 2nd Workshop on Language Descriptions, Tools, and Applications (LDTA'02), M. G. J. van den Brand and R. Lämmel, Eds. Electronic Notes in Theoretical Computer Science, vol. 65(3). Elsevier. http://www.sciencedirect.com/.]]Google ScholarGoogle Scholar
  58. Gough, J. 2002. Compiling for the .NET Common Language Runtime (CLR). Prentice Hall.]] Google ScholarGoogle Scholar
  59. Granicz, A. and Hickey, J. 2003. Phobos: Extending compilers with executable language definitions. In Proceedings of the 36th Hawaii International Conference on System Sciences.]]Google ScholarGoogle Scholar
  60. Gray, J. and Karsai, G. 2003. An examination of DSLs for concisely representing model traversals and transformations. In Proceedings of the 36th Hawaii International Conference on System Sciences.]] Google ScholarGoogle Scholar
  61. Gray, R. W., Levi, S. P., Heuring, V. P., Sloane, A. M., and Waite, W. M. 1992. Eli: A complete, flexible compiler construction system. Comm. ACM 35, 2 (Feb.), 121--130.]] Google ScholarGoogle Scholar
  62. Greenfield, J., Short, K., Cook, S., Kent, S., and Crupi, J. 2004. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools. John Wiley.]] Google ScholarGoogle Scholar
  63. Guyer, S. Z. and Lin, C. 1999. An annotation language for optimizing software libraries. In Proceedings of the 2nd USENIX Conference on Domain-Specific Languages, 39--52.]] Google ScholarGoogle Scholar
  64. Guyer, S. Z. and Lin, C. 2005. Broadway: A compiler for exploiting the domain-specific semantics of software libraries. In Proceedings of IEEE, 93, 2, 342--357.]]Google ScholarGoogle Scholar
  65. Heering, J. and Klint, P. 2000. Semantics of programming languages: A tool-oriented approach. ACM SIGPLAN Notices 35, 3 (March) 39--48.]] Google ScholarGoogle Scholar
  66. Herndon, R. M. and Berzins, V. A. 1988. The realizable benefits of a language prototyping language. IEEE Trans. Softw. Eng. 14, 803--809.]] Google ScholarGoogle Scholar
  67. HICSS 2001. Proceedings of the 34th Hawaii International Conference on System Sciences (HICSS'34). IEEE.]]Google ScholarGoogle Scholar
  68. HICSS 2002. Proceedings of the 35th Hawaii International Conference on System Sciences (HICSS'35). IEEE.]]Google ScholarGoogle Scholar
  69. HICSS 2003. Proceedings of the 36th Hawaii International Conference on System Sciences (HICSS'36). IEEE.]]Google ScholarGoogle Scholar
  70. Hudak, P. 1996. Building domain-specific embedded languages. ACM Comput. Surv. 28, 4 (Dec).]] Google ScholarGoogle Scholar
  71. Hudak, P. 1998. Modular domain specific languages and tools. In Proceedings of the 5th International Conference on Software Reuse (JCSR'98), P. Devanbu and J. Poulin, Eds. IEEE Computer Society, 134--142.]] Google ScholarGoogle Scholar
  72. Jennings, J. and Beuscher, E. 1999. Verischemelog: Verilog embedded in Scheme. In Proceedings of the 2nd USENIX Conference on Domain-Specific Languages. 123--134.]] Google ScholarGoogle Scholar
  73. Jones, C. 1996. SPR Programming Languages Table Release 8.2, http://www.theadvisors.com/langcomparison.htm. (Accessed April 2005). Later release not available at publication.]]Google ScholarGoogle Scholar
  74. Jones, N. D., Gomard, C. K., and Sestoft, P. 1993. Partial Evaluation and Automatic Program Generation. Prentice Hall.]] Google ScholarGoogle Scholar
  75. Kadhim, B. M. and Waite, W. M. 1996. Maptool---Supporting modular syntax development. In Compiler Construction (CC'96), T. Gyimóthy, Ed. Lecture Notes in Computer Science, vol. 1060. Springer-Verlag, 268--280.]] Google ScholarGoogle Scholar
  76. Kamin, S., Ed. 1997. DSL'97---1st ACM SIGPLAN Workshop on Domain-Specific Languages in Association with POPL'97. University of Illinois Computer Science Report.]]Google ScholarGoogle Scholar
  77. Kamin, S. 1998. Research on domain-specific embedded languages and program generators. Electro. Notes Theor. Comput. Sci. 14. http://www.sciencedirect.com/.]]Google ScholarGoogle Scholar
  78. Kamin, S. and Hyatt, D. 1997. A special-purpose language for picture-drawing. In Proceedings of the USENIX Conference on Domain-Specific Languages, 297--310.]] Google ScholarGoogle Scholar
  79. Kang, K. C., Cohen, S. G., Hess, J. A., Novak, W. E., and Peterson, A. S. 1990. Feature-oriented domain analysis (FODA) feasibility study. Tech. rep. CMU/SEI-90-TR-21. Software Engineering Institute, Carnegie Mellon University.]]Google ScholarGoogle Scholar
  80. Kastens, U. and Pfahler, P. 1998. Compositional design and implementation of domain-specific languages. In IFIP TC2 WG 2.4 Working Conference on System Implementation 2000: Languages, Methods and Tools, R. N. Horspool, Ed. Chapman and Hall, 152--165.]] Google ScholarGoogle Scholar
  81. Kiczales, G., des Rivieres, J., and Bobrow, D. G. 1991. The Art of the Metaobject Protocol. MIT Press.]] Google ScholarGoogle Scholar
  82. Kieburtz, R. B., McKinney, L., Bell, J. M., Hook, J., Kotov, A., Lewis, J., Oliva, D. P., Sheard, T., Smith, I., and Walton, L. 1996. A software engineering experiment in software component generation. In Proceedings of the 18th International Conference on Software Engineering (ICSE'96). IEEE, 542--552.]] Google ScholarGoogle Scholar
  83. Kienle, H. M. and Moore, D. L. 2002. smgn: Rapid prototyping of small domain-specific languages. J. Comput. Inform. Tech. 10, 1, 37--53.]]Google ScholarGoogle Scholar
  84. Klarlund, N. and Schwartzbach, M. 1999. A domain-specific language for regular sets of strings and trees. IEEE Trans. Softw. Eng. 25, 3 (May/June), 378--386.]] Google ScholarGoogle Scholar
  85. Krueger, C. W. 1992. Software reuse. ACM Computing Surveys 24, 2 (June), 131--183.]] Google ScholarGoogle Scholar
  86. Kuck, D. J. 2005. Platform 2015 software: Enabling innovation in parallelism for the next decade. Technology@Intel Magazine. http://www.intel.com/technology/magazine/computing/Parallelism-0405.htm.]]Google ScholarGoogle Scholar
  87. Kumar, S., Mandelbaum, Y., Yu, X., and Li, K. 2001. ESP: A language for programmable devices. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'01). ACM, 309--320.]] Google ScholarGoogle Scholar
  88. Kutter, P. W., Schweizer, D., and Thiele, L. 1998. Integrating domain specific language design in the software life cycle. In Applied Formal Methods---FM-Trends 98, D. Hutter et al., Eds. Lecture Notes in Computer Science, vol. 1641. Springer-Verlag, 196--212.]] Google ScholarGoogle Scholar
  89. Launchbury, J., Lewis, J. R., and Cook, B. 1999. On embedding a microarchitectural design language within Haskell. ACM SIGPLAN Notices 34, 9 (Sept.), 60--69.]] Google ScholarGoogle Scholar
  90. Lengauer, C., Batory, D., Consel, C., and Odersky, M., Eds. 2004. Domain-Specific Program Generation. Lecture Notes in Computer Science, vol. 3016. Springer-Verlag.]]Google ScholarGoogle Scholar
  91. Levy, M. R. 1998. Web programming in Guide. Softw. Pract. Exper. 28, 1581--1603.]] Google ScholarGoogle Scholar
  92. Martin, J. 1985. Fourth-Generation Languages. Vol. I: Principles, Vol II: Representative 4GLs. Prentice-Hall.]] Google ScholarGoogle Scholar
  93. Mauw, S., Wiersma, W., and Willemse, T. 2004. Language-driven system design. Int. J. Softw. Eng. Knowl. Eng. 14, 1--39.]]Google ScholarGoogle Scholar
  94. Mernik, M. and Lämmel, R. 2001. Special issue on domain-specific languages, Part I. J. Comput. Inform. Techn. 9, 4.]]Google ScholarGoogle Scholar
  95. Mernik, M. and Lämmel, R. 2002. Special issue on domain-specific languages, Part II. J. Comput. Inform. Techn. 10, 1.]]Google ScholarGoogle Scholar
  96. Mernik, M., Lenič, M., Avdičaušević, E., and Žumer, V. 2000. Multiple attribute grammar inheritance. Informatica 24, 3 (Sept.), 319--328.]]Google ScholarGoogle Scholar
  97. Mernik, M., Novak, U., Avdičaušević, E., Lenič, M., and Žumer, V. 2001. Design and implementation of simple object description language. In Proceedings of the 2001 ACM Symposium on Applied Computing (SAC'01). ACM, 590--594.]] Google ScholarGoogle Scholar
  98. Mernik, M., Žumer, V., Lenič, M., and Avdičaušević, E. 1999. Implementation of multiple attribute grammar inheritance in the tool LISA. ACM SIGPLAN Notices 34, 6 (June), 68--75.]] Google ScholarGoogle Scholar
  99. Moura, J. M. F., Püschel, M., Padua, D., and Dongarra, J. 2005. Special issue on program generation, optimization, and platform adaptation. Proceedings of the IEEE 93, 2.]]Google ScholarGoogle Scholar
  100. Nakatani, L. and Jones, M. 1997. Jargons and infocentrism. 1st Acm SIGPLAN Workshop on Domain-Specific Languages. 59--74. http://www-sal.cs.uiuc.edu/kamin/dsl/papers/nakatani.ps.]]Google ScholarGoogle Scholar
  101. Nardi, B. A. 1993. A Small Matter of Programming: Perspectives on End User Computing. MIT Press.]] Google ScholarGoogle Scholar
  102. Neighbors, J. M. 1984. The Draco approach to constructing software from reusable components. IEEE Trans. Softw. Eng. SE-10, 5 (Sept.), 564--574.]]Google ScholarGoogle Scholar
  103. Parigot, D. 2004. Towards domain-driven development: The SmartTools software factory. In Companion to the 19th Annual ACM SIGPLAN Conference on Object-oriented Programming Systems, Languages, and Applications. ACM, 37--38.]] Google ScholarGoogle Scholar
  104. Peyton Jones, S., Tolmach, A., and Hoare, T. 2001. Playing by the rules: Rewriting as a practical optimisation technique in GHC. In Proceedings of the Haskell Workshop.]]Google ScholarGoogle Scholar
  105. Pfahler, P. and Kastens, U. 2001. Configuring component-based specifications for domain-specific languages. In Proceedings of the 34th Hawaii International Conference on System Sciences.]] Google ScholarGoogle Scholar
  106. Raymond, E. S. 2001. The CML2 language: Python implementation of a constraint-based interactive configurator. In Proceeding of the 9th International Python Conference. 135--142. http://www.catb.org/esr/cml2/cml2-paper.html.]]Google ScholarGoogle Scholar
  107. Risi, W., Martinez-Lopez, P., and Marcos, D. 2001. Hycom: A domain specific language for hypermedia application development. In Proceedings of the 34th Hawaii International Conference on System Sciences.]] Google ScholarGoogle Scholar
  108. Ross, D. T. 1981. Origins of the APT language for automatically programmed tools. History of Programming Languages, R. L. Wexelblat Ed. Academic Press. 279--338.]] Google ScholarGoogle Scholar
  109. Salus, P. H., Ed. 1998. Little Languages. Handbook of Programming Languages, vol. III. MacMillan.]] Google ScholarGoogle Scholar
  110. Sammet, J. E. 1969. Programming Languages: History and Fundamentals. Prentice-Hall.]] Google ScholarGoogle Scholar
  111. Saraiva, J. and Schneider, S. 2003. Embedding domain specific languages in the attribute grammar formalism. In Proceedings of the 36th Hawaii International Conference on System Sciences.]] Google ScholarGoogle Scholar
  112. Schnarr, E., Hill, M. D., and Larus, J. R. 2001. Facile: A language and compiler for high-performance processor simulators. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'01). ACM, 321--331.]] Google ScholarGoogle Scholar
  113. Schneider, K. A. and Cordy, J. R. 2002. AUI: A programming language for developing plastic interactive software. In Proceedings of the 35th Hawaii International Conference on System Sciences.]] Google ScholarGoogle Scholar
  114. Schupp, S., Gregor, D. P., Musser, D. R., and Liu, S. 2001. User-extensible simplification---Type-based optimizer generators. In Compiler Construction (CC'01), R. Wilhelm, Ed. Lecture Notes in Computer Science, vol. 2027. Springer-Verlag, 86--101.]] Google ScholarGoogle Scholar
  115. SDL Forum. 2000. MSC-2000: Interaction for the new millenium. http://www.sdl-forum.org/MSC2000present/index.htm.]]Google ScholarGoogle Scholar
  116. Simos, M. and Anthony, J. 1998. Weaving the model web: A multi-modeling approach to concepts and features in domain engineering. In Proceedings of the 5th International Conference on Software Reuse. IEEE Computer Society, 94--102.]] Google ScholarGoogle Scholar
  117. Sirer, E. G. and Bershad, B. N. 1999. Using production grammars in software testing. In Proceedings of the 2nd USENIX Conference on Domain-Specific Languages. 1--14.]] Google ScholarGoogle Scholar
  118. Sloane, A. M. 2002. Post-design domain-specific language embedding: A case study in the software engineering domain. In Proceedings of the 35th Hawaii International Conference on System Sciences.]] Google ScholarGoogle Scholar
  119. Slonneger, K. and Kurtz, B. L. 1995. Formal Syntax and Semantics of Programming Languages: A Laboratory Based Approach. Addison-Wesley.]] Google ScholarGoogle Scholar
  120. Smaragdakis, Y. and Batory, D. 1997. DiSTiL: A transformation library for data structures. In Proceedings of the USENIX Conference on Domain-Specific Languages. 257--270.]] Google ScholarGoogle Scholar
  121. Smaragdakis, Y. and Batory, D. 2000. Application generators. In Wiley Encyclopedia of Electrical and Electronics Engineering Online, J. Webster, Ed. John Wiley.]]Google ScholarGoogle Scholar
  122. Soroker, D., Karasick, M., Barton, J., and Streeter, D. 1997. Extension mechanisms in Montana. In Proceedings of the 8th Israeli Conference on Computer-Based Systems and Software Engineering (ICCSSE'97). IEEE Computer Society, 119--128.]] Google ScholarGoogle Scholar
  123. Spinellis, D. 2001. Notable design patterns for domain-specific languages. J. Syst. Softw. 56, 91--99.]] Google ScholarGoogle Scholar
  124. Sutcliffe, A. and Mehandjiev, N. 2004. Special issue on End-User Development. Comm. ACM 47, 9.]]Google ScholarGoogle Scholar
  125. Szyperski, C. 2002. Component Software---Beyond Object-Oriented Programming, 2nd Ed. Addison-Wesley/ACM Press.]] Google ScholarGoogle Scholar
  126. Taylor, R. N., Tracz, W., and Coglianese, L. 1995. Software development using domain-specific software architectures. ACM SIGSOFT Software Engineering Notes 20, 5, 27--37.]] Google ScholarGoogle Scholar
  127. Tennent, R. D. 1977. Language design methods based on semantic principles. Acta Inf. 8, 97--112.]]Google ScholarGoogle Scholar
  128. Thatte, S. 2001. XLANG: Web services for business process design. Tech. rep. Microsoft. http://www.gotdotnet.com/team/xml_wsspecs/xlang-c/.]]Google ScholarGoogle Scholar
  129. Thibault, S. A. 1998. Domain-specific languages: Conception, implementation and application. Ph.D. thesis, University of Rennes.]]Google ScholarGoogle Scholar
  130. Thibault, S. A., Consel, C., and Muller, G. 1998. Safe and efficient active network programming. In Proceedings of the 17th IEEE Symposium on Reliable Distributed Systems. IEEE Computer Society, 135--143.]] Google ScholarGoogle Scholar
  131. Thibault, S. A., Marlet, R., and Consel, C. 1999. Domain-specific languages: From design to implementation---Application to video device drivers generation. IEEE Trans. Softw. Eng. 25, 3, (May/June), 363--377.]] Google ScholarGoogle Scholar
  132. Tracz, W. and Coglianese, L. 1995. DOMAIN (DOmain Model All INtegrated)---a DSSA domain analysis tool. Tech. rep. ADAGE-LOR-94-11. Loral Federal Systems.]]Google ScholarGoogle Scholar
  133. UPnP 2003. Universal Plug and Play Forum. http://www.upnp.org/.]]Google ScholarGoogle Scholar
  134. USENIX 1997. Proceedings of the USENIX Conference on Domain-Specific Languages.]]Google ScholarGoogle Scholar
  135. USENIX 1999. Proceedings of the 2nd USENIX Conference on Domain-Specific Languages (DSL'99).]]Google ScholarGoogle Scholar
  136. van den Brand, M. G. J., van Deursen, A., Heering, J., de Jong, H. A., de Jonge, M., Kuipers, T., Klint, P., Moonen, L., Oliver, P. A., Scheerder, J., Vinju, J. J., Visser, E., and Visser, J. 2001. The ASF+SDF Meta-Environment: A component-based language development environment. In Compiler Construction (CC'01), R. Wilhelm, Ed. Lecture Notes in Computer Science, vol. 2027. Springer-Verlag, 365--370. http://www.cwi.nl/projects/MetaEnv.]] Google ScholarGoogle Scholar
  137. van den Brand, M. G. J. and Visser, E. 1996. Generation of formatters for context-free languages. ACM Trans. Softw. Eng. Method. 5, 1--41.]] Google ScholarGoogle Scholar
  138. van Deursen, A. and Klint, P. 1998. Little languages: Little maintenance? J. Softw. Maintenance 10, 75--92.]] Google ScholarGoogle Scholar
  139. van Deursen, A. and Klint, P. 2002. Domain-specific language design requires feature descriptions. J. Comput. Inform. Tech. 10, 1, 1--17.]]Google ScholarGoogle Scholar
  140. van Deursen, A., Klint, P., and Visser, J. 2000. Domain-specific languages: An annotated bibliography. ACM SIGPLAN Notices 35, 6 (June), 26--36.]] Google ScholarGoogle Scholar
  141. van Engelen, R. 2001. ATMOL: A domain-specific language for atmospheric modeling. J. Comput. Inform. Techn. 9, 4, 289--303.]]Google ScholarGoogle Scholar
  142. Veldhuizen, T. L. 1995a. Expression templates. C++ Report 7, 5 (June) 26--31.]]Google ScholarGoogle Scholar
  143. Veldhuizen, T. L. 1995b. Using C++ template metaprograms. C++ Report 7, 4 (May) 36--43.]]Google ScholarGoogle Scholar
  144. Veldhuizen, T. L. 2001. Blitz++ User's Guide. Version 1.2 http://www.oonumerics.org/blitz/manual/blitz.ps.]]Google ScholarGoogle Scholar
  145. Visser, E. 2003. Stratego---Strategies for program transformation. http://www.stratego-language.org.]]Google ScholarGoogle Scholar
  146. Wang, D. C., Appel, A. W., Korn, J. L., and Serra, C. S. 1997. The Zephyr abstract syntax description language. In Proceedings of the USENIX Conference on Domain-Specific Languages, 213--28.]] Google ScholarGoogle Scholar
  147. Weiss, D. and Lay, C. T. R. 1999. Software Product Line Engineering. Addison-Wesley.]] Google ScholarGoogle Scholar
  148. Wexelblat, R. L., Ed. 1981. History of Programming Languages. Academic Press.]] Google ScholarGoogle Scholar
  149. Wile, D. S. 1993. POPART: Producer of Parsers and Related Tools. USC/Information Sciences Institute. http://mr.teknowledge.com/wile/popart.html.]]Google ScholarGoogle Scholar
  150. Wile, D. S. 2001. Supporting the DSL spectrum. J. Comput. Inform. Techn. 9, 4, 263--287.]]Google ScholarGoogle Scholar
  151. Wile, D. S. 2004. Lessons learned from real DSL experiments. Sci. Comput. Program. 51, 265--290.]] Google ScholarGoogle Scholar
  152. Wile, D. S. and Ramming, J. C. 1999. Special issue on Domain-Specific Languages. IEEE Trans. Softw. Eng. SE-25, 3 (May/June).]]Google ScholarGoogle Scholar
  153. Xiong, J., Johnson, J., Johnson, R. W., and Padua, D. A. 2001. SPL: A language and compiler for DSP algorithms. In Proceedings of the 2001 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'01). ACM, 298--308.]] Google ScholarGoogle Scholar

Index Terms

  1. When and how to develop domain-specific languages

    Recommendations

    Reviews

    Holger Giese

    Are you planning to decide whether your information technology strategy will put domain-specific languages (DSLs) or unified modeling language (UML) at its core__?__ Is your business or research affected by the current DSL hype__?__ Then take a break and read this wonderful paper. Rather than trying to predict the future (at which we usually fail terribly), this paper provides a thorough analysis of the past. The analysis of existing examples for DSLs is condensed into a number of patterns that cover the when and how for the development of a DSL. The patterns support the decision, analysis, design, implementation, and deployment steps during the development of a DSL. For each pattern, examples are presented that demonstrate the relevance of the pattern. The paper also has a?probably deliberately left open?deficiency: it restricts itself to a programming language view of the world and does not even make an attempt to cover or discuss modeling languages or model-driven development. However, the paper shows its real value in being applicable to the former DSL or UML question. There is a pattern for DSL design suggesting language exploitation that could include piggybacking, specialization, or extension, and a pattern proposing language invention. The question is not DSL or UML, but when to apply which pattern for DSL design. You have to evaluate for each specific case whether UML profiling, with its specialization and extension mechanisms, or language invention is more appropriate. Online Computing Reviews Service

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader