Symfinder: Identifying and visualizing variability implementations in variability-rich Java systems
Résumé
In many variability-intensive systems, variability is implemented in code units provided by a host language, such as classes or functions, which do not align well with the domain features. Annotating or creating an orthogonal decomposition of code in terms of features implies extra effort, as well as massive and cumbersome refactoring activities. Symfinder implements an approach for identifying and visualizing the variability implementation places within the main decomposition structure of object-oriented code assets in a single variability-rich Java system. We use symmetry, as a common property of some main implementation techniques, such as inheritance or overloading, to identify uniformly these places. We use such symmetries to find variation points with variants. Symfinder automatically identifies and visualizes places with symmetry.