An analysis of inheritance hierarchy evolution

Murray Wood, Lyubomir Ivanov, Zenon Lamprou

Research output: Contribution to conferencePaperpeer-review

43 Downloads (Pure)


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.
Original languageEnglish
Number of pages10
Publication statusPublished - 15 Apr 2019
EventEASE 2019 - Evaluation and Assessment in Software Engineering - Copenhagen, Denmark
Duration: 16 Apr 201917 Apr 2019
Conference number: 23


ConferenceEASE 2019 - Evaluation and Assessment in Software Engineering
Abbreviated titleEASE 2019
Internet address


  • inheritance
  • case study
  • open source
  • empirical
  • evolution
  • hierarchy

Cite this