Investigating deprecation misuse

A taxonomy, alternatives, controlled experiment, and experiment platform

More Info
expand_more

Abstract

Deprecation in Java is a language feature that allows API producers to mark program elements as obsolete. However, previous work has identified that this mechanism is co-opted to indicate another concept entirely: a misuse of deprecation. This leaves room for improvement because deprecation warning mechanisms do not fully describe the true reasoning with which API producers choose to misuse the deprecation mechanism. In this thesis, we create a taxonomy of five reasons why API producers misuse the deprecation functionality found in open-source software by analyzing 763 methods. Using this taxonomy, we create alternatives meant to help API producers avoid deprecation misuse by introducing five new annotations meant to be specific in API abnormalities. To test this proposed alternative, we conduct a user study. However, as no current experimental settings fit our needs, we create an experimental platform, RESPIRED, publishing it to improve the state-of-the-art in software engineering experiments. Finally, we test our alternatives using this platform, finding that changing only the warning text does not have a significant impact on developers.