A Runtime is the complete business software system desired by domain stakeholders. It is not a programming-language execution environment such as the JVM, .NET, or Node.js; those operate near the OS rather than representing domain-specific business software. A car-rental Runtime can include both the customer application for arranging rentals and employee point-of-sale systems for carrying out business processes. section 1.2
In a DSL-based approach, domain experts author precise DSL content in a Domain IDE. Its build system generates and builds much of the Runtime automatically, while developers implement the parts that cannot be specified in the DSL, plus build, deployment, and runtime configuration. The resulting behavior gives the DSL content its meaning. section 1.5 section 8.0
A Runtime codebase combines three kinds of work:
- Generated code corresponding directly to business knowledge captured as DSL content. section 8.0
- Handwritten code that integrates with generated code but cannot be expressed in the DSL. section 8.0
- Build configuration required to build, run, or deploy the Runtime artifact. section 8.0
Rental Runtime
A reference Runtime can be a React web app with a form for one Rental record. Its fields represent rental period, price before discount, discount, and price after discount; DSL amount and percentage values map to JavaScript Number values, while a date range uses a DateRange class. Business rules can replace an editable discount field with a computed display value. section 8.3 section 14.2.4
Figure 8.2 The organization of the Runtime’s codebase
Shows the split between business-knowledge code, supporting handwritten code, and build configuration in a Runtime codebase. section 8.0
