liveBook · Manning

Domain

As explained in Building User-Friendly DSLs

A bounded area of knowledge, activity, or business concern that a software system addresses.

A domain is a particular, focused area of knowledge. Domain experts inhabit or own it: they possess, shape, and extend its knowledge while sharing it with business stakeholders and others. section 1.4

A business domain is not fundamentally dependent on computers. Car rental, including computing rental prices, is a business domain; software supports cost effectiveness, efficiency, or regulatory compliance rather than being the core business. section 1.3.4

A domain is a strong candidate for a DSL-based approach when it has:

  • Substantial business knowledge with detailed relationships and connections. section 1.3.4
  • Multiple specification authors working from clearly identifiable concepts applied consistently. section 1.3.4
  • Expressive business logic, such as eligibility rules and discounts based on customer history. section 1.3.4

Car-rental domain

Employees who formulate price quotes, execute business processes, and safeguard regulatory compliance act as domain experts. They use domain-specific terms and notations that can develop into a DSL for specifying the Runtime. section 1.4 section 1.5

Figure 1.16 What is a domain?
figure

Use the diagram to distinguish the focused area of knowledge from its domain experts and surrounding business context. section 1.4

How Building User-Friendly DSLs covers it

How deep it goes
Defines domains, domain experts, and business domains, then identifies criteria for applying a DSL-based approach.
Examples
Uses car rental, price quotes, rental pricing, regulatory compliance, eligibility rules, and customer-history discounts.
What it assumes
Assumes no technical domain background and introduces domain experts, domain speak, ubiquitous language, and pre-DSL concepts.
What you can do after
Evaluate whether a business domain has sufficient structure and complexity to justify a DSL-based approach.
How it connects
Connects domain experts with ubiquitous language, DSLs, Domain IDEs, Runtime systems, and business domains.

Also explained in

Compare how 5 books explain domain →

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.