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 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.
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: