Visualizing Variability Implemented with Object-Orientation and Code Clones: A Tale of Two Cities
Résumé
Understanding variability in large software systems poses significant challenges for developers, especially when variability is implemented within a single codebase using diverse language mechanisms like in TypeScript. In this language, one can implement variability with traditional Object-Oriented (OO) techniques, but also with dynamic loading mechanisms that organize different forms of clones in sub-directories and files serving as internal variants.
While certain approaches may facilitate partial identification or visualization, there exists no solution for handling all variability mechanisms simultaneously. In this paper, we propose an approach by detecting all mechanisms and integrating two city-based representations to visualize these implemented variabilities. The first representation adapts the VariCity visualization and focuses on OO variability with classes as buildings and usage relationships as streets. The second representation leverages a codebase analysis combined with a code clone detection technique to visualize the directory hierarchy as streets and files as circular districts with shades and colors to highlight cloning. Some visual mechanisms enable to display relevant relationships between them, unveiling patterns of cross-usage and variability architecture. We also report on the application of the tooled approach on several large open-source systems.
Origine | Fichiers produits par l'(les) auteur(s) |
---|