When and How To Develop Domain-Specific Languages
When and How To Develop Domain-Specific Languages
net/publication/200040446
CITATIONS READS
1,893 11,670
3 authors, including:
Marjan Mernik
University of Maribor
288 PUBLICATIONS 11,115 CITATIONS
SEE PROFILE
All content following this page was uploaded by Marjan Mernik on 03 June 2014.
JAN HEERING
CWI
AND
ANTHONY M. SLOANE
Macquarie University
Authors’ addresses: M. Mernik, Faculty of Electrical Engineering and Computer Science, University of Mari-
bor, Smetanova 17, 2000 Maribor, Slovenia; email: [email protected]; J. Heering, Department of Soft-
ware Engineering, CWI, Kruislaan 413, 1098 SJ Amsterdam, The Netherlands; email: [email protected];
A.M. Sloane, Department of Computing, Macquarie University, Sydney, NSW 2109, Australia; email:
[email protected].
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted
without fee provided that copies are not made or distributed for profit or direct commercial advantage and
that copies show this notice on the first page or initial screen of a display along with the full citation.
Copyrights for components of this work owned by others than ACM must be honored. Abstracting with
credit is permitted. To copy otherwise, to republish, to post on servers, to redistribute to lists, or to use any
component of this work in other works requires prior specific permission and/or a fee. Permissions may be
requested from Publications Dept., ACM, Inc., 1515 Broadway, New York, NY 10036 USA, fax: +1 (212)
869-0481, or [email protected].
2005
c ACM 0360-0300/05/1200-0316 $5.00
ACM Computing Surveys, Vol. 37, No. 4, December 2005, pp. 316–344.
When and How to Develop Domain-Specific Languages 317
Table II. Language Level vs. Productivity cost effective solution in many cases, the
as Measured in Function Points (FP) more so since the advent of component
Productivity Average technologies such as COM and CORBA
Level per Staff Month (FP)
1–3 5–10
[Szyperski 2002] has further complicated
4–8 10–20 the relative merits of DSLs and appli-
9–15 16–23 cation libraries. For instance, Microsoft
16–23 15–30 Excel’s macro language is a DSL for
24–55 30–50 spreadsheet applications which adds pro-
> 55 40–100
grammability to Excel’s fundamental in-
teractive mode. Using COM, Excel’s imple-
et al. 2005]. A GPL in combination with mentation has been restructured into an
an application library can only express application library of COM components,
these constructs indirectly or in an awk- thereby opening it up to GPLs such as
ward way. Again, a DSL would incorpo- C++, Java, and Basic which can access
rate domain-specific constructs from the it through its COM interfaces. This pro-
start. cess of componentization is called automa-
tion [Chappell 1996]. Unlike the Excel
—Use of a DSL offers possibilities for anal-
macro language, which by its very nature
ysis, verification, optimization, paral-
is limited to Excel functionality, GPLs are
lelization, and transformation in terms
not. They can be used to write applica-
of DSL constructs that would be much
tions transcending Excel’s boundaries by
harder or unfeasible if a GPL had been
using components from other automated
used because the GPL source code pat-
programs and COM libraries in addition
terns involved are too complex or not
to components from Excel itself.
well defined.
In the remainder of this section, we dis-
—Unlike GPLs, DSLs need not be exe- cuss DSL executability (Section 1.2), DSLs
cutable. There is no agreement on this as enablers of reuse (Section 1.3), the scope
in the DSL literature. For instance, the of this article (Section 1.4), and DSL liter-
importance of nonexecutable DSLs is ature (Section 1.5).
emphasized in Wile [2001], but DSLs
are required to be executable in van
1.2. Executability of DSLs
Deursen et al. [2000]. We discuss DSL
executability in Section 1.2. DSLs are executable in various ways and
to various degrees even to the point of
Despite their shortcomings, application being nonexecutable. Accordingly, depend-
libraries are formidable competitors to ing on the character of the DSL in ques-
DSLs. It is probably fair to say that tion, the corresponding programs are often
most DSLs never get beyond the ap- more properly called specifications, defi-
plication library stage. These are some- nitions, or descriptions. We identify some
times called domain-specific embedded points on the DSL executability scale.
languages (DSELs) [Hudak 1996]. Even
with improved DSL development tools, ap- —DSL with well-defined execution seman-
plication libraries will remain the most tics (e.g., Excel macro language, HTML).
Notation. The availability of appropri- whose complexity may make them difficult
ate (new or existing) domain-specific no- to write and maintain. Such structures are
tations is the decisive factor in this case. often more easily expressed using a DSL.
Two important subpatterns are: Data structure traversal. Traversals over
—Transform visual to textual notation. complicated data structures can often be
There are many benefits to making an expressed better and more reliably in a
existing visual notation available in tex- suitable DSL.
tual form such as easier composition of System front-end. A DSL-based front-end
large programs or specifications, and en- may often be used for handling a system’s
abling of the AVOPT decision pattern configuration and adaptation.
discussed next.
—Add user-friendly notation to an existing Interaction. Text- or menu-based interac-
API or turn an API into a DSL. tion with application software often has
to be supplemented with an appropriate
AVOPT. Domain-specific analysis, verifi- DSL for the specification of complicated
cation, optimization, parallelization, and or repetitive input. For example, Excel’s
transformation of application programs interactive mode is supplemented with
written in a GPL are usually not feasi- the Excel macro language to make Excel
ble because the source code patterns in- programmable.
volved are too complex or not well de- GUI construction. This is often done using
fined. Use of an appropriate DSL makes a DSL.
these operations possible. With continuing
developments in chip-level multiprocess-
ing (CMP), domain-specific parallelization 2.3. Analysis
will become steadily more important In the analysis phase of DSL development,
[Kuck 2005]. This pattern overlaps with the problem domain is identified and do-
most of the others. main knowledge is gathered. Inputs are
Task automation. Programmers often various sources of explicit or implicit do-
spend time on GPL programming tasks main knowledge, such as technical docu-
that are tedious and follow the same ments, knowledge provided by domain ex-
pattern. In such cases, the required code perts, existing GPL code, and customer
can be generated automatically by an surveys. The output of domain analysis
application generator (compiler) for an varies widely but consists basically of
appropriate DSL. domain-specific terminology and seman-
tics in more or less abstract form. There
Product line. Members of a software
is a close link between domain analysis
product line [Weiss and Lay 1999] share and knowledge engineering which is only
a common architecture and are developed beginning to be explored. Knowledge cap-
from a common set of basic elements. Use ture, knowledge representation, and on-
of a DSL may often facilitate their specifi- tology development [Denny 2003] are po-
cation. This pattern has considerable over- tentially useful in the analysis phase.
lap with both the task automation and sys- The analysis patterns we have iden-
tem front-end patterns. tified are shown in Table V. Exam-
Data structure representation. Data-driven ples are given in Table VI. Most of
code relies on initialized data structures the time, domain analysis is done
informally, but sometimes domain anal- formation must be specified directly in, or
ysis methodologies are used. Examples be derivable from, a DSL program. Termi-
of such methodologies are DARE (Do- nology and concepts are used to guide the
main Analysis and Reuse Environment) development of the actual DSL constructs
[Frakes et al. 1998], DSSA (Domain- corresponding to the variabilities. Com-
Specific Software Architectures) [Taylor monalities are used to define the execution
et al. 1995], FAST (Family-Oriented Ab- model (by a set of common operations) and
stractions, Specification, and Translation) primitives of the language. Note that the
[Weiss and Lay 1999], FODA (Feature- execution model of a DSL is usually much
Oriented Domain Analysis) [Kang et al. richer than that for a GPL. On the basis
1990], ODE (Ontology-based Domain of a single domain analysis, many differ-
Engineering) [Falbo et al. 2002], or ODM ent DSLs can be developed, but all share
(Organization Domain Modeling) [Simos important characteristics found in the fea-
and Anthony 1998]. To give an idea of ture model.
the scope of these methods, we explain For the sake of concreteness, we apply
the FODA and FAST methodologies in the FODA domain analysis methodology
somewhat greater detail. Tool support for [Kang et al. 1990] to the service combina-
formal domain analysis is discussed in tor DSL discussed in Cardelli and Davies
Section 3.2. [1999]. The latter’s goal is to reproduce
The output of formal domain analysis is human behavior, while accessing and ma-
a domain model consisting of nipulating Web resources such as reac-
tion to slow transmission, failures, and
—a domain definition defining the scope of
many simultaneous links. FODA requires
the domain,
construction of a feature model captur-
—domain terminology (vocabulary, ontol- ing commonalities (mandatory features)
ogy), and variabilities (variable features). More
—descriptions of domain concepts, specifically, such a model consists of
—feature models describing the common-
alities and variabilities of domain con- —a feature diagram representing a hier-
cepts and their interdependencies. archical decomposition of features and
their character, that is, whether they are
How can a DSL be developed from the in- mandatory, alternative, or optional,
formation gathered in the analysis phase? —definitions of the semantics of features,
No clear guidelines exist, but some are
presented in Thibault et al. [1999] and —feature composition rules describing
Thibault [1998]. Variabilities indicate pre- which combinations of features are valid
cisely what information is required to or invalid,
specify an instance of a system. This in- —reasons for choosing a feature.
that address domain concepts. In most designer must turn to specifying the
applications of this pattern, the existing design before implementation. We dis-
language features remain available. The tinguish between informal and formal
challenge is to integrate the domain- designs. In an informal design the spec-
specific features with the rest of the lan- ification is usually in some form of nat-
guage in a seamless fashion. ural language, probably including a set
At the other end of the spectrum is a of illustrative DSL programs. A formal
DSL whose design bears no relationship design consists of a specification writ-
to any existing language. In practice, de- ten using one of the available semantic
velopment of this kind of DSL can be ex- definition methods [Slonneger and Kurtz
tremely difficult and is hard to charac- 1995]. The most widely used formal no-
terize. Well-known GPL design criteria tations include regular expressions and
such as readability, simplicity, orthogonal- grammars for syntax specifications, and
ity, the design principles listed by Brooks attribute grammars, rewrite systems, and
[1996], and Tennent’s design principles abstract state machines for semantic
[1977] retain some validity for DSLs. How- specification.
ever, the DSL designer has to keep in mind Clearly, an informal approach is likely
both the special character of DSLs as well to be easiest for most people. A formal
as the fact that users need not be pro- approach should not be discounted, how-
grammers. Since ideally the DSL adopts ever. Development of a formal descrip-
established notations of the domain, the tion of both syntax and semantics can
designer should suppress a tendency to bring problems to light before the DSL is
improve them. As stated in Wile [2004], actually implemented. Furthermore, for-
one of the lessons learned from real DSL mal designs can be implemented automat-
experiments is: ically by language development systems
and tools, thereby significantly reducing
Lesson T2: You are almost never designing a the implementation effort (Section 3).
programming language. As mentioned in the beginning of this
Most DSL designers come from language design section, design patterns can be charac-
backgrounds. There the admirable principles of terized in terms of two orthogonal di-
orthogonality and economy of form are not nec- mensions: language invention or language
essarily well-applied to DSL design. Especially
exploitation (extension, specialization, or
in catering to the pre-existing jargon and nota-
tions of the domain, one must be careful not to
piggyback), and informal or formal de-
embellish or over-generalize the language. scription. Figure 2 indicates the po-
Lesson T2 Corollary: Design only what is nec- sition of the DSLs from Table VIII
essary. Learn to recognize your tendency to in the design pattern plane. We note
over-design. that formal description is used more of-
ten than informal description when a
Once the relationship to existing lan- DSL is designed using the language in-
guages has been determined, a DSL vention pattern. The opposite is true
Fig. 2. The DSLs from Table VIII in the design pattern plane.
when a DSL is designed using language Macros and subroutines are the classic
exploitation. language extension mechanisms used for
DSL implementation. Subroutines have
given rise to implementation by embed-
2.5. Implementation
ding, while macros are handled by pre-
2.5.1. Patterns. When an (executable) processing. A recent survey of macros
DSL is designed, the most suitable im- is given in Braband and Schwartzbach
plementation approach should be chosen. [2002]. Macro expansion is often indepen-
This may be obvious, but in practice it dent of the syntax of the base language,
is not, mainly because of the many DSL and the syntactical correctness of the ex-
implementation techniques that have no panded result is not guaranteed but is
useful counterpart for GPLs. These DSL- checked at a later stage by the interpreter
specific techniques are less well known, or compiler. This situation is typical for
but can make a big difference in the total preprocessors.
effort that has to be invested in DSL de- C++ supports a language-specific pre-
velopment. The implementation patterns processing approach, template metapro-
we have identified are shown in Table IX. gramming [Veldhuizen 1995b; Veldhuizen
We discuss some of them in more detail. 1995a]. It uses template expansion to
Examples are given in Table X. achieve compile-time generation of
Interpretation and compilation are as domain-specific code. Significant mileage
relevant for DSLs as for GPLs, even has been made out of template metapro-
though the special character of DSLs of- gramming to develop mathematical
ten makes them amenable to other, more libraries for C++ which have familiar do-
efficient implementation methods such as main notation using C++ user-definable
preprocessing and embedding. This view- operator notation and overloading but also
point is at variance with Spinellis [2001], achieve good performance. An example is
where it is argued that DSL develop- Blitz++ [Veldhuizen 2001].
ment is radically different from GPL de- In the embedding approach, a DSL is
velopment since the former is usually implemented by extending an existing
just a small part of a project, and hence GPL (the host language) by defining spe-
DSL development costs have to be mod- cific abstract data types and operators. A
est. This is not always the case, how- domain-specific problem can then be de-
ever, and interpreters and compilers or scribed with these new constructs. There-
application generators are widely used in fore, the new language has all the power
practice. of the host language, but an application
engineer can become a programmer with- [Guyer and Lin 2005]. Some extensible
out learning too much of it. To approxi- compilers such as OpenC++ [Chiba 1995],
mate domain-specific notations as closely support a metaobject protocol. This is
as possible, the embedding approach can an object-oriented interface for specifying
use any features for user-definable op- language extensions and transformations
erator syntax the host language has [Kiczales et al. 1991].
to offer. For example, it is common to The COTS-based approach builds a DSL
develop C++ class libraries where the around existing tools and notations. Typi-
existing operators are overloaded with cally this approach involves applying ex-
domain-specific semantics. Although this isting functionality in a restricted way,
technique is quite powerful, pitfalls exist according to domain rules. For exam-
in overloading familiar operators to have ple, the general-purpose Powerpoint tool
unfamiliar semantics. Although the host has been applied in a domain-specific
language in the embedding approach can setting for diagram editing [Wile 2001].
be any general-purpose language, func- The current prominence of XML-based
tional languages are often appropriate DSLs is another instance of this approach
as shown by many researchers [Hudak [Gondow and Kawashima 2002; Parigot
1998; Kamin 1998]. This is due to func- 2004]. For an XML-based DSL, grammar
tional language features such as lazy is described using a DTD or XML scheme
evaluation, higher-order functions, and where nonterminals are analogous to el-
strong typing with polymorphism and ements and terminals to data content.
overloading. Productions are like element definitions
Extending an existing language imple- where the element name is the left-hand
mentation can also be seen as a form side and the content model is the right-
of embedding. The difference is usually hand side. The start symbol is analogous
a matter of degree. In an interpreter to the document element in a DTD. Us-
or compiler approach, the implementa- ing a DOM parser or SAX (Simple API
tion would usually only be extended with for XML) tool, parsing comes for free.
a few features such as new data types Since the parse tree can be encoded in
and operators for them. For a proper em- XML as well, XSLT transformations can
bedding, the extensions might encompass be used for code generation. Therefore,
full-blown domain-specific language fea- XML and XML tools can be used to imple-
tures. In both settings, however, extend- ment a programming language compiler
ing implementations is often very diffi- [Germon 2001].
cult. Techniques for doing so in a safe Many DSL endeavors apply a number
and modular fashion are still the sub- of these approaches in a hybrid fash-
ject of much research. Since compilers are ion. Thus the advantages of different ap-
particularly hard to extend, much of this proaches can be exploited. For instance,
work is aimed at preprocessors and exten- embedding can be combined with user-
sible compilers allowing for the addition of defined domain-specific optimization in
domain-specific optimization rules and/or an extensible compiler, and the inter-
domain-specific code generation. We men- preter and compiler approach become in-
tion user-definable optimization rules in distinguishable in some settings (see next
the CodeBoost C++ preprocessor [Bagge section).
and Haveraaen 2003] and in the Simplicis-
simus GCC compiler plug-in [Schupp et al.
2.5.2. Implementation Trade-Offs. Advan-
2001], the IBM Montana extensible C++
tages of the interpreter and compiler or
programming environment [Soroker et al.
application generator approaches are:
1997], the user-definable optimization
rules in the GHC Haskell compiler [Pey-
ton Jones et al. 2001], and the exploita- —DSL syntax can be close to the notations
tion of domain-specific semantics of appli- used by domain experts,
cation libraries in the Broadway compiler —good error reporting is possible,
Table XI. Pattern Classification Proposed by patterns may apply, depending on the lan-
Spinellis [2001] guage exploitation subpattern used. A pig-
Pattern Class Description gyback or specialization design can be im-
Creational pattern DSL creation plemented using an interpreter, compiler
Structural pattern Structure of system or application generator, or preprocessor,
involving a DSL
Behavioral pattern DSL interactions but embedding or use of an extensible
compiler or interpreter are not suitable,
classification does not correspond in an they generate tools from language descrip-
obvious way to our classification in de- tions [Heering and Klint 2000]. The tools
cision, analysis, design, and implemen- generated may vary from a consistency
tation patterns. The latter are all basi- checker and interpreter to an integrated
cally creational, but cover a wider range of development environment (IDE), consist-
creation-related activities than Spinellis’s ing of a syntax-directed editor, a pret-
patterns. typrinter, an (incremental) consistency
The correspondence of Spinellis’s [2001] checker, analysis tools, an interpreter or
patterns with ours is shown in Table XV. compiler/application generator, and a de-
Since our patterns have a wider scope, bugger for the DSL in question (assum-
many of them have no counterpart in ing it is executable). As noted in Sec-
Spinellis’s classification. These are not tion 1.2, nonexecutable DSLs may also
shown in the right-hand column. We have benefit from various kinds of tool sup-
retained the terminology used by Spinellis port such as syntax-directed editors, pret-
whenever appropriate. typrinters, consistency checkers, and ana-
Another classification of DSL develop- lyzers. These can be generated in the same
ment approaches is given in Wile [2001], way.
namely, full language design, language Some of these systems support a spe-
extension, and COTS-based approaches. cific DSL design methodology, while others
Since each approach has its own pros and have a largely methodology-independent
cons, the author discusses them with re- character. For instance, Sprint [Consel
spect to three kinds of issues, DSL-specific, and Marlet 1998] assumes an interpreter
GPL support, and pragmatic support is- for the given DSL and then uses partial
sues. Finally, the author shows how a hy- evaluation to remove the interpretation
brid development approach can be used. overhead by automatically transforming
a DSL program into a compiled program.
3. DSL DEVELOPMENT SUPPORT Other systems, such as ASF+SDF [van
den Brand et al. 2001], DMS [Baxter et al.
3.1. Design and Implementation Support
2004], and Stratego [Visser 2003], would
As we have seen, DSL development is not only allow an interpretive definition
hard, requiring both domain knowledge of the DSL, but would also accept a trans-
and language development expertise. The formational or translational one. On the
development process can be facilitated by other hand, they might not support par-
using a language development system or tial evaluation of a DSL interpreter given
toolkit. Some systems and toolkits that a specific program.
have actually been used for DSL develop- The input into these systems is a de-
ment are listed in Table XVI. They have scription of various aspects of the DSL
widely different capabilities and are in that are developed in terms of special-
many different stages of development but ized metalanguages. Depending on the
are based on the same general principle: type of DSL, some important language
Table XVI. Some Language Development Systems and Toolkits That Have Been Used for DSL
Development
System Developer
ASF+SDF [van den Brand et al. 2001] CWI/University of Amsterdam
AsmL [Glässer et al. 2002] Microsoft Research, Redmond
DMS [Baxter et al. 2004] Semantic Designs, Inc.
Draco [Neighbors 1984] University of California, Irvine
Eli [Gray et al. 1992] University of Colorado, University of Paderborn,
Macquarie University
Gem-Mex [Anlauff et al. 1999] University of L’Aquila
InfoWiz [Nakatani and Jones 1997] Bell Labs/AT&T Labs
JTS [Batory et al. 1998] University of Texas at Austin
Khepera [Faith et al. 1997] University of North Carolina
Kodiyak [Herndon and Berzins 1988] University of Minnesota
LaCon [Kastens and Pfahler 1998] University of Paderborn
(LaCon uses Eli as back-end—see above)
LISA [Mernik et al. 1999] University of Maribor
metafront [Braband et al. 2003] University of Aarhus
Metatool [Cleaveland 1988] Bell Labs
POPART [Wile 1993] USC/Information Sciences Institute
SmartTools [Attali et al. 2001] INRIA Sophia Antipolis
smgn [Kienle and Moore 2002] Intel Compiler Lab/University of Victoria
SPARK [Aycock 2002] University of Calgary
Sprint [Consel and Marlet 1998] LaBRI/INRIA
Stratego [Visser 2003] University of Utrecht
TXL [Cordy 2004] University of Toronto/Queen’s University
at Kingston
Table XVII. Development Support Provided by syntax rules (an extension of BNF), con-
Current Language Development Systems and Toolkits ditional rewrite rules, or transition rules.
for DSL Development Phases/Pattern Classes
See, for instance, Slonneger and Kurtz
Development phase/
Pattern class Support Provided [1995] for further details.
Decision None The level of support provided by these
Analysis Not yet integrated—see systems in various phases of DSL develop-
Section 3.2 ment is summarized in Table XVII. Their
Design Weak main strength lies in the implementation
Implementation Strong
phase. Support of DSL design tends to be
weak. Their main assets are the metalan-
aspects are syntax, prettyprinting, consis- guages they support and, in some cases, a
tency checking, analysis, execution, trans- meta-environment to aid in constructing
lation, transformation, and debugging. It and debugging language descriptions but
so happens that the metalanguages used they have little built-in knowledge of lan-
for describing these aspects are them- guage concepts or design rules. Further-
selves DSLs for the particular aspect in more, to the best of our knowledge, none of
question. For instance, DSL syntax is usu- them provides any support in the analysis
ally described in something close to BNF, or decision phase. Analysis support tools
the de facto standard for syntax specifica- are discussed in Section 3.2.
tion (Table I). The corresponding tool gen- Examples of DSL development using
erated by the language development sys- the systems in Table XVI are given in
tem is a parser. Table XVIII. They cover a wide range of
Although the various specialized met- application domains and implementation
alanguages used for describing language patterns. The Box prettyprinting meta-
aspects differ from system to system, they language is an example of a DSL devel-
are often (but not always) rule based. For oped with a language development sys-
instance, depending on the system, the tem (in this case ASF+SDF) for later use
consistency of programs or scripts may as one of the metalanguages of the sys-
have to be checked in terms of attributed tem itself. This is common practice. The
Table XVIII. Examples of DSL Development using the Systems in Table XVI
System Used DSL Application Domain
ASF+SDF Box [van den Brand and Visser 1996] Prettyprinting
Risla [van Deursen and Klint 1998] Financial products
AsmL UPnP [UPnP 2003] Networked device protocol
XLANG [Thatte 2001] Business protocols
DMS (Various) [Baxter et al. 2004] Program transformation
(Various) [Baxter et al. 2004] Factory control
Eli Maptool [Kadhim and Waite 1996] Grammar mapping
(Various) [Pfahler and Kastens 2001] Class generation
Gem-Mex Cubix [Kutter et al. 1998] Virtual data warehousing
JTS Jak [Batory et al. 1998] Syntactic transformation
LaCon (Various) [Kastens and Pfahler 1998] Data model translation
LISA SODL [Mernik et al. 2001] Network applications
SmartTools LML [Parigot 2004] GUI programming
BPEL [Courbis and Finkelstein 2004] Business process description
smgn Hoof [Kienle and Moore 2002] Compiler IR specification
IMDL [Kienle and Moore 2002] Software reengineering
SPARK Guide [Levy 1998] Web programming
CML2 [Raymond 2001] Linux kernel configuration
Sprint GAL [Thibault et al. 1999] Video device drivers
PLAN-P [Thibault et al. 1998] Network programming
Stratego Autobundle [de Jonge 2002] Software building
CodeBoost [Bagge and Haveraaen 2003] Domain-specific C++ optimization
BRUNTINK, M., VAN DEURSEN, A., AND TOURWÉ, T. 2005. for designing programming languages. Comm.
Isolating idiomatic crosscutting concerns. In ACM 16, 83–90.
Proceedings of the International Conference on CREW, R. F. 1997. ASTLOG: A language for exam-
Software Maintenance (ICSM’05). IEEE Com- ining abstract syntax trees. In Proceedings of the
puter Society, 37–46. USENIX Conference on Domain-Specific Lan-
BUFFENBARGER, J. AND GRUELL, K. 2001. A language guages, 229–242.
for software subsystem composition. In IEEE CZARNECKI, K. AND EISENECKER, U. 2000. Generative
Proceedings of the 34th Hawaii International Programming: Methods, Techniques and Appli-
Conference on System Sciences. cations. Addison-Wesley.
CARDELLI, L. AND DAVIES, R. 1999. Service combina- DE JONGE, M. 2002. Source tree composition. In
tors for web computing. IEEE Trans. Softw. Eng. Software Reuse: Methods, Techniques, and Tools:
25, 3 (May/June), 309–316. 7th International Conference (ICSR-7), C. Gacek,
CHANDRA, S., RICHARDS, B., AND LARUS, J. R. 1999. Ed. Lecture Notes in Computer Science, vol.
Teapot: A domain-specific language for writing 2319. Springer-Verlag, 17–32.
cache coherence protocols. IEEE Trans. Softw. DEAN, M., SCHREIBER, G., VAN HARMELEN, F.,
Eng. 25, 3 (May/June), 317–333. HENDLER, J., HORROCKS, I., MCGUINNESS,
CHAPPELL, D. 1996. Understanding ActiveX and D. L., PATEL-SCHNEIDER, P. F., AND STEIN,
OLE. Microsoft Press. L. A. 2003. OWL Web Ontology Language
CHIBA, S. 1995. A metaobject protocol for C++. In Reference. Working draft, W3C (March).
Proceedings of the ACM Conference on Object- http://www.w3.org/TR/2003/WD-owl-ref-200303
Oriented Programming Systems, Languages, 31/.
and Applications (OOPSLA’95). ACM, 285– DENNY, M. 2003. Ontology building: A sur-
299. vey of editing tools. Tech. rep., XML.com.
CLEAVELAND, J. C. 1988. Building application gen- http://www.xml.com/lpt/a/2002/11/06/ontologies.
erators. IEEE Softw. 5, 4, 25–33. html.
CLEAVELAND, J. C. 2001. Program Generators Us- ELLIOTT, C. 1999. An embedded modeling lan-
ing Java and XML. Prentice-Hall. guage approach to interactive 3D and multime-
dia animation. IEEE Trans. Softw. Eng. 25, 3
CLEMENTS, J., FELLEISEN, M., FINDLER, R., FLATT, M.,
(May/June), 291–308.
AND KRISHNAMURTHI, S. 2004. Fostering little
languages. Dr. Dobb’s J. 29, 3 (March), 16–24. FAITH, R. E., NYLAND, L. S., AND PRINS, J. F. 1997.
CONSEL, C. AND MARLET, R. 1998. Architecturing Khepera: A system for rapid implementation of
domain specific languages. In Proceedings of the
software using a methodology for language de-
USENIX Conference on Domain-Specific Lan-
velopment. In Principles of Declarative Pro-
guages, 243–255.
gramming (PLILP’98/ALP’98), C. Palamidessi,
H. Glaser, and K. Meinke, Eds. Lecture Notes FALBO, R. A., GUIZZARDI, G., AND DUARTE, K. C. 2002.
in Computer Science, vol. 1490. Springer-Verlag, An ontological approach to domain engineering.
170–194. In Proceedings of the 14th International Con-
ference on Software Engineering and Knowledge
COPLIEN, J., HOFFMAN, D., AND WEISS, D. 1998. Com-
Engineering (SEKE’02). ACM, 351–358.
monality and variability in software engineer-
ing. IEEE Softw. 15, 6, 37–45. FELLEISEN, M., FINDLER, R., FLATT, M., AND KRISH-
NAMURTHI, S. 2004. Building little languages
CORDY, J. R. 2004. TXL—A language for program-
ming language tools and applications. In Pro- with macros. Dr. Dobb’s J. 29, 4 (April), 45–49.
ceedings of the 4th Workshop on Language De- FERTALJ, K., KALPIČ, D., AND MORNAR, V. 2002.
scriptions, Tools, and Applications (LDTA’04), Source code generator based on a proprietary
G. Hedin and E. van Wyk, Eds. Electronic Notes specification language. In Proceedings of the
in Theoretical Computer Science, vol. 110. Else- 35th Hawaii International Conference on System
vier, 3–31. http://www.sciencedirect.com/. Sciences.
COURBIS, C. AND FINKELSTEIN, A. 2004. Towards an FRAKES, W. 1998. Panel: Linking domain analysis
aspect weaving BPEL engine. In Proceedings with domain implementation. In Proceedings of
of the 3rd AOSD Workshop on Aspects, Compo- the 5th International Conference on Software
nents, and Patterns for Infrastructure Software Reuse. IEEE Computer Society, 348–349.
(ACP4IS), Y. Coady and D. H. Lorenz, Eds. Tech. FRAKES, W., PRIETO-DIAZ, R., AND FOX, C. 1998.
rep. NU-CCIS-04-04, College of Computer and DARE: Domain analysis and reuse environment.
Information Science, Northeastern University, Annals of Software Engineering 5, 125–141.
Boston, MA. GAMMA, E., HELM, R., JOHNSON, R., AND VLISSIDES, J.
ČREPINŠEK, M., MERNIK, M., JAVED, F., BRYANT, B. R., 1995. Design Patterns: Elements of Reusable
AND SPRAGUE, A. 2005. Extracting grammar Object-Oriented Software. Addison-Wesley.
from programs: evolutionary approach. ACM GERMON, R. 2001. Using XML as an intermedi-
SIGPLAN Notices 40, 4 (April), 39–46. ate form for compiler development. In XML
CRESPI-REGHIZZI, S., MELKANOFF, M. A., AND LICHTEN, Conference Proceedings. http://www. ideal-
L. 1973. The use of grammatical inference liance.org/papers/xml2001/index.html.
GIL, J. AND TSOGLIN, Y. 2001. JAMOOS—A domain- HUDAK, P. 1998. Modular domain specific lan-
specific language for language processing. J. guages and tools. In Proceedings of the 5th
Comput. Inform. Tech. 9, 4, 305–321. International Conference on Software Reuse
GILMORE, S. AND RYAN, M., Eds. 2001. Lan- (JCSR’98), P. Devanbu and J. Poulin, Eds. IEEE
guage Constructs for Describing Features— Computer Society, 134–142.
Proceedings of the FIREworks Workshop. JENNINGS, J. AND BEUSCHER, E. 1999.
Springer-Verlag. Verischemelog: Verilog embedded in Scheme. In
GLÄSSER, U., GUREVICH, Y., AND VEANES, M. 2002. An Proceedings of the 2nd USENIX Conference on
abstract communication model. Tech. rep. MSR- Domain-Specific Languages. 123–134.
TR-2002-55. Microsoft Research, Redmond, WA. JONES, C. 1996. SPR Programming Languages
GONDOW, K. AND KAWASHIMA, H. 2002. Towards Table Release 8.2, http://www.theadvisors.com/
ANSI C program slicing using XML. In Proceed- langcomparison.htm. (Accessed April 2005).
ings of the 2nd Workshop on Language Descrip- Later release not available at publication.
tions, Tools, and Applications (LDTA’02), M. G. J. JONES, N. D., GOMARD, C. K., AND SESTOFT, P. 1993.
van den Brand and R. Lämmel, Eds. Electronic Partial Evaluation and Automatic Program Gen-
Notes in Theoretical Computer Science, vol. eration. Prentice Hall.
65(3). Elsevier. http://www.sciencedirect.com/. KADHIM, B. M. AND WAITE, W. M. 1996. Maptool—
GOUGH, J. 2002. Compiling for the .NET Common Supporting modular syntax development. In
Language Runtime (CLR). Prentice Hall. Compiler Construction (CC’96), T. Gyimóthy, Ed.
GRANICZ, A. AND HICKEY, J. 2003. Phobos: Extend- Lecture Notes in Computer Science, vol. 1060.
ing compilers with executable language defini- Springer-Verlag, 268–280.
tions. In Proceedings of the 36th Hawaii Inter- KAMIN, S., Ed. 1997. DSL’97—1st ACM SIGPLAN
national Conference on System Sciences. Workshop on Domain-Specific Languages in As-
GRAY, J. AND KARSAI, G. 2003. An examination of sociation with POPL’97. University of Illinois
DSLs for concisely representing model traver- Computer Science Report.
sals and transformations. In Proceedings of the KAMIN, S. 1998. Research on domain-specific
36th Hawaii International Conference on System embedded languages and program genera-
Sciences. tors. Electro. Notes Theor. Comput. Sci. 14.
GRAY, R. W., LEVI, S. P., HEURING, V. P., SLOANE, http://www.sciencedirect.com/.
A. M., AND WAITE, W. M. 1992. Eli: A complete, KAMIN, S. AND HYATT, D. 1997. A special-purpose
flexible compiler construction system. Comm. language for picture-drawing. In Proceedings
ACM 35, 2 (Feb.), 121–130. of the USENIX Conference on Domain-Specific
GREENFIELD, J., SHORT, K., COOK, S., KENT, S., AND CRUPI, Languages, 297–310.
J. 2004. Software Factories: Assembling Ap- KANG, K. C., COHEN, S. G., HESS, J. A., NOVAK, W. E.,
plications with Patterns, Models, Frameworks, AND PETERSON, A. S. 1990. Feature-oriented
and Tools. John Wiley. domain analysis (FODA) feasibility study. Tech.
GUYER, S. Z. AND LIN, C. 1999. An annotation lan- rep. CMU/SEI-90-TR-21. Software Engineering
guage for optimizing software libraries. In Pro- Institute, Carnegie Mellon University.
ceedings of the 2nd USENIX Conference on KASTENS, U. AND PFAHLER, P. 1998. Compositional
Domain-Specific Languages, 39–52. design and implementation of domain-specific
GUYER, S. Z. AND LIN, C. 2005. Broadway: A com- languages. In IFIP TC2 WG 2.4 Working Con-
piler for exploiting the domain-specific seman- ference on System Implementation 2000: Lan-
tics of software libraries. In Proceedings of IEEE, guages, Methods and Tools, R. N. Horspool, Ed.
93, 2, 342–357. Chapman and Hall, 152–165.
KICZALES, G., DES RIVIERES, J., AND BOBROW, D. G.
HEERING, J. AND KLINT, P. 2000. Semantics of pro-
gramming languages: A tool-oriented approach. 1991. The Art of the Metaobject Protocol. MIT
ACM SIGPLAN Notices 35, 3 (March) 39–48. Press.
HERNDON, R. M. AND BERZINS, V. A. 1988. The re- KIEBURTZ, R. B., MCKINNEY, L., BELL, J. M., HOOK,
alizable benefits of a language prototyping lan- J., KOTOV, A., LEWIS, J., OLIVA, D. P., SHEARD,
guage. IEEE Trans. Softw. Eng. 14, 803–809. T., SMITH, I., AND WALTON, L. 1996. A soft-
ware engineering experiment in software
HICSS 2001. Proceedings of the 34th Hawaii component generation. In Proceedings of
International Conference on System Sciences the 18th International Conference on Soft-
(HICSS’34). IEEE. ware Engineering (ICSE’96). IEEE, 542–
HICSS 2002. Proceedings of the 35th Hawaii 552.
International Conference on System Sciences KIENLE, H. M. AND MOORE, D. L. 2002. smgn: Rapid
(HICSS’35). IEEE. prototyping of small domain-specific languages.
HICSS 2003. Proceedings of the 36th Hawaii J. Comput. Inform. Tech. 10, 1, 37–53.
International Conference on System Sciences KLARLUND, N. AND SCHWARTZBACH, M. 1999. A
(HICSS’36). IEEE. domain-specific language for regular sets of
HUDAK, P. 1996. Building domain-specific embed- strings and trees. IEEE Trans. Softw. Eng. 25,
ded languages. ACM Comput. Surv. 28, 4 (Dec). 3 (May/June), 378–386.
KRUEGER, C. W. 1992. Software reuse. ACM Com- NARDI, B. A. 1993. A Small Matter of Program-
puting Surveys 24, 2 (June), 131–183. ming: Perspectives on End User Computing. MIT
KUCK, D. J. 2005. Platform 2015 software: En- Press.
abling innovation in parallelism for the next NEIGHBORS, J. M. 1984. The Draco approach to con-
decade. Technology@Intel Magazine. http://www. structing software from reusable components.
intel.com/technology/magazine/computing IEEE Trans. Softw. Eng. SE-10, 5 (Sept.), 564–
/Parallelism-0405.htm . 574.
KUMAR, S., MANDELBAUM, Y., YU, X., AND LI, K. 2001. PARIGOT, D. 2004. Towards domain-driven devel-
ESP: A language for programmable devices. In opment: The SmartTools software factory. In
Proceedings of the ACM SIGPLAN Conference on Companion to the 19th Annual ACM SIG-
Programming Language Design and Implemen- PLAN Conference on Object-oriented Program-
tation (PLDI’01). ACM, 309–320. ming Systems, Languages, and Applications.
KUTTER, P. W., SCHWEIZER, D., AND THIELE, L. 1998. ACM, 37–38.
Integrating domain specific language design PEYTON JONES, S., TOLMACH, A., AND HOARE, T. 2001.
in the software life cycle. In Applied Formal Playing by the rules: Rewriting as a practical
Methods—FM-Trends 98, D. Hutter et al., Eds. optimisation technique in GHC. In Proceedings
Lecture Notes in Computer Science, vol. 1641. of the Haskell Workshop.
Springer-Verlag, 196–212. PFAHLER, P. AND KASTENS, U. 2001. Configuring
LAUNCHBURY, J., LEWIS, J. R., AND COOK, B. 1999. component-based specifications for domain-
On embedding a microarchitectural design lan- specific languages. In Proceedings of the 34th
guage within Haskell. ACM SIGPLAN No- Hawaii International Conference on System
tices 34, 9 (Sept.), 60–69. Sciences.
LENGAUER, C., BATORY, D., CONSEL, C., AND ODERSKY, M., RAYMOND, E. S. 2001. The CML2 language:
Eds. 2004. Domain-Specific Program Genera- Python implementation of a constraint-based
tion. Lecture Notes in Computer Science, vol. interactive configurator. In Proceeding of the
3016. Springer-Verlag. 9th International Python Conference. 135–142.
LEVY, M. R. 1998. Web programming in Guide. http://www.catb.org/ esr/cml2/cml2-paper.html.
Softw. Pract. Exper. 28, 1581–1603. RISI, W., MARTINEZ-LOPEZ, P., AND MARCOS, D. 2001.
MARTIN, J. 1985. Fourth-Generation Languages. Hycom: A domain specific language for hyper-
Vol. I: Principles, Vol II: Representative 4GLs. media application development. In Proceedings
Prentice-Hall. of the 34th Hawaii International Conference on
System Sciences.
MAUW, S., WIERSMA, W., AND WILLEMSE, T. 2004.
Language-driven system design. Int. J. Softw. ROSS, D. T. 1981. Origins of the APT language for
Eng. Knowl. Eng. 14, 1–39. automatically programmed tools. History of Pro-
MERNIK, M. AND LÄMMEL, R. 2001. Special issue on gramming Languages, R. L. Wexelblat Ed. Aca-
demic Press. 279–338.
domain-specific languages, Part I. J. Comput. In-
form. Techn. 9, 4. SALUS, P. H., Ed. 1998. Little Languages. Hand-
book of Programming Languages, vol. III.
MERNIK, M. AND LÄMMEL, R. 2002. Special issue on
MacMillan.
domain-specific languages, Part II. J. Comput.
Inform. Techn. 10, 1. SAMMET, J. E. 1969. Programming Languages:
History and Fundamentals. Prentice-Hall.
MERNIK, M., LENIČ, M., AVDIČAUŠEVIĆ, E., AND ŽUMER, V.
2000. Multiple attribute grammar inheritance. SARAIVA, J. AND SCHNEIDER, S. 2003. Embedding do-
Informatica 24, 3 (Sept.), 319–328. main specific languages in the attribute gram-
mar formalism. In Proceedings of the 36th
MERNIK, M., NOVAK, U., AVDIČAUŠEVIĆ, E., LENIČ, M., Hawaii International Conference on System Sci-
AND ŽUMER, V. 2001. Design and implementa- ences.
tion of simple object description language. In
SCHNARR, E., HILL, M. D., AND LARUS, J. R. 2001.
Proceedings of the 2001 ACM Symposium on Ap-
Facile: A language and compiler for high-
plied Computing (SAC’01). ACM, 590–594.
performance processor simulators. In Proceed-
MERNIK, M., ŽUMER, V., LENIČ, M., AND AVDIČAUŠEVIĆ, E. ings of the ACM SIGPLAN Conference on Pro-
1999. Implementation of multiple attribute gramming Language Design and Implementa-
grammar inheritance in the tool LISA. ACM tion (PLDI’01). ACM, 321–331.
SIGPLAN Notices 34, 6 (June), 68–75. SCHNEIDER, K. A. AND CORDY, J. R. 2002. AUI: A pro-
MOURA, J. M. F., PÜSCHEL, M., PADUA, D., AND DON- gramming language for developing plastic in-
GARRA, J. 2005. Special issue on program gen- teractive software. In Proceedings of the 35th
eration, optimization, and platform adaptation. Hawaii International Conference on System Sci-
Proceedings of the IEEE 93, 2. ences.
NAKATANI, L. AND JONES, M. 1997. Jargons and in- SCHUPP, S., GREGOR, D. P., MUSSER, D. R., AND
focentrism. 1st Acm SIGPLAN Workshop on LIU, S. 2001. User-extensible simplification—
Domain-Specific Languages. 59–74. http://www- Type-based optimizer generators. In Compiler
sal.cs.uiuc.edu/ kamin/dsl/papers/nakatani.ps. Construction (CC’01), R. Wilhelm, Ed. Lecture
Notes in Computer Science, vol. 2027. Springer- Reliable Distributed Systems. IEEE Computer
Verlag, 86–101. Society, 135–143.
SDL FORUM. 2000. MSC-2000: Interaction THIBAULT, S. A., MARLET, R., AND CONSEL, C. 1999.
for the new millenium. http://www.sdl- Domain-specific languages: From design to
forum.org/MSC2000present/index.htm. implementation—Application to video device
SIMOS, M. AND ANTHONY, J. 1998. Weaving the drivers generation. IEEE Trans. Softw. Eng. 25,
model web: A multi-modeling approach to con- 3, (May/June), 363–377.
cepts and features in domain engineering. In TRACZ, W. AND COGLIANESE, L. 1995. DOMAIN (DO-
Proceedings of the 5th International Conference main Model All INtegrated)—a DSSA domain
on Software Reuse. IEEE Computer Society, 94– analysis tool. Tech. rep. ADAGE-LOR-94-11. Lo-
102. ral Federal Systems.
SIRER, E. G. AND BERSHAD, B. N. 1999. Using pro- UPnP 2003. Universal Plug and Play Forum.
duction grammars in software testing. In Pro- http://www.upnp.org/.
ceedings of the 2nd USENIX Conference on USENIX 1997. Proceedings of the USENIX Con-
Domain-Specific Languages. 1–14. ference on Domain-Specific Languages.
SLOANE, A. M. 2002. Post-design domain-specific USENIX 1999. Proceedings of the 2nd USENIX
language embedding: A case study in the soft- Conference on Domain-Specific Languages
ware engineering domain. In Proceedings of the (DSL’99).
35th Hawaii International Conference on System
VAN DEN BRAND, M. G. J., VAN DEURSEN, A., HEERING,
Sciences.
J., DE JONG, H. A., DE JONGE, M., KUIPERS, T.,
SLONNEGER, K. AND KURTZ, B. L. 1995. Formal Syn- KLINT, P., MOONEN, L., OLIVER, P. A., SCHEERDER,
tax and Semantics of Programming Languages: J., VINJU, J. J., VISSER, E., AND VISSER, J.
A Laboratory Based Approach. Addison-Wesley. 2001. The ASF+SDF Meta-Environment: A
SMARAGDAKIS, Y. AND BATORY, D. 1997. DiSTiL: component-based language development envi-
A transformation library for data structures. ronment. In Compiler Construction (CC’01),
In Proceedings of the USENIX Conference on R. Wilhelm, Ed. Lecture Notes in Computer
Domain-Specific Languages. 257–270. Science, vol. 2027. Springer-Verlag, 365–370.
SMARAGDAKIS, Y. AND BATORY, D. 2000. Application http://www.cwi.nl/projects/MetaEnv.
generators. In Wiley Encyclopedia of Electrical VAN DEN BRAND, M. G. J. AND VISSER, E. 1996. Gen-
and Electronics Engineering Online, J. Webster, eration of formatters for context-free languages.
Ed. John Wiley. ACM Trans. Softw. Eng. Method. 5, 1–41.
SOROKER, D., KARASICK, M., BARTON, J., AND STREETER, VAN DEURSEN, A. AND KLINT, P. 1998. Little lan-
D. 1997. Extension mechanisms in Montana. guages: Little maintenance? J. Softw. Mainte-
In Proceedings of the 8th Israeli Conference on nance 10, 75–92.
Computer-Based Systems and Software Engi-
VAN DEURSEN, A. AND KLINT, P. 2002. Domain-
neering (ICCSSE’97). IEEE Computer Society,
119–128. specific language design requires feature de-
scriptions. J. Comput. Inform. Tech. 10, 1, 1–
SPINELLIS, D. 2001. Notable design patterns for 17.
domain-specific languages. J. Syst. Softw. 56, 91–
VAN DEURSEN, A., KLINT, P., AND VISSER, J. 2000.
99.
Domain-specific languages: An annotated bibli-
SUTCLIFFE, A. AND MEHANDJIEV, N. 2004. Spe-
ography. ACM SIGPLAN Notices 35, 6 (June),
cial issue on End-User Development. Comm.
26–36.
ACM 47, 9.
VAN ENGELEN, R. 2001. ATMOL: A domain-specific
SZYPERSKI, C. 2002. Component Software—
Beyond Object-Oriented Programming, 2nd Ed. language for atmospheric modeling. J. Comput.
Addison-Wesley/ACM Press. Inform. Techn. 9, 4, 289–303.
TAYLOR, R. N., TRACZ, W., AND COGLIANESE, L. 1995. VELDHUIZEN, T. L. 1995a. Expression templates.
Software development using domain-specific C++ Report 7, 5 (June) 26–31.
software architectures. ACM SIGSOFT Soft- VELDHUIZEN, T. L. 1995b. Using C++ template
ware Engineering Notes 20, 5, 27–37. metaprograms. C++ Report 7, 4 (May) 36–43.
TENNENT, R. D. 1977. Language design methods VELDHUIZEN, T. L. 2001. Blitz++ User’s Guide. Ver-
based on semantic principles. Acta Inf. 8, 97–112. sion 1.2 http://www .oonumerics.org/blitz/ man-
THATTE, S. 2001. XLANG: Web services for busi- ual/blitz.ps.
ness process design. Tech. rep. Microsoft. http:// VISSER, E. 2003. Stratego—Strategies for program
www.gotdotnet.com/team/xml wsspecs/xlang-c/. transformation. http://www.stratego-language.
THIBAULT, S. A. 1998. Domain-specific languages: org.
Conception, implementation and application. WANG, D. C., APPEL, A. W., KORN, J. L., AND SERRA, C. S.
Ph.D. thesis, University of Rennes. 1997. The Zephyr abstract syntax description
THIBAULT, S. A., CONSEL, C., AND MULLER, G. 1998. language. In Proceedings of the USENIX Con-
Safe and efficient active network programming. ference on Domain-Specific Languages, 213–
In Proceedings of the 17th IEEE Symposium on 28.
WEISS, D. AND LAY, C. T. R. 1999. Software Product experiments. Sci. Comput. Program. 51, 265–
Line Engineering. Addison-Wesley. 290.
WEXELBLAT, R. L., Ed. 1981. History of Program- WILE, D. S. AND RAMMING, J. C. 1999. Special is-
ming Languages. Academic Press. sue on Domain-Specific Languages. IEEE Trans.
WILE, D. S. 1993. POPART: Producer of Parsers Softw. Eng. SE-25, 3 (May/June).
and Related Tools. USC/Information Sci- XIONG, J., JOHNSON, J., JOHNSON, R. W., AND PADUA, D. A.
ences Institute. http:// mr.teknowledge.com 2001. SPL: A language and compiler for DSP
/wile/popart.html. algorithms. In Proceedings of the 2001 ACM SIG-
WILE, D. S. 2001. Supporting the DSL spectrum. PLAN Conference on Programming Language
J. Comput. Inform. Techn. 9, 4, 263–287. Design and Implementation (PLDI’01). ACM,
WILE, D. S. 2004. Lessons learned from real DSL 298–308.