Characterizing the Evolution of Size and Inheritance in Object-Oriented Software - de Sousa, Bruno Luan; Bigonha, Mariza Andrade da Silva; Ferreira, Kecia Aline Marques; Franco, Glaura da Conceição (Anais do Simpósio Brasileiro de Qualidade de Software (SBQS), 2021)
Software evolution consists of adapting, correcting, and updating a system. It is widely known that the systems became increasingly complex and challenging to be maintained over their evolution. However, the way the systems’ internal structure evolves is not known in detail. Understanding how the internal software structure evolves is essential to help developers better plan, manage, and perform software maintenance tasks. In this work, we present an empirical analysis to investigate how the internal structure of object-oriented systems evolves from the perspective of inheritance hierarchy and size. Besides, we analyzed the set of classes within the systems that affect these dimensions’ evolution and how such classes evolve. We used a methodology based on time series, linear regression techniques, and trend tests to analyze the evolution of object-oriented systems. Using this methodology, we identified the function that better explains how the size and the inheritance tree evolve. This study revealed eight software evolution properties, among them: inheritance hierarchy tends to increase in depth and decrease in breadth; inheritance hierarchy depth and the size of classes grow according to a linear model. The empirical evidence found in this work provides a fine-grained knowledge of how object-oriented software systems’ internal structure evolves from internal dimensions.