Inheritance and the development of encapsulated software systems
Research directions in object-oriented programming
Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
A Validation of Object-Oriented Design Metrics as Quality Indicators
IEEE Transactions on Software Engineering
ACM Computing Surveys (CSUR)
Managerial Use of Metrics for Object-Oriented Software: An Exploratory Analysis
IEEE Transactions on Software Engineering
Polymorphism measures for early risk prediction
Proceedings of the 21st international conference on Software engineering
Journal of Systems and Software - Special issue on Evaluation and assessment in software engineering
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Towards a Framework for Software Measurement Validation
IEEE Transactions on Software Engineering
A Comprehensive Empirical Validation of Design Measures for Object-Oriented Systems
METRICS '98 Proceedings of the 5th International Symposium on Software Metrics
Empirical Software Engineering
Scale-free geometry in OO programs
Communications of the ACM - Adaptive complex enterprises
Understanding the shape of Java software
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
An empirical study of Java bytecode programs
Software—Practice & Experience
An empirical study of cycles among classes in Java
Empirical Software Engineering
Reusability: The Case for Object-Oriented Design
IEEE Software
Is Structural Subtyping Useful? An Empirical Study
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
An empirical study of overriding in open source Java
ACSC '10 Proceedings of the Thirty-Third Australasian Conferenc on Computer Science - Volume 102
Evaluating the dynamic behaviour of Python applications
ACSC '09 Proceedings of the Thirty-Second Australasian Conference on Computer Science - Volume 91
The use of overloading in JAVA programs
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Aspect-based dynamic software updating: a model and its empirical evaluation
Proceedings of the tenth international conference on Aspect-oriented software development
How developers use the dynamic features of programming languages: the case of smalltalk
Proceedings of the 8th Working Conference on Mining Software Repositories
QoSA'10 Proceedings of the 6th international conference on Quality of Software Architectures: research into Practice - Reality and Gaps
A testing strategy for abstract classes
Software Testing, Verification & Reliability
Extensions during software evolution: do objects meet their promise?
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Automatic testing of sequential and concurrent substitutability
Proceedings of the 2013 International Conference on Software Engineering
JVM-hosted languages: they talk the talk, but do they walk the walk?
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
What programmers do with inheritance in java
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
How (and why) developers use the dynamic features of programming languages: the case of smalltalk
Empirical Software Engineering
Hi-index | 0.00 |
Inheritance is a crucial part of object-oriented programming, but its use in practice, and the resulting large-scale inheritance structures in programs, remain poorly understood. Previous studies of inheritance have been relatively small and have generally not considered issues such as Java's distinction between classes and interfaces, nor have they considered the use of external libraries.In this paper we present the first substantial empirical study of the large-scale use of inheritance in a contemporary OO programming language. We present a suite of structured metrics for quantifying inheritance in Java programs. We present the results of performing a corpus analysis using those metrics to over 90 applications consisting of over 100,000 separate classes and interfaces. Our analysis finds higher use of inheritance than anticipated, variation in the use of inheritance between interfaces and classes, and differences between inheritance within application types compared with inheritance from external libraries.