skip to main content
article

When and how to develop domain-specific languages

Published: 01 December 2005 Publication History

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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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/.]]
[9]
Barron, D. W. 2000. The World of Scripting Languages. John Wiley.]]
[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.]]
[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.]]
[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.]]
[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.]]
[14]
Bentley, J. L. 1986. Programming pearls: Little languages. Comm. ACM 29, 8 (August), 711--721.]]
[15]
Bergin, T. J. and Gibson, R. G., Eds. 1996. History of Programming Languages II. ACM Press.]]
[16]
Bertrand, F. and Augeraud, M. 1999. BDL: A specialized language for per-object reactive control. IEEE Trans. Softw. Eng. 25, 3, 347--362.]]
[17]
Biggerstaff, T. J. 1998. A perspective of generative reuse. Annals Softw. Eng. 5, 169--226.]]
[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.]]
[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.]]
[20]
Bosch, J. and Dittrich, Y. Domain-specific languages for a changing world. http://www.cs.rug.nl/bosch/articles.html.]]
[21]
Braband, C. and Schwartzbach, M. 2002. Growing languages with metamorphic syntax macros. ACM SIGPLAN Notices 37, 3 (March), 31--40.]]
[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/.]]
[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.]]
[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.]]
[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.]]
[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.]]
[27]
Cardelli, L. and Davies, R. 1999. Service combinators for web computing. IEEE Trans. Softw. Eng. 25, 3 (May/June), 309--316.]]
[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.]]
[29]
Chappell, D. 1996. Understanding ActiveX and OLE. Microsoft Press.]]
[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.]]
[31]
Cleaveland, J. C. 1988. Building application generators. IEEE Softw. 5, 4, 25--33.]]
[32]
Cleaveland, J. C. 2001. Program Generators Using Java and XML. Prentice-Hall.]]
[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.]]
[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.]]
[35]
Coplien, J., Hoffman, D., and Weiss, D. 1998. Commonality and variability in software engineering. IEEE Softw. 15, 6, 37--45.]]
[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/.]]
[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.]]
[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.]]
[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.]]
[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.]]
[41]
Czarnecki, K. and Eisenecker, U. 2000. Generative Programming: Methods, Techniques and Applications. Addison-Wesley.]]
[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.]]
[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/.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[51]
Frakes, W., Prieto-Diaz, R., and Fox, C. 1998. DARE: Domain analysis and reuse environment. Annals of Software Engineering 5, 125--141.]]
[52]
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.]]
[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.]]
[54]
Gil, J. and Tsoglin, Y. 2001. JAMOOS---A domain-specific language for language processing. J. Comput. Inform. Tech. 9, 4, 305--321.]]
[55]
Gilmore, S. and Ryan, M., Eds. 2001. Language Constructs for Describing Features---Proceedings of the FIREworks Workshop. Springer-Verlag.]]
[56]
Glässer, U., Gurevich, Y., and Veanes, M. 2002. An abstract communication model. Tech. rep. MSR-TR-2002-55. Microsoft Research, Redmond, WA.]]
[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/.]]
[58]
Gough, J. 2002. Compiling for the .NET Common Language Runtime (CLR). Prentice Hall.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[65]
Heering, J. and Klint, P. 2000. Semantics of programming languages: A tool-oriented approach. ACM SIGPLAN Notices 35, 3 (March) 39--48.]]
[66]
Herndon, R. M. and Berzins, V. A. 1988. The realizable benefits of a language prototyping language. IEEE Trans. Softw. Eng. 14, 803--809.]]
[67]
HICSS 2001. Proceedings of the 34th Hawaii International Conference on System Sciences (HICSS'34). IEEE.]]
[68]
HICSS 2002. Proceedings of the 35th Hawaii International Conference on System Sciences (HICSS'35). IEEE.]]
[69]
HICSS 2003. Proceedings of the 36th Hawaii International Conference on System Sciences (HICSS'36). IEEE.]]
[70]
Hudak, P. 1996. Building domain-specific embedded languages. ACM Comput. Surv. 28, 4 (Dec).]]
[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.]]
[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.]]
[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.]]
[74]
Jones, N. D., Gomard, C. K., and Sestoft, P. 1993. Partial Evaluation and Automatic Program Generation. Prentice Hall.]]
[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.]]
[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.]]
[77]
Kamin, S. 1998. Research on domain-specific embedded languages and program generators. Electro. Notes Theor. Comput. Sci. 14. http://www.sciencedirect.com/.]]
[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.]]
[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.]]
[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.]]
[81]
Kiczales, G., des Rivieres, J., and Bobrow, D. G. 1991. The Art of the Metaobject Protocol. MIT Press.]]
[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.]]
[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.]]
[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.]]
[85]
Krueger, C. W. 1992. Software reuse. ACM Computing Surveys 24, 2 (June), 131--183.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[91]
Levy, M. R. 1998. Web programming in Guide. Softw. Pract. Exper. 28, 1581--1603.]]
[92]
Martin, J. 1985. Fourth-Generation Languages. Vol. I: Principles, Vol II: Representative 4GLs. Prentice-Hall.]]
[93]
Mauw, S., Wiersma, W., and Willemse, T. 2004. Language-driven system design. Int. J. Softw. Eng. Knowl. Eng. 14, 1--39.]]
[94]
Mernik, M. and Lämmel, R. 2001. Special issue on domain-specific languages, Part I. J. Comput. Inform. Techn. 9, 4.]]
[95]
Mernik, M. and Lämmel, R. 2002. Special issue on domain-specific languages, Part II. J. Comput. Inform. Techn. 10, 1.]]
[96]
Mernik, M., Lenič, M., Avdičaušević, E., and Žumer, V. 2000. Multiple attribute grammar inheritance. Informatica 24, 3 (Sept.), 319--328.]]
[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.]]
[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.]]
[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.]]
[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.]]
[101]
Nardi, B. A. 1993. A Small Matter of Programming: Perspectives on End User Computing. MIT Press.]]
[102]
Neighbors, J. M. 1984. The Draco approach to constructing software from reusable components. IEEE Trans. Softw. Eng. SE-10, 5 (Sept.), 564--574.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[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.]]
[109]
Salus, P. H., Ed. 1998. Little Languages. Handbook of Programming Languages, vol. III. MacMillan.]]
[110]
Sammet, J. E. 1969. Programming Languages: History and Fundamentals. Prentice-Hall.]]
[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.]]
[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.]]
[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.]]
[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.]]
[115]
SDL Forum. 2000. MSC-2000: Interaction for the new millenium. http://www.sdl-forum.org/MSC2000present/index.htm.]]
[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.]]
[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.]]
[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.]]
[119]
Slonneger, K. and Kurtz, B. L. 1995. Formal Syntax and Semantics of Programming Languages: A Laboratory Based Approach. Addison-Wesley.]]
[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.]]
[121]
Smaragdakis, Y. and Batory, D. 2000. Application generators. In Wiley Encyclopedia of Electrical and Electronics Engineering Online, J. Webster, Ed. John Wiley.]]
[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.]]
[123]
Spinellis, D. 2001. Notable design patterns for domain-specific languages. J. Syst. Softw. 56, 91--99.]]
[124]
Sutcliffe, A. and Mehandjiev, N. 2004. Special issue on End-User Development. Comm. ACM 47, 9.]]
[125]
Szyperski, C. 2002. Component Software---Beyond Object-Oriented Programming, 2nd Ed. Addison-Wesley/ACM Press.]]
[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.]]
[127]
Tennent, R. D. 1977. Language design methods based on semantic principles. Acta Inf. 8, 97--112.]]
[128]
Thatte, S. 2001. XLANG: Web services for business process design. Tech. rep. Microsoft. http://www.gotdotnet.com/team/xml_wsspecs/xlang-c/.]]
[129]
Thibault, S. A. 1998. Domain-specific languages: Conception, implementation and application. Ph.D. thesis, University of Rennes.]]
[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.]]
[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.]]
[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.]]
[133]
UPnP 2003. Universal Plug and Play Forum. http://www.upnp.org/.]]
[134]
USENIX 1997. Proceedings of the USENIX Conference on Domain-Specific Languages.]]
[135]
USENIX 1999. Proceedings of the 2nd USENIX Conference on Domain-Specific Languages (DSL'99).]]
[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.]]
[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.]]
[138]
van Deursen, A. and Klint, P. 1998. Little languages: Little maintenance? J. Softw. Maintenance 10, 75--92.]]
[139]
van Deursen, A. and Klint, P. 2002. Domain-specific language design requires feature descriptions. J. Comput. Inform. Tech. 10, 1, 1--17.]]
[140]
van Deursen, A., Klint, P., and Visser, J. 2000. Domain-specific languages: An annotated bibliography. ACM SIGPLAN Notices 35, 6 (June), 26--36.]]
[141]
van Engelen, R. 2001. ATMOL: A domain-specific language for atmospheric modeling. J. Comput. Inform. Techn. 9, 4, 289--303.]]
[142]
Veldhuizen, T. L. 1995a. Expression templates. C++ Report 7, 5 (June) 26--31.]]
[143]
Veldhuizen, T. L. 1995b. Using C++ template metaprograms. C++ Report 7, 4 (May) 36--43.]]
[144]
Veldhuizen, T. L. 2001. Blitz++ User's Guide. Version 1.2 http://www.oonumerics.org/blitz/manual/blitz.ps.]]
[145]
Visser, E. 2003. Stratego---Strategies for program transformation. http://www.stratego-language.org.]]
[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.]]
[147]
Weiss, D. and Lay, C. T. R. 1999. Software Product Line Engineering. Addison-Wesley.]]
[148]
Wexelblat, R. L., Ed. 1981. History of Programming Languages. Academic Press.]]
[149]
Wile, D. S. 1993. POPART: Producer of Parsers and Related Tools. USC/Information Sciences Institute. http://mr.teknowledge.com/wile/popart.html.]]
[150]
Wile, D. S. 2001. Supporting the DSL spectrum. J. Comput. Inform. Techn. 9, 4, 263--287.]]
[151]
Wile, D. S. 2004. Lessons learned from real DSL experiments. Sci. Comput. Program. 51, 265--290.]]
[152]
Wile, D. S. and Ramming, J. C. 1999. Special issue on Domain-Specific Languages. IEEE Trans. Softw. Eng. SE-25, 3 (May/June).]]
[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.]]

Cited By

View all
  • (2024)A domain-specific language for managing ETL processesPeerJ Computer Science10.7717/peerj-cs.183510(e1835)Online publication date: 26-Jan-2024
  • (2024)Rule-Based DSL for Continuous Features and ML Models Selection in Multiple Sclerosis ResearchApplied Sciences10.3390/app1414619314:14(6193)Online publication date: 16-Jul-2024
  • (2024)Operational semantics in a domain-specific robot control language: A pedagogical use caseComputer Science and Information Systems10.2298/CSIS230709028S21:3(1077-1095)Online publication date: 2024
  • Show More Cited By

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

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Computing Surveys
ACM Computing Surveys  Volume 37, Issue 4
December 2005
111 pages
ISSN:0360-0300
EISSN:1557-7341
DOI:10.1145/1118890
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 December 2005
Published in CSUR Volume 37, Issue 4

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Domain-specific language
  2. application language
  3. domain analysis
  4. language development system

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)664
  • Downloads (Last 6 weeks)86
Reflects downloads up to 10 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)A domain-specific language for managing ETL processesPeerJ Computer Science10.7717/peerj-cs.183510(e1835)Online publication date: 26-Jan-2024
  • (2024)Rule-Based DSL for Continuous Features and ML Models Selection in Multiple Sclerosis ResearchApplied Sciences10.3390/app1414619314:14(6193)Online publication date: 16-Jul-2024
  • (2024)Operational semantics in a domain-specific robot control language: A pedagogical use caseComputer Science and Information Systems10.2298/CSIS230709028S21:3(1077-1095)Online publication date: 2024
  • (2024)Olay Sıra Çizgeleri için Alana Özgü Bir DilA Domain Specific Language for Event Sequence GraphsDeu Muhendislik Fakultesi Fen ve Muhendislik10.21205/deufmd.202426760726:76(49-58)Online publication date: 23-Jan-2024
  • (2024)Semantics Lifting for Syntactic SugarProceedings of the ACM on Programming Languages10.1145/36897588:OOPSLA2(1336-1361)Online publication date: 8-Oct-2024
  • (2024)Applying a Self-Extension Mechanism to DSLs for Establishing Model LibrariesProceedings of the 23rd ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3689484.3690732(29-43)Online publication date: 21-Oct-2024
  • (2024)DSLs in Racket: You Want It How, Now?Proceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695645(84-103)Online publication date: 17-Oct-2024
  • (2024)Compiled, Extensible, Multi-language DSLs (Functional Pearl)Proceedings of the ACM on Programming Languages10.1145/36746278:ICFP(64-87)Online publication date: 15-Aug-2024
  • (2024)An IEC 62443-security oriented domain specific modelling languageProceedings of the 19th International Conference on Availability, Reliability and Security10.1145/3664476.3670938(1-10)Online publication date: 30-Jul-2024
  • (2024)Driving Requirements Evolution by Engineers' OpinionsProceedings of the ACM/IEEE 27th International Conference on Model Driven Engineering Languages and Systems10.1145/3652620.3688566(920-929)Online publication date: 22-Sep-2024
  • Show More Cited By

View Options

Get Access

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media