The role of inheritance in the maintainability of object-oriented systems

In this paper, we describe the empirical evaluation of the level of inheritance in five object-oriented systems. The systems studied vary in both size and application domain. Results from our analysis together with other recent investigations seem to support the thesis that inheritance is used either sparingly or incorrectly. Statistical correlation between four inheritance metrics and a set of dependent variables (non-comment source lines, software understandability, known errors and error density) provide evidence for this claim. It is also not clear that systems using inheritance will necessarily be more maintainable than those that do not. The data analysed from two of our systems suggests that deeper inheritance trees are attributes of systems which are harder to understand and (by implication) harder to maintain. We analyse why this might be the case, and propose ways of remedying this situation.

[1]  Premkumar T. Devanbu,et al.  An Investigation into Coupling Measures for C++ , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[2]  Michelle Cartwright,et al.  An Empirical Investigation of an Object-Oriented Software System , 2000, IEEE Trans. Software Eng..

[3]  Richard H. Carver,et al.  An Evaluation of the MOOD Set of Object-Oriented Software Metrics , 1998, IEEE Trans. Software Eng..

[4]  Norman F. Schneidewind,et al.  Methodology For Validating Software Metrics , 1992, IEEE Trans. Software Eng..

[5]  Victor R. Basili,et al.  Viewing maintenance as reuse-oriented software development , 1990, IEEE Software.

[6]  Peter Wall Advanced C++ , 1993, TOOLS.

[7]  Victor R. Basili,et al.  The TAME Project: Towards Improvement-Oriented Software Environments , 1988, IEEE Trans. Software Eng..

[8]  Rachel Harrison,et al.  Experimental assessment of the effect of inheritance on the maintainability of object-oriented systems , 2000, J. Syst. Softw..

[9]  Bjarne Stroustrup Adding classes to the C language: An exercise in language evolution , 1983, Softw. Pract. Exp..

[10]  James M. Bieman,et al.  Reuse through inheritance: a quantitative study of C++ software , 1995, SSR '95.

[11]  Victor R. Basili,et al.  How reuse influences productivity in object-oriented systems , 1996, CACM.

[12]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[13]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..