An Empirical Study of Unused Design Decisions in Open Source Java Software

A recent study on how inheritance is used in open source Java software revealed a surprising number of interfaces that were neither implemented nor extended. While innocent explanations for this exist (the interfaces are part of frameworks that only clients of the frameworks implement), it does raise the question of how much "dead code'' exists in applications. Dead code usually refers to code within a function that cannot be executed, but unused interfaces, and more generally unused public methods, represent dead code at the "design'' level, and so can potentially have a significant impact on future maintenance costs. This paper presents a large empirical study on existence of design decisions that are unused. This study examined 100 open source Java applications. The results show a significant level of unused design decisions.

[1]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[2]  Ewan D. Tempero,et al.  How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software , 2008, ECOOP.

[3]  Frank Tip,et al.  Practical extraction techniques for Java , 2002, TOPL.

[4]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[5]  P. Oman,et al.  Maintainability measurements on industrial source code maintenance activities , 1995, Proceedings of International Conference on Software Maintenance.