Domains and Domain Specific Languages
The Kennedy Carter approach to MDA is founded on partitioning a system into domains, but it does not prescribe any specific formalism for representing each domain. Developers are encouraged to specify each domain using the most suitable formalism, often Executable UML but sometimes a domain-specific language (DSL). Selection of the language for each domain will be influenced by a number of factors including:
- the ability of the chosen language to represent domain concepts at the right level of abstraction;
- availability of tooling;
- availability of language expertise;
- availability of pre-existing components modelled in that language.
The figure below shows a cutdown domain model for a military aircraft system, in which three different domains are modelled using three different notations, each being the most appropriate for that domain.
Kennedy Carter has always advocated this approach to model driven development, and our support for integration with other commonly used modelling tools such as MATLAB and MatrixX has been in existence for many years.
Combining DSLs with xUML
We also work with our clients and DSL tool vendors to provide a coherent process, with appropriate tooling, to support use of a user-defined DSL in conjunction with xUML. In the example illustrated below, a number of "generic", or data-driven domains are modelled using xUML. The data with which those domains are populated are specified using appropriate domain-specific languages.
The figure below shows the components of a toolchain to support a process based upon DSLs and xUML:
This approach allows users to capitalise on the respective strengths of each modelling formalism, specifically:
- DSLs allow us to model at our chosen level of abstraction, and enforce domain-specific rules and policies;
- Mapping the DSL to xUML allows us to:
- Use off-the-shelf UML model simulators to execute the system, either domain-by-domain or as a collection of domains;
- exploit the wide range of mature, industry-standard, off-the-shelf UML code generators;
- Represent all domain interfaces in a consistent way using UML ports and connectors;
- Capture domain knowledge in a tool portable form using a universally understood, industry standard, formalism.
Summary
The value of DSLs for certain types of system has been widely demonstrated. However, construction of industry strength model simulators and code generators can be very expensive and time-consuming. Our approach combines use of DSLs with xUML to reduce the risk of DSL adoption by allowing use of mature, proven xUML simulators and code generators.



