This website provides supplementary material for the paper "Morpheus: Variability-Aware Refactoring in the Wild". The paper describes our experiences on the development and the evaluation of variability-aware refactorings of configurable systems written in C. To this end, we have developed three different refactorings that are common in modern development environments such as Eclipse and Visual Studio (Rename Identifier, Extract Function, Inline Function). To evaluate our approach, we applied different random refactorings to three industry-scale case studies, namely the BusyBox toolsuite (www.busybox.net), the relational database-management system SQLite (www.sqlite.org) and the cryptographic library OpenSSL (www.openssl.org).
The experiments in the paper were conducted with the Morpheus tool (Morpheus website). The specific version we used for the experiments is available here.
We provide the case studies on this page (BusyBox Case Study, SQLite Case Study, OpenSSL Case Study). If you are interested in the raw results of our experiments, they are also provided here (BusyBox, OpenSSL and SQLite).
In order to use the Morhpeus tool for yourself just follow these steps:
$ git clone https://github.com/aJanker/TypeChef.git
$ ./TypeChef/publish.sh
$ cd ..
$ git clone https://github.com/joliebig/Morpheus.git
$ cd Morpheus
$ ./mkrun.sh
$ ./morpheus.sh --showGui 'pathToCsourceFile'
Running example_a.c from the morpheus paper (put it in the Morpheus folder, change directory to Morpheus folder) for example:
$ ./morpheus.sh --showGui example_a.c
You can now select the whole line #8 in the program, right click and choose refactor -> rename -> rename global, enter a new name and Morpheus will correctly transform alle different definitions of 'global'.
![]() | ![]() |
Keep in mind that all file inclusion will be added into the output file. This means including
The paper "Morpheus: Variability-Aware Refactoring in the Wild" has been written by Jörg Liebig, Andreas Janker, Florian Garbe, Christian Lengauer, and Sven Apel. For questions regarding the paper, please contact the main author Jörg Liebig.
- Jörg Liebig (University of Passau)
- Andreas Janker (University of Passau)
- Florian Garbe (University of Passau)
- Christian Lengauer (University of Passau)
- Sven Apel (University of Passau)