DSLs for building new software

We often use DSLs to build new software, here we explain at a high level how we do this.

by Paul Klint on 14 Mar 2020

Paul Klint

Most IT systems consist of closely interacting software components (applications/tools) that solve related problems in the same domain. Many components are based on the same domain elements.

In the banking domain this would include account, client, and interest rate. In the forensics domain file format and encryption would be prominent.

Building each software component from scratch will be expensive, error-prone and maintenance-intensive.

Using domain knowledge is the solution to these problems and it forms the centerpiece of the Swat.engineering Methodology:

Diagram

The whole process starts with an initial idea for new software. Our first step is to explore the domain and make a map of all the relevant concepts and their relationships.

Next, we design a domain-specific language (DSL) that captures the domain knowledge and allows to flexibly express desired functionality such as creating a bank account or decrypting a file. Using this DSL, the functionality of the desired software components can be described concisely. These component descriptions are at a high level and can be understood and reviewed by experts from other disciplines such as marketing, finance, legal and auditing.

These high-level descriptions are used for simulation, visualisation, validation, and feedback on each component. When done, code can be generated that turns the high level description in operational code.

And there you have it: software components are no longer black boxes but can be easily reviewed and checked. Even better: your next software component will be much simpler to create.

Contact us at [email protected] to discuss your specific situation.

Recent posts

Swat.engineering wants to help its customers deliver the right value. So we often start with a requirement analysis phase. This yields a requirement analysis report: How can we use the least amount of tools and overhead to focus on the essentials? We’ll show you how we use Google spreadsheets, Rascal, and HTML to generate interactive/traceable requirements. These requirements can not only guide a single software project but they can also be used to formulate a full project roadmap, see From Requirements to Roadmap (to be published).

Read More…

Most IT systems consist of closely interacting software components (applications/tools) that solve related problems in the same domain. Many components are based on the same domain elements. In the banking domain this would include account, client, and interest rate. In the forensics domain file format and encryption would be prominent. Building each software component from scratch will be expensive, error-prone and maintenance-intensive. Using domain knowledge is the solution to these problems and it forms the centerpiece of the Swat.

Read More…