symfinder Demos

This site references all demos of the symfinder toolchain.


Identification and Visualization of Variability Implementations in Object-Oriented Variability-Rich Systems: A Symmetry-Based Approach

symfinder’s source code

The source code of symfinder is available here (tag: jrn20).

Generated visualizations

The output visualizations of symfinder for the 16 projects are deployed here.

The output visualizations of symfinder for ArgoUML and Sat4j with traces mapping and hotspots are deployed here.

Ground truths

Here are the ground truths used for the mappings in ArgoUML and Sat4j. They contain the trace links of the domain features to their respective code assets.

ArgoUML’s ground truth is available here.

Sat4j’s ground truth is available here.

Mapping process

Details on the mapping process are available here.

symfinder’s artifacts

Current public release

The latest publicly released source code of the symfinder tool, tagged jrn20, is available for download at https://github.com/DeathStar3/symfinder.

symfinder usage guidelines

Here is the main project structure of symfinder.

project_structure

The numbers on the right side show the sequence of steps to reproduce any of the presented experiments.

The README.md file contains a detailed guide on the technical requirements, how to set up an experiment, to run it, and how to visualize the resulting data for analysis. This guide is valid for three operating systems, GNU/Linux, macOS Sierra 10.12 or newer, and Windows 10 64-bit (Pro, Enterprise or Education). The main requirements for the toolchain are Docker and Docker Compose, so to facilitate the overall portability.

The experiments.yaml file in is used to set up an experiment. It requires the git repository url of the targeted system with its tag ID or commit ID, for instance, the url of JUnit with tag r4.12. The provided file contains a default configuration that corresponds to all first sixteen analysed systems listed in the paper. Still, one can change the configuration to analyse another set of systems.

In and , build.sh and run.sh are the main scripts to build and run an experiment. Basically, run.sh downloads the sources of the targeted system and starts a Docker Compose environment, whereas visualization.sh in generates the visualization data. The downloaded copy of a system is saved locally in the resources folder, such as the junit-r4.12 subfolder in . Then, index.html is used to access the generated visualization of the identified variability for a targeted system (). It can be opened locally using a web browser, through http://localhost:8181.

The README.md file also contains a visualization example, which is annotated to explain the different elements of visualization.

symfinder’s identification method

symfinder relies on a Neo4j database to identify the symmetries. The Cypher requests used to query the database are listed here.