An analysis of inheritance hierarchy evolution

Wood, Murray and Ivanov, Lyubomir and Lamprou, Zenon (2019) An analysis of inheritance hierarchy evolution. In: EASE 2019 - Evaluation and Assessment in Software Engineering, 2019-04-16 - 2019-04-17. (https://doi.org/10.1145/3319008.3319023)

[thumbnail of Wood-etal-EASE2019-An-analysis-of-inheritance-hierarchy-evolution]
Preview
Text. Filename: Wood_etal_EASE2019_An_analysis_of_inheritance_hierarchy_evolution.pdf
Accepted Author Manuscript

Download (1MB)| Preview

Abstract

This research investigates the evolution of object-oriented inheritance hierarchies in open source, Java systems. The paper contributes an understanding of how hierarchies, particularly large complex hierarchies, evolve in ‘real world’ systems. It informs object-oriented design practices that aim to control or avoid these complicated design structures. The study is based on a detailed analysis of 665 inheritance hierarchies drawn from a total of 262 versions of 10 open source systems. The research contributions include that: i) the majority of inheritance hierarchies are ‘simple’ in structure and remain that way throughout their lifetimes ii) the majority of hierarchies are stable in terms of size and shape throughout their lifetimes iii) there is a minority of large, complex, branching ‘Subtree’ hierarchies that continue to grow ever more complicated as the systems evolve iv) a detailed analysis of some of these larger hierarchies finds evidence of ‘good’ object-oriented design practices being used but also highlights the significant challenges involved in understanding and refactoring these complex structures. There is clear evidence that some of the complex hierarchies are emphasising reuse while others appear focused on type inheritance.