GPCE Demonstration 22

Towards Domain-Driven Development: the SmartTools Software Factory

Didier Parigot, INRIA Sophia-Antipolis


Nowadays, software needs to be more open, flexible, and capable of evolving quickly to meet new user or technology requirements. It should be easy to adapt, even by none computer-specialists. To tackle these challenges for DSL (Domain-Specific language) tools, we have developed a software factory, named SmartTools.

One of the main ideas behind the design of SmartTools (and consequently behind the design of the generated DSL tools) is to model the business logic of each concern in a technology-free manner which can then be used to generate platform-specific code. The following four concerns have been taken into consideration:

  • The language data definition;
  • The semantics analysis frameworks that describe method signatures and traversal;
  • The graphical representation of the data;
  • And the component that links together all the tools of a DSL.

To offer open and adaptable tools, its design benefits from the following paradigms:

  • Generative programming;
  • Aspect-Oriented Software Development (AOSD);
  • Component programming;
  • Model-Driven Architecture (MDA);
  • Standard technologies (XML) and patterns (such as the visitor design
  • pattern).

SmartTools is heavily bootstrapped; that is, it internally uses its technology to develop its own models. Through the development of these models, our approach in integrating the mentioned paradigms and technologies has been intensively tested and refined. Since then, SmartTools has been used to produce tools for many diverse languages such as SVG, DTD, XML scheme, CSS, WSDL, and BPEL.

The SmartTools framework represents approximately 100 000 lines of Java source code before the generation stage and 1 000 000 lines after. This ratio shows the efficiency of this approach and validates this new development approach based on generative programming.

Before the demonstration, we will present the key features of SmartTools. Then during the demonstration, we will focus on how to define different tools for a DSL and show, for each concern, the benefits gained from using the mentioned paradigms and technologies. This demonstration is not only targeted at DSL tool developers, but also at people who want to understand how these new paradigms can be practically integrated into software.

Times and Locations

  • Tue, 26 Oct., 10.30 - 11.15, Exhibition Hall Demo Room 4
  • Thu, 28 Oct., 11.30 - 12.15, Exhibition Hall Demo Room 4