Previous live blog post: Maintaining Invariant Traceability through Bidirectional Transformations
Iuliam Neamtiu (University of California at Riverside, USA) presented the work Graph-Based Analysis and Prediction for Software Evolution.
In this work, the authors analyzed the evolution of graphs about software (e.g., function call graphs, module relationships graphs, commit logs / bug reports graphs, etc.). Analyzing different versions of these graphs in time, they can predict the evolution of the software in terms of characteristics such as location of severe bugs, maintenance efforts, buggy releases, etc.
Neamtiu described some of the used predictors. One of them is called NodeRank and is based on Google’s idea of PageRank. Predicting bug severity using NodeRank is useful for test prioritization, verification, etc. Another predictor is ModularityRation, which can predict the maintenance effort for a given module based on module relationship graphs (cohesion and coupling of modules). This predictor is useful to identifying modules that need reorganization/refactoring.
A third predictor presented is EditDistance, which is based on developer collaboration graphs. This predictor is calculated with the difference between number of nodes (developers) and edges (interactions) for one version of a software to the next. This distance can be used to predict bug count and is useful for release planning and resource allocation.
They also use topology metrics such as graph diameter, clustering coefficient, assortativity, number of nodes in cycles, etc. to understand the evolution of a given software, identifying pivotal moments in software evolution.
Data from the analyses performed using 11 large, long-lived open source projects are available in the author’s website.