symfinder Demos

This site references all demos of the symfinder toolchain.


symfinder Demos

symfinder

symfinder is a toolchain built in order to automatically identify and visualize symmetries in object-oriented systems written in Java. These symmetries are helping in determining variation points and variants in large code structures.

It is composed of four distinct parts:

  • sources fetching
  • C++ sources preprocessing
  • symmetry identification
  • visualization

toolchain Click on the image to view full size

Sources fetching

symfinder is able to clone projects versioned under git and checkout the desired tags and/or commits using Bash and Python scripts.

C++ sources preprocessing

When analysing a C++ project, sources may contain macros that are potentially used to implement variability. These macros then need to be expanded to be able to detect such variability implementations. First, the macros definitions are identified and extracted using an ANTLR grammar. Then, the C preprocessor uses these definitions to expand macro calls.

Symmetry identification

This part is the heart of the toolchain. A Java engine parses the classes of the projects using Eclipse JDT parser and builds a graph representation of the source code in a Neo4j graph database. Then, local symmetries are identified and added to the graph database.

Visualization

Once all the symmetries have been identified, a subpart of the graph is exported in JSON and used as input for the D3.js visualization. We chose not to directly use the visualization provided by Neo4j as a D3.js visualization is written in JavaScript and hence only needs a web browser to be displayed. Furthermore, D3.js provides plethora of chart types and customization features.

Demos and experiments

SPLC 2019

Analysed projects:

SPLC 2019 community projects

VaMoS 2020

SPLC 2020

SPLC 2020 community projects

Analyzed C++ projects

Documents

Publications

  • Xhevahire Tërnava, Johann Mortara, and Philippe Collet. 2019. Identifying and Visualizing Variability in Object-Oriented Variability-Rich Systems. In 23rd International Systems and Software Product Line Conference - Volume A (SPLC ’19), September 9–13, 2019, Paris, France. ACM, New York, NY, USA, 12 pages.
    Download the preprint paper here.

  • Johann Mortara, Xhevahire Tërnava, and Philippe Collet. 2019. symfinder: A Toolchain for the Identification and Visualization of Object-Oriented Variability Implementations. In 23rd International Systems and Software Product Line Conference - Volume B (SPLC ’19), September 9–13, 2019, Paris, France. ACM, New York, NY, USA, 6 pages.
    Download the preprint paper here.

  • Johann Mortara, Xhevahire Tërnava, and Philippe Collet. 2020. Mapping Features to Automatically Identified Object-Oriented Variability Implementations: The case of ArgoUML-SPL. In Proceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems (VaMoS ’20), February 5–7, 2020, Magdeburg, Germany. ACM, New York, NY, USA, 9 pages.
    Download the preprint paper here.

  • Johann Mortara, Philippe Collet, and Xhevahire Tërnava. 2020. Identifying and Mapping Implemented Variabilities in Java and C++ Systems using symfinder. In 24th International Systems and Software Product Line Conference (SPLC ’20), October 19–23, 2020, Montréal, Canada. ACM, New York, NY, USA, 4 pages. Download the preprint paper here.

Presentations

Get symfinder

You can get symfinder on its GitHub repository.

Contact Us

Johann Mortara

Université Côte d’Azur, CNRS, I3S
Sophia Antipolis, France
johann [dot] mortara [at] univ-cotedazur [dot] fr