liveBook · Manning

Specification

As explained in Building User-Friendly DSLs

A formal description of the domain requirements and behavior that the DSL represents and from which working code is derived.

A specification is a precise, formal description of domain knowledge, requirements, and behavior written as DSL content. Domain experts maintain it in the Domain IDE, while the build system derives working Runtime code from it. section 1.3.1 section 1.2

The specification becomes a shared language between domain experts and software developers. Because it is machine processable, it can be checked for completeness and ambiguity, extended with tests, and changed with rapid feedback. section 1.3.2 section 1.3.3

A DSL specification enables teams to:

  • Let domain experts add or change Runtime features without manually translating every detail into code. section 1.3.1
  • Reduce repetitive implementation work when a specification change affects forms, database structures, classes, and related handling. section 1.3.2
  • Reuse precise business knowledge across Runtime architectures, technology stacks, or other purposes. section 1.3.3

Car-rental Runtime

A car-rental specification can drive a Runtime containing both the customer application for arranging rentals and the point-of-sale systems employees use to execute business processes. section 1.2

Figure 1.2 Using a DSL-based approach to develop a Runtime using a Domain IDE
figure

Trace how domain experts write DSL content in the Domain IDE and how that content produces a working Runtime. section 1.2

How Building User-Friendly DSLs covers it

How deep it goes
Explains authoring, generation, machine checking, tests, and reuse, but does not detail specification syntax.
Examples
Uses the car-rental Runtime, including a customer rental app and employee point-of-sale systems.
What it assumes
Assumes domain knowledge, while teaching domain experts to express it without manually translating every detail into code.
What you can do after
Apply it via the Domain IDE to write DSL content, test changes, and generate working Runtime code.
How it connects
Connects domain experts, the Domain IDE, DSL, build system, Runtime, machine checking, and tests.

Also explained in

Compare how 4 books explain specification →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Building User-Friendly DSLs. The section links point to the parts of the book it draws on.