DEMRAL is a Domain Engineering method for developing algorithmic libraries. The characteristics are:

  • Main concepts are captured as ADTs and algorithms that operate on the ADTs
  • The ADTs often have container-like properties
  • There is usually a well developed underlying mathematical theory
  • The ADTs and the algorithms usually come in large varieties.

Outline of DEMRAL

1. Domain Analysis
1.1 Domain Definition
1.1.1 Goal and Stakeholder Analysis
1.1.2 Domain Scoping and Context Analysis Analysis of application areas and existing systems Identification of domain features identification of relationships to other domains
1.2 Domain Modeling
1.2.1 Identification of key concepts
1.2.2 Feature modeling of the key concepts
2. Domain Design
2.1 Identification of the overall implementation architecture.
2.2 Identification and specification of domain-specific languages.
3. Domain Implementation

Domain Analysis

Domain Definition

The first activity is the identification of goals and stakeholders. The complexity of this activity depends on the size and the context of the project.
The next activity is to determine the scope and characterize the contents of the domain by defining its domain features. The results of the analysis of the application areas are summarized in a domain feature diagram.
It is essential to establish a domain dictionary and a register of sources of domain knowledge. As the analysis progresses, both the dictionary and the register need to be updated.
Finally, we analyze related domains such as analogy or support domains,.

Domain Modeling

Identification of Key Concepts

Feature Modeling of the Key Concepts

Domain Design

Domain Design Activities

Identify packages

Identify User DSLs

  • Configuration DSLs: Used to configure ADTs and algorithms
  • Expression DSLs: Used for writing expressions involving ADTs and operations on them.

Identify Interactions Between DSLs

Scope DSLs

Specify DSLs

Configuration DSLs

Expresion DSLs

Domain Implementation

ADTs, operations and algorithms can be implemented using parameterized functions, parameterized classes and mixin layers (i.e the GenVoca model).

The implementation of configuration generators and expression optimizations require static metaprogramming capabilities (e.g template metaprogramming ).

Domain-specific syntax extensions require proprocessors, custom compilers or extendible compilers.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.