Wodel: a domain-specific language for model mutation

Wodel is a Domain-Specific Language for the specification and generation of model mutants.

Wodel is domain-independent, as it can be used to generate mutants of models conforming to arbitrary meta-models.

Wodel provides nine mutation primitives for object creation and deletion, reference redirection, attribute modification, cloning, and retyping (change the type of an object to one of its siblings types), among others.

The engine verifies that each generated mutant is a valid model (i.e., it conforms to the domain meta-model and satisfies its integrity constraints).

Enhanced mutation features

Wodel includes a mechanism to identify and avoid the generation of duplicated mutants. By default, mutant equivalence is syntactic, but users can provide their own equivalence criteria (e.g., behavioural) through extension points.

The execution of a Wodel program generates a registry of the applied mutations and the objects affected by them.

The IDE provides several metrics that can help in assessing whether a set of mutations is complete or has been correctly implemented.

Also to facilitate the testing of Wodel programs, the IDE permits the automatic synthesis of seed models.

It's development environment is extensible, permitting the incorporation of post-processors for different applications.

To get started, you can access a Wodel tutorial here.

Current Wodel extensions

This repository contains two Wodel extensions: The first consisting in the automated generation of exercises for particular domains (automata, class diagrams, electronic circuits, etc.). We call this extension Wodel-Edu.

This is a sample of a Wodel program that mutates a transition target of a Finite Automaton model:

generate 2 mutants
in "data/out/"
from "data/model/"
metamodel "http://dfaAutomaton/1.0"

with commands {
     modify target tar from one Transition to other State
}
The second extensions consists in the automated generation of mutation testing tools for modelling and programming languages, that we call Wodel-Test.

Wodel usage

You can specify when mutants are going to be generated inside a Wodel program with the blocks directive.

Also, you can mutate mutant models generated in a previous block, instead of mutating the seed models.

Furthermore, you can specify OCL constraints that will apply to generated mutants:

generate mutants
in "data/out/"
from "data/model/exercise1.model"
metamodel "http://dfaAutomaton/1.0"

with blocks {
    first {
         modify target tar from one Transition to other State [3]             
    } [2]
    second from first repeat=no {
         modify one State with { name = random-string(4,6)}
    } [3]
}
constraints {
    context State connected:: "isInitial or Set{self}->
            closure(s | Transition.allInstances()->
            select(t | t.tar=s)->collect(src))->exists(s | s.isInitial)"
}

Video demos

This is a short video demo of the Wodel framework:

Video demo of the Wodel tool mutation operator footprints:

Video demo of the Wodel tool seed model synthesis:

The Wodel research project was started by the miso research group in September 2013. In its initial stage, its main developer was Víctor López Rivero. Since March 2015, the project has been carried out by Pablo Gómez-Abajo, under the supervision of Esther Guerra and Juan de Lara, and, additionally, during his PhD. studies, of Mercedes G. Merayo.

At this point, we would like to thank the developers of the following frameworks, which we have used in order to develop Wodel:

  1. Automated generation and correction of diagram-based exercises for Moodle. Pablo Gómez-Abajo, Esther Guerra, Juan de Lara. In Computer Applications in Engineering Education (Wiley). 2023.
  2. Wodel-Edu: A tool for the generation and evaluation of diagram-based exercises. Pablo Gómez-Abajo, Esther Guerra, Juan de Lara. In Science of Computer Programming (Elsevier). 2023.
  3. Automatic test amplification for executable models. Faezeh Khorram, Erwan Bousse, Jean-Marie Mottu, Gerson Sunyé, Pablo Gómez-Abajo, Pablo C. Cañizares, Esther Guerra, Juan de Lara. In ACM/IEEE 25th International Conference on Model Driven Engineering Languages and Systems (MoDELS), Montreal, 2022.
  4. Wodel-Edu: An MDE solution for the generation and evaluation of diagram-based exercises. Pablo Gómez-Abajo, Andrés Rico-Fernández, Esther Guerra, Juan de Lara. In ACM/IEEE 24th International Conference on Model Driven Engineering Languages and Systems (MoDELS), Tokyo, 2021. Virtual. Best tool demo award.
  5. Mutation Testing for RoboChart. Robert M. Hierons, Maciej Gazda, Pablo Gómez-Abajo, Raluca Lefticaru, Mercedes G. Merayo. In Software Engineering for Robotics (Springer). pp.:3:1-16. 2021.
  6. Wodel-Test: A model-based framework for language-independent mutation testing. Pablo Gómez-Abajo, Esther Guerra, Juan de Lara, Mercedes G. Merayo. In Software and Systems Modeling (Springer), Vol 20 (June). pp.:767–793. 2021.
  7. Systematic engineering of mutation operators. Pablo Gómez-Abajo, Esther Guerra, Juan de Lara, Mercedes G. Merayo. In Journal of Object Technology, Vol 19 (October). pp.:3:1-16. 2020.
  8. A domain-specific language for model mutation. Pablo Gómez-Abajo. Thesis document. Doctor of Philosophy (PhD) in Computer Science and Engineering, 2020. Universidad Autónoma de Madrid. Excellent cum laude.
  9. Seed model synthesis for testing model-based mutation operators. Pablo Gómez-Abajo, Esther Guerra, Juan de Lara, Mercedes G. Merayo. In International Conference on Advanced Information Systems Engineering (CAiSE Forum), Grenoble. Virtual. Lecture Notes in Business Information Processing (Springer), Vol 386 (August). pp.:64-76. 2020.
  10. Mutation testing for DSLs (tool demo). Pablo Gómez-Abajo, Esther Guerra, Juan de Lara, Mercedes G. Merayo. In ACM SIGPLAN International Workshop on Domain-Specific Modeling (DSM 2019), Athens. 2019.
  11. A tool for domain-independent model mutation. Pablo Gómez-Abajo, Esther Guerra, Juan de Lara, Mercedes G. Merayo. In Science of Computer Programming (Elsevier), Vol 163 (October). pp.:85-92. 2018.
  12. A domain-specific language for model mutation and its application to the automated generation of exercises. Pablo Gómez-Abajo, Esther Guerra, Juan de Lara. In Computer Languages, Systems and Structures (Elsevier), Vol 49 (September). pp.:152-173. 2017.
  13. A DSL for model mutation and its applications to different domains. Pablo Gómez-Abajo. In Doctoral Symposium at the International Conference of Model-Driven Engineering Languages and Systems 2016 (MoDELS), Saint-Malo. 2016.
  14. A framework for the automated generation of exercises via model mutation. Pablo Gómez-Abajo. Final master's thesis. Master's Program (MSc) in ICT Research and Innovation, 2016. Universidad Autónoma de Madrid. Special mention.
  15. Wodel: a domain-specific language for model mutation. Pablo Gómez-Abajo, Esther Guerra, Juan de Lara. In ACM Symposium on Applied Computing 2016 (SAC), pp.:1968-1973, Pisa. 2016.

Acknowledgements

This work has been funded by the Spanish Ministry of Science (RTI2018-095255-B-I00, project "MASSIVE") and the R&D programme of Madrid (P2018/TCS-4314, project "FORTE").