Object-oriented metrics that predict maintainability
Journal of Systems and Software - Special issue on object-oriented software
Reuse through inheritance: a quantitative study of C++ software
SSR '95 Proceedings of the 1995 Symposium on Software reusability
A Validation of Object-Oriented Design Metrics as Quality Indicators
IEEE Transactions on Software Engineering
Managerial Use of Metrics for Object-Oriented Software: An Exploratory Analysis
IEEE Transactions on Software Engineering
An Empirical Approach to Studying Software Evolution
IEEE Transactions on Software Engineering
Multi-method research: an empirical investigation of object-oriented technology
Journal of Systems and Software
Journal of Systems and Software - Special issue on Evaluation and assessment in software engineering
Growth, evolution, and structural change in open source software
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
An Empirical Investigation of an Object-Oriented Software System
IEEE Transactions on Software Engineering
Metrics and Laws of Software Evolution - The Nineties View
METRICS '97 Proceedings of the 4th International Symposium on Software Metrics
A controlled experiment on inheritance depth as a cost factor for code maintenance
Journal of Systems and Software
The Role of Constructors in the Context of Refactoring Object-Oriented Systems
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
Structural Evolution of an Open Source System: A Case Study
IWPC '04 Proceedings of the 12th IEEE International Workshop on Program Comprehension
Studying the Evolution of Open Source Systems at Different Levels of Granularity: Two Case Studies
IWPSE '04 Proceedings of the Principles of Software Evolution, 7th International Workshop
Characterizing the Evolution of Class Hierarchies
CSMR '05 Proceedings of the Ninth European Conference on Software Maintenance and Reengineering
Proceedings of the 2006 ACM symposium on Applied computing
Predicting fault-prone components in a java legacy system
Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering
Quality of manual data collection in Java software: an empirical investigation
Empirical Software Engineering
An Empirical Study of Evolution of Inheritance in Java OSS
ASWEC '08 Proceedings of the 19th Australian Conference on Software Engineering
Hi-index | 0.02 |
Inheritance is a fundamental feature of the Object-Oriented (OO) paradigm. It is used to promote extensibility and reuse in OO systems. Understanding how systems evolve, and specifically, trends in the movement and re-location of classes in OO hierarchies can help us understand and predict future maintenance effort. In this paper, we explore how and where new classes were added as well as where existing classes were deleted or moved across inheritance hierarchies from multiple versions of four Java systems. We observed first, that in one of the studied systems the same set of classes was continuously moved across the inheritance hierarchy. Second, in the same system, the most frequent changes were restricted to just one sub-part of the overall system. Third, that a maximum of three levels may be a threshold when using inheritance in a system; beyond this level very little activity was observed, supporting earlier theories that, beyond three levels, complexity becomes overwhelming. We also found evidence of 'collapsing' hierarchies to bring classes up to shallower levels. Finally, we found that larger classes and highly coupled classes were more frequently moved than smaller and less coupled classes. Statistical evidence supported the view that larger classes and highly coupled classes were less cohesive than smaller classes and lowly coupled classes and were thus more suitable candidates for being moved (within an hierarchy).