Software evolution is a multifaceted subject. For example, engineers can focus on the plain historical aspects that describe how the codebase of a system changes over time, using tools like SvnStat, Ohloh or more extravagant solutions like Code Swarm and Gource. It is also possible to look at how the quality and maintainability of the project rises and falls over a project's lifetime. Squale and Sonar are examples of tools used for this purpose. Finally insights on the structure and quality of the code itself can be gathered by exploiting a wide range of code metrics. Our Facets of Software Evolution application brings together these different facets of software evolution in one place, harnessing the functionality and flexibility of SOFAS to provide different interactive software evolution views or 'facets' of a project. In fact, SOFAS provides a great deal of different analyses that can be used and combined to examine the quality and evolution of a software system. However, it still lacks effective ways to visualize the data produced. Our application aims exactly at filling this gap. Starting from just a version control repository URL, it combines different SOFAS analyses to reconstruct a detailed view on the history and quality of the software project being studied. As of now three facets have been implemented. In the following, we briefly describe each of them:
This is the default view shown to anyone visiting the analysis page of any project. It includes 3 different visualizations:
Entity Metrics Facet
This view contains two different browsers that can be used to explore every major version of the system (its packages and classes) and view a wide range of associated metrics and disharmonies:
Project Evolution Facet
This view illustrates the history of the project ever since the very first commit to give an overall impression on how the project has evolved since its inception. Unlike the other views, here the data is not presented per-release but for the entire project's lifetime. It uses two visualizations:
When visiting the main web page of the Facets front-end, the visitor is presented with the simple submission form shown underneath. The user needs to enter only the URL of the project repository, select if it’s a git or SVN repository, and give a name for the analysis request. The analysis request is submitted by the click of a button. The back-end first does some automatic sanity checks on the repository and if successful, the user is supplied with two URLs. Both lead to the new analysis page, however one of the links contains an additional argument that contains a token. Using the link with the token will allow the visitor to delete the analysis. With this simple method, only the creator of an analysis can delete it, without the need for a user registration form or a user database.