Architectural Decay Prediction from Evolutionary History of Software

[RevealDroid Approach]

As a software system evolves, its architecture tends to decay, leading to the occurrence of defects or architectural elements that become resistant to maintenance. To address this problem, engineers can significantly benefit from determining which architectural elements will decay before that decay actually occurs. Forecasting decay allows engineers to take steps to prevent decay, such as focusing maintenance resources on the architectural elements most likely to decay. To that end, we construct novel models that predict the quality of an architectural element by utilizing multiple architectural views (both structural and semantic) and architectural metrics as features for prediction. We conduct an empirical study using our prediction models on 38 versions of five systems. Our findings show that we can predict low architectural quality, i.e., architectural decay, with high performance—even for cases of decay that suddenly occur in an architectural module. We further report the factors that best predict architectural quality.

To access our prediction scripts in R format and data in CSV format, please visit our corresponding GitHub page.

To obtain the recovered architectures we used in Rigi Standard Format, please visit this GitHub page.

Another option for using our scripts and data is leveraging the virtual machine we provide here. The virtual machine is in VirtualBox's format and runs Ubuntu 16.04. The arch_prediction/ directory in the user's home directory contains our scripts, data, and recovered architectures. This machine contains the PerRelease/ directory which has our R scripts, bash scripts, and data sets. It also has the RSFFiles/ directory, which contains the recovered architectures that we used. The password for the login user is simply a without the quotes.



[seal's logo]
[uci's logo]