This Article 
 Bibliographic References 
 Add to: 
Domain-Specific Languages: From Design to Implementation Application to Video Device Drivers Generation
May/June 1999 (vol. 25 no. 3)
pp. 363-377

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:

[1] 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.
[2] J. Bentley, “Programming Pearls: Little Languages,” Comm. ACM, pp. 711–716, Aug. 1986.
[3] 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.
[4] 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.
[5] 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.
[6] G. Booch, Software Components with Ada. Benjamin-Cummings, 1987.
[7] 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.
[8] 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.
[9] J.G. Cleaveland, “Building Application Generators,” IEEE Software, July 1988.
[10] C. Consel et al., "Tempo: Specializing Systems Applications and Beyond," ACM Computing Surveys/Symp. on Partial Evaluation, Volume30, ACM Press, New York, 1998.
[11] C. Consel et al., "A Uniform Approach for Compile-Time and Runtime Specialization," Partial Evaluation International Seminar, Selected Papers, O. Danvy, R. Glück, and P. Thiemann, eds., No. 1110in Lecture Notes in Computer Science, Springer Verlag, New York, 1996, pp. 54-72.
[12] 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.
[13] O. Danvy, R. Glck, and P. Thiemann, eds., Partial Evaluation, International Seminar, Dagstuhl Castle, Lecture Notes in Computer Science 1,110, Feb. 1996.
[14] C. Elliott, “Modeling Interactive 3D and Multimedia Animation with an Embedded Language,” Proc. First USENIX Conf. Domain-Specific Languages, Santa Barbara, Calif., Oct. 1997.
[15] N. Gupta et al., "Auditdraw: Generating Audits the FAST Way," Proc. Third IEEE Int'l Symp. Requirements Eng., IEEE, Piscataway, N.J., Jan. 1997, to appear.
[16] N.D. Jones, “An Introduction to Partial Evaluation,” ACM Computing Surveys, vol. 28, no. 3, pp. 480–503, Sept. 1996.
[17] N.D. Jones, “WhatNotto do When Writing an Interpreter for Specialisation,” Danvy et al., eds., Proc. Partial Evaluation International Seminar, Dagstuhl Castle, pp. 216-237, Feb. 1996.
[18] 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.
[19] S. Kamin and D. Hyatt, “A Special-Purpose Language for Picture-Drawing,” Proc. First USENIX Conf. Domain-Specific Languages Santa Barbara, Calif., Oct. 1997.
[20] 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.
[21] D. Ladd and C. Ramming, “Two Application Languages in Software Production,” USENIX Symp. Very High Level Languages New Mexico, Oct. 1994.
[22] 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.
[23] 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.
[24] G. Necula, “Proof-Carrying Code,” Conf. Record 24th Symp. Principles of Programming Languages, pp. 106–116, Paris, ACM Press, Jan. 1997.
[25] J. Neighbors, "Software Construction Using Components," PhD thesis, ICS-TR-160, Univ. of California at Irvine, 1980.
[26] G.D. Plotkin, “A Structural Approach to Operational Semantics,” Univ. of Aarhus, Aarhus, Denmark, 1981.
[27] R. Prieto-Diaz, "Domain Analysis: An Introduction," ACM Sigsoft Software Eng. Notes, Vol. 15, No. 2, 1990, pp. 47-54.
[28] 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.
[29] 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.
[30] S. Thibault and C. Consel, “A Framework for Application Generator Design,” Proc. Symp. Software Reusability, Boston, Mass., May 1997.
[31] 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.
[32] S. Thibault, J. Marant, and G. Muller, “Adapting Distributed Applications Using Extensible Networks,” Proc. 17th IEEE Conf. Distributed Computing Systems, Austin, Texas, May 1999.
[33] A. van Deursen and P. Klint, “Little Languages: Little Maintenance?” Proc. First ACM-SIGPLAN Workshop Domain-Specific Languages, wDSL'97, Jan. 1997.
[34] First ACM-SIGPLAN Workshop Domain-Specific Languages, Paris, France, Computer Science Technical Report, Univ. of Illinois at Urbana-Champaign, Jan. 1997.
[35] B.W. Weide and W.F. Ogden, “Recasting Algorithms to Encourage Reuse,” IEEE Software, vol. 11, no. 5, Sept. 1994.
[36] The XFree86 Project, http://www. xfree86. org.

Index Terms:
GAL, video cards, device drivers, domain-specific language, partial evaluation.
Scott A. Thibault, Renaud Marlet, Charles Consel, "Domain-Specific Languages: From Design to Implementation Application to Video Device Drivers Generation," IEEE Transactions on Software Engineering, vol. 25, no. 3, pp. 363-377, May-June 1999, doi:10.1109/32.798325
Usage of this product signifies your acceptance of the Terms of Use.