What Is ADomain

Program-Transformation.Org: The Program Transformation Wiki
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