From the DSLAnnotatedBibliography: * Our definition of DomainSpecificLanguages inherits the vagueness of one of its defining terms: _problem domain_. Rather than attempting to define this volatile notion as well, we list and categorize a number of domains for which DSLs have actually been built. The DSLAnnotatedBibliography also refers to the "Domain as a set of systems" perspective adopted in the SoftwareReuse and DomainEngineering communities. ---- GenerativeProgrammingBook, p. 34, is more courageous, and defines a *domain* as _an area of knowledge_ which: * _is scoped to maximize the satisfaction of the requirements of its stakeholders_ * _includes a set of concepts and terminology understood by practitioners in that area; and_ * _includes the knowledge of how to build software systems (or parts of software systems) in that area_ ---- SemanticDesigns defines a *domain* as _a formal system of notation having a formal semantics_. Their DMSSoftwareReengineeringToolkit supports this notion directly, by enabling a DomainEngineer to define notations directly, and to define semantics via various means, including attribute evaluators for analyzers and program transformations as axioms and/or implementation methods. Typically one defines a domain for practical reasons, and so these tend to closely match the GenerativeProgrammingBook definition, above, in intent. ---- CategoryDSL | ArieVanDeursen - 11 May 2001