Abstract
Domain-Specific languages (DSL) have many potential advantages in terms of software engineering ranging from increased productivity to the application of formal methods. Although they have been used in practice for decades, there has been little study of methodology or implementation tools for the DSL approach. In this paper, we present our DSL approach and its application to a realistic domain: the generation of video display device drivers. The presentation focuses on the validation of our proposed framework for domain-specific languages, from design to implementation. The framework leads to a flexible design and structure, and provides automatic generation of efficient implementations of DSL programs. Additionally, we describe an example of a complete DSL for video display adaptors and the benefits of the DSL approach for this application. This demonstrates some of the generally claimed benefits of using DSLs: increased productivity, higher-level abstraction, and easier verification. This DSL has been fully implemented with our approach and is available. Compose project URL: http://www.irisa.fr/compose/gal.
- B.R.T. Arnold A. van Deursen and M. Res, “An Algebraic Specification of a Language Describing Financial Products,” Proc, IEEE Workshop Formal Methods Application in Software Eng., pp. 6–13, Apr. 1995.]]Google Scholar
- J. Bentley, “Programming Pearls: Little Languages,” Comm. ACM, pp. 711–716, Aug. 1986.]] Google ScholarDigital Library
- H.K. Berg W.E. Boebert W.R. Franta and T.G. Moher, Formal Methods of Program Verification and Specification. Englewood Cliffs, N.J: Prentice Hall, 1982.]]Google Scholar
- J.A. Bergstra and P. Klint, “The ToolBus Coordination Architecture,” Proc. First Int'l Conf. Coordination and Models, Cesena, Italy, Lecture Notes in Computer Science, vol. 1,061, pp. 75–88, 1996.]] Google ScholarDigital Library
- E. Bjarnason, “Applab: A Laboratory for Application Languages,” L. Bendix, K. Nrmark, and K. Sterby, eds., Proc. Nordic Workshop Programming Environment Research, Technical Report R-96-2019, Aalborg Univ., May 1996.]]Google Scholar
- G. Booch, Software Components with Ada. Benjamin/Cummings, 1987.]] Google ScholarDigital Library
- J. Bosch and G. Hedin, eds., Proc. Workshop Compiler Techniques for Application Domain Languages and Extensible Language Models, Linköping, Technical Report 96-173, Lund Univ., Apr. 1996.]]Google Scholar
- S. Chandra and J. Larus, “Experience with a Language for Writing Coherence Protocols,” Proc. First USENIX Conf. Domain-Specific Languages, Santa Barbara, Calif., Oct. 1997.]] Google ScholarDigital Library
- J.G. Cleaveland, “Building Application Generators,” IEEE Software, July 1988.]] Google ScholarDigital Library
- C. Consel L. Hornof J. Lawall R. Marlet G. Muller J. Noyé S. Thibault and N. Volanschi, “Tempo: Specializing Systems Applications and Beyond,” ACM Computing Surveys, Symp. Partial Evaluation, 1988, to appear.]] Google ScholarDigital Library
- C. Consel L. Hornof F. Nol J. Noy and E.N. Volanschi, “A Uniform Approach for Compile-Time and Run-Time Specialization,” Danvy et al., eds., Partial Evaluation Int'l Seminar, Dagstuhl Castle, pp. 54-72, Feb. 1996.]] Google ScholarDigital Library
- C. Consel and F. Nol, “A General Approach for Run-Time Specialization and Its Application to C,” Proc. Conf. Record of the 23rd ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 145–156, St. Petersburg Beach, Fla., Jan. 1996.]] Google ScholarDigital Library
- O. Danvy R. Glck, and P. Thiemann, eds., Partial Evaluation, International Seminar, Dagstuhl Castle, Lecture Notes in Computer Science 1,110, Feb. 1996.]] Google ScholarDigital Library
- C. Elliott, “Modeling Interactive 3D and Multimedia Animation with an Embedded Language,” Proc. First USENIX Conf. Domain-Specific Languages, Santa Barbara, Calif., Oct. 1997.]] Google ScholarDigital Library
- N.K. Gupta L.J. Jagadeesan E.E. Koutsofios and D.M. Weiss, “Auditdraw: Generating Audits the Fast Way,” Proc. Third IEEE Symp. Requirements Eng., pp. 188–197, Jan. 1997.]] Google ScholarDigital Library
- N.D. Jones, “An Introduction to Partial Evaluation,” ACM Computing Surveys, vol. 28, no. 3, pp. 480–503, Sept. 1996.]] Google ScholarDigital Library
- N.D. Jones, “What Not to do When Writing an Interpreter for Specialisation,” Danvy et al., eds., Proc. Partial Evaluation International Seminar, Dagstuhl Castle, pp. 216-237, Feb. 1996.]] Google ScholarDigital Library
- N.D. Jones C. Gomard and P. Sestoft, Partial Evaluation and Automatic Program Generation, Int'l Series in Computer Science, Englewood Cliffs, N.J.: Prentice Hall, June 1993.]] Google ScholarDigital Library
- S. Kamin and D. Hyatt, “A Special-Purpose Language for Picture-Drawing,” Proc. First USENIX Conf. Domain-Specific Languages Santa Barbara, Calif., Oct. 1997.]] Google ScholarDigital Library
- R. Kieburtz L. McKinney J. Bell J. Hook A. Kotov J. Lewis D. Oliva T. Sheard I. Smith and L. Walton, “A Software Engineering Experiment in Software Component Generation,” Proc. 18th IEEE Int'l Conf. Software Eng, ICSE-18, pp. 542–553, 1996.]] Google ScholarDigital Library
- D. Ladd and C. Ramming, “Two Application Languages in Software Production,” USENIX Symp. Very High Level Languages New Mexico, Oct. 1994.]] Google ScholarDigital Library
- R. Marlet S. Thibault and C. Consel, “Mapping Software Architectures to Efficient Implementations via Partial Evaluation,” Proc. Conf. Automated Software Eng., pp. 183–192, Lake Tahoe, Nev., IEEE Computer Society, Nov. 1997.]] Google ScholarDigital Library
- R. McCain, “Reusable Software Component Construction: A Product-Oriented Paradigm,” Proc. Fifth AiAA/ACM/NASA/IEEE Computers in Aerospace Conf., Long Beach, Calif., Oct. 1985.]]Google ScholarCross Ref
- G. Necula, “Proof-Carrying Code,” Conf. Record 24th Symp. Principles of Programming Languages, pp. 106–116, Paris, ACM Press, Jan. 1997.]] Google ScholarDigital Library
- J. Neighbors, “Software Construction Using Components,” PhD thesis, Univ. of Calif. at Irvine, 1980.]] Google ScholarDigital Library
- G.D. Plotkin, “A Structural Approach to Operational Semantics,” Univ. of Aarhus, Aarhus, Denmark, 1981.]]Google Scholar
- R. Prieto-Díaz, “Domain Analysis: An Introduction,” Software Eng. Notes, vol. 15, no. 2, Apr. 1990.]] Google ScholarDigital Library
- C. Pu A. Black C. Cowan J. Walpole and C. Consel, “Microlanguages for Operating System Specialization,” Proc. First ACM-SIGPLAN Workshop Domain-Specific Languages, wDSL'97, Paris, Jan. 1997.]]Google Scholar
- T. Romer D. Lee G. Voelker A. Wolman W. Wong J. Baer B. Bershad and H. Levy, “The Structure and Performance of Interpreters,” Proc. Seventh Int'l Conf. Architectural Support for Programming Languages and Operating Systems, pp. 150–159, Oct. 1996.]] Google ScholarDigital Library
- S. Thibault and C. Consel, “A Framework for Application Generator Design,” Proc. Symp. Software Reusability, Boston, Mass., May 1997.]] Google ScholarDigital Library
- S. Thibault C. Consel and G. Muller, “Safe and Efficient Active Network Programming,” Proc. 17th IEEE Symp. Reliable Distributed Systems, West Lafayette, Ind., Oct. 1998.]] Google ScholarDigital Library
- S. Thibault J. Marant and G. Muller, “Adapting Distributed Applications Using Extensible Networks,” Proc. 17th IEEE Conf. Distributed Computing Systems, Austin, Texas, May 1999.]] Google ScholarDigital Library
- A. van Deursen and P. Klint, “Little Languages: Little Maintenance?” Proc. First ACM-SIGPLAN Workshop Domain-Specific Languages, wDSL'97, Jan. 1997.]]Google Scholar
- First ACM-SIGPLAN Workshop Domain-Specific Languages, Paris, France, Computer Science Technical Report, Univ. of Illinois at Urbana-Champaign, Jan. 1997.]]Google Scholar
- B.W. Weide and W.F. Ogden, “Recasting Algorithms to Encourage Reuse,” IEEE Software, vol. 11, no. 5, Sept. 1994.]] Google ScholarDigital Library
- The XFree86 Project, http://www. xfree86. org/.]]Google Scholar
Index Terms
- Domain-Specific Languages: From Design to Implementation Application to Video Device Drivers Generation
Recommendations
Everything old is new again: quoted domain-specific languages
PEPM '16: Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program ManipulationWe describe a new approach to implementing Domain-Specific Languages(DSLs), called Quoted DSLs (QDSLs), that is inspired by two old ideas:quasi-quotation, from McCarthy's Lisp of 1960, and the subformula principle of normal proofs, from Gentzen's ...
Testing domain-specific languages
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionThe Spoofax testing language provides a new approach to testing domain-specific languages as they are developed. It allows test cases to be written using fragments of the language under test, providing full IDE support for writing test cases and ...
Declaratively defining domain-specific language debuggers
GCPE '11Tool support is vital to the effectiveness of domain-specific languages. With language workbenches, domain-specific languages and their tool support can be generated from a combined, high-level specification. This paper shows how such a specification ...
Comments