I coordinate and / or participate in the development of several software prototypes and tools. All this development activity aims supporting empirical investigations about the nature and the quality of software, as well as disseminating and transferring the results of my research work. Here I provide short presentations and pointers to these different software projects.


Open source software tool for the automatic amplification of unit test cases. This tool implements the complete process of transformation, selection and evaluation of a set of unit test cases. The tool is implemented in Java and can amplify test cases implemented in JUnit. It is developed in the context of the STAMP project.

All sources are available on Github.


Open source web site, which has two essential purposes: inform the public about browser fingerprinting, through a collection of publications and web resources that explain and discuss this new technology; collect data for our research work about a counter-measure, based on software diversity, against tracking through fingerprinting.

All sources are available here: Github repo for amiunique.

Software diversification tool-box

In the context of the DIVERSIFY project, I coordinate the development of a tool-box to analyze, transform, test and automatically generate software diversity. The main components include a set of source code transformations to synthesize sosies of Java programs, a tool to perform and evaluate source code transformations, a lightweight library to instrument Java source code, used to collect fine-grained data about the interactions between a test suite and a program under test.

More details can be found in the paper published at ISSTA’14, as well as in our recent tech report.
All projects are available here: diversification toolbox on github.

Mitigating browser fingerprinting through proactive platform diversification

We develop a tool called Blink, which leverages virtualization and modular architectures to automatically assemble and reconfigure software components at multiple levels. We operate on operating systems, browsers, fonts and plugins. This work is the first application of software reconfiguration to build a moving target defense against browser fingerprint tracking. The main objective is to automatically modify the fingerprint a platform exhibits.

More details can be found in the paper published at SEAMS’15, and all sources and documentation are available here: Blink with Docker on github.

Automatic amplification of JUnit test suites

DSpot is a tool for test suite amplification. It automatically applies mutations to the JUnit test code to enter the unspecified input domain. In parallel, it analyzes the assertions of the test suite to retrieve as many observation points on the public API as possible. Hence, amplification combines the automatic exploration of the input domain with the systematic sensing of the observation domain. More details are available here.

All sources are available here: Github repo for DSpot.

Generic approach for model slicing

Kompren is a DSML to model model slicers for a particular domain (captured in a metamodel). The knowledge gained from practical experience and current model slicers, lead to the design choices of the Kompren language. The primary objective of Kompren is the selection of classes and properties in an input metamodel. Kompren promotes the definition of slicers that slice all necessary elements to make the slice a valid instance of the input metamodel. Kompren also facilitates the relaxation of the conformance required by the input metamodel. Kompren offers a set of language features to generate model slicers that can still be parameterized to process the model slice for a specific purpose.

More details can be found in the paper published at MODELS’11, and the source code is available at the Kompren web page.

Automatic selection of test configurations in the context of software product lines

The Pacogen tool allows the generation of minimal-sized set of configurations ensuring the pairwise covering of a feature model. Pairwise testing is a well-known testing approach that requires every pair of input parameters to be considered in a test set. Applying this testing criterion to feature models consists in considering each pair of possible feature to be included in a set of test configurations, valid for the feature model.

More details can be found in the paper published at ICST’11, and the source code is available at the PACOGEN.

This version of the tool is not maintained anymore. The core algorithms, along with a model slicing tool, had been integrated in the test generation tool for embedded systems developed by our industrial collaborator.

A generic tool for model composition

This tool, called Kompose, supports the integration of automatic composition capacities in any domain-specific languages. It implements a generic structural composition operator that can be specialized to a particular modeling language described by a metamodel. This version provides specialization example for Ecore, UML2 and RDBSchema models compositions. Additional examples can be found as models to be composed and composition directives.

More details can be found in the paper published at EDOC’07, and the source code is available at the KOMPOSE web page.

This version of the tool is not maintained anymore. The core algorithms, composition operators and directives have been transfered into the systems engineering tool box of our industrial collaborator.