ERCIM News No.47, October 2001 [contents]
Domain Specific Languages
by Arie van Deursen and Jan Heering
CWI is developing tools and methods to support the effective use of domain specific languages in real life software engineering projects.
The challenge of software engineering is to create flexible, reliable, scalable and maintainable systems. To achieve this, the software engineer must apply a wide variety of tools and techniques. One of these is to take advantage of the underlying application domain, by means of a domain-specific language (DSL), which provides a notation that can be used to compose applications from a set of concepts tailored towards a specific application domain. Details of the underlying implementation platform are captured by knowledge built into the DSL compiler. This compiler can translate the DSL into, for example, executable code, calls to library routines, database transactions, or HTML forms.
The Risla language is a case in point. It was developed by CAP Gemini and MeesPierson, in cooperation with CWI. Given a description of the essential ingredients of an interest rate product (loan, swap, financial future, ...), the Risla compiler can generate data structures in VSAM format, data entry screens in CICS format, and COBOL routines for registering modifications in the product or for yielding management information. A DSL compiler relieves the user from unnecessary details and machine dependencies.
As a result, changes in the ICT infrastructure have to be accommodated only once in the DSL compiler. After re-compilation of all DSL programs, the desired infrastructure-related changes have been effectuated without making a single change to the DSL programs themselves. Contrast this with the traditional situation that domain-related knowledge and infrastructure-related knowledge are intermixed in the program code. The use of DSLs thus leads to greater flexibility and less maintenance.
The DSL project is carried out under the auspices of the Telematics Institute (TI) and has as goals to develop methods for selecting suitable DSL domains, and for capturing domain knowledge into a DSL and its compiler; to develop meta-tools for the rapid prototyping of domain-specific languages; and to gain more experience, via case studies, with the use of domain-specific languages in a commercial setting. Legacy applications are often a valuable (but hard to exploit) source of domain knowledge. Therefore, the DSL project takes legacy systems and software understanding tools as one of its point of departure. So far, we have gained experience with a variety of analysis and renovation problems, including documentation generation for (mostly COBOL-based) legacy systems (in cooperation with the Software Improvement Group, ABN AMRO, Roccade and others), and analysis of C and and SDL systems, both in cooperation with Lucent, partner in the national Telematics Institute (TI). In addition, we gained experience with a variety of DSLs: RISLA for the financial domain (in cooperation with TI-partner Cap Gemini), Sophus for writing partial differential equation solvers (in cooperation with University of Bergen, Norway), used for instance in the area of seismic modeling for oil exploration, and a router description language (in cooperation with TI-partner Lucent). Last but not least, major progress has been made with the development of tools and meta-tools as incorporated in the ASF+SDF Meta-Environment. Results of the project can be found at www.cwi.nl/projects/dsl/