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.
Original language | English |
---|---|
Pages | 24-33 |
Number of pages | 10 |
DOIs | |
Publication status | Published - 15 Apr 2019 |
Event | EASE 2019 - Evaluation and Assessment in Software Engineering - Copenhagen, Denmark Duration: 16 Apr 2019 → 17 Apr 2019 Conference number: 23 https://ease2019.org/ |
Conference
Conference | EASE 2019 - Evaluation and Assessment in Software Engineering |
---|---|
Abbreviated title | EASE 2019 |
Country/Territory | Denmark |
City | Copenhagen |
Period | 16/04/19 → 17/04/19 |
Internet address |
Keywords
- inheritance
- case study
- open source
- empirical
- evolution
- hierarchy