University of Sheffield

Reusable Model Design Languages

Model specification, model transformation and code generation

The ReMoDeL Project

The ReMoDeL Project explores what the future of software engineering might look like, in which software systems are created automatically from design models. ReMoDeL offers a high-level design language for expressing different metamodels A metamodel defines a domain-specific language, consisting of concepts, properties and relationships; a model is an instance of a metamodel. and a related model transformation Model transformation is the process of converting one kind of model into another, using a set of declarative model transformation rules. language for transforming models of one kind into another. ReMoDeL provides Java-based tools that process the metamodels and model transformations, converting these into executable Java packages. Models, which are instances of a particular metamodel, may be read, written or transformed using the model transformation rules, which are expressed as functional mappings from one metamodel to another.

The Approach

The current version of ReMoDeL uses a bespoke concept modelling language, whose influences include object-oriented design, pure functional programming and OCL. The designer may create a metamodel for a particular domain, capturing the concepts, properties and relationships in this domain. The designer may create multiple metamodels for different domains, such as UML, ERM and SQL, and then provide model transformations between these domains. For example, a UML class diagram can be transformed into a pre-normal ERM. This may be transformed into a normalised ERM. Finally, this may be transformed into a SQL database schema. This describes a chain of model transformations, from high- to low-level models, where the last model may be submitted to a code generator.

Grand Challenge

The context for the ReMoDeL Project is an attempt to tackle some of the outstanding Grand Challenges in software engineering. These include the following themes:

Reusable pieces of design
  • Model-Driven Engineering (MDE): is the idea that, in future, software systems will not be constructed by writing lines of program code, but at a higher level of abstraction, using appropriate design models.
  • Program-It-Yourself (PIY): is the idea that, in future, business end-users should be able to specify the kinds of systems that they need, using domain-specific languages tailored to express their requirements directly.
  • Scrap-Heap Challenge (SHC): is the idea that, in future, software will be cannibalised from existing systems, but not at the code-level, rather at the model-level, from which new systems will be automatically generated.
  • Self-Verification and Test (SVT): is the idea that, in future, models will be correct-by-construction, and generated code will be automatically tested against the models, and be self-monitoring for correct runtime behaviour.
  • Hit the Moving Target (HMT): is the idea that the software tools and methods used to assemble systems will be agile and flexible enough to achieve all the above, while the system's requirements are constantly changing.
  • Business as Usual (BAU): is the idea that, no matter what changes are made to the system, business data will be kept safe and there will be no interruptions to normal service.