A Study on Behavioral Backward Incompatibility Bugs in Java Software Libraries

Nowadays, due to the frequent technological innovationand market changes, software libraries are evolving veryquickly. To make sure that existing client software applicationsare not broken after a library update, backward compatibilityhas always been one of the most important requirements duringthe evolution of software platforms and libraries. However, due to various reasons, backward compatibility is seldom fullyachieved in practice, and many relevant software failures arereported. Therefore, it is important to understand the status, major reasons, and impact of backward incompatibilities in realworld software. Previous studies on this topic mainly focus onAPI signature changes between consecutive versions of softwarelibraries, but behavioral changes of APIs with untouched signaturesare actually more dangerous and are causing most realworldbugs because they cannot be easily detected. This paperpresents an empirical study on 126 real-world software bugreports on backward incompatibilities of software libraries. Wefind that 67% of fixed client bugs caused by backward incompatibilitiesin software libraries are fixed by client developers, through several simple change patterns made to the backwardincompatible API invocations.

[1]  Miryung Kim,et al.  An Empirical Study of API Stability and Adoption in the Android Ecosystem , 2013, 2013 IEEE International Conference on Software Maintenance.

[2]  Xiaoyin Wang,et al.  An Empirical Study on the Usage of Mocking Frameworks in Software Testing , 2014, 2014 14th International Conference on Quality Software.

[3]  Wei Wu,et al.  AURA: a hybrid approach to identify framework evolution , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[4]  Tao Xie,et al.  An approach to detecting duplicate bug reports using natural language and execution information , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[5]  A. Maule,et al.  Impact analysis of database schema changes , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[6]  Lu Zhang,et al.  A history-based matching approach to identification of framework evolution , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[7]  Tao Xie,et al.  Locating need-to-translate constant strings in web applications , 2010, FSE '10.

[8]  Gabriele Bavota,et al.  API change and fault proneness: a threat to the success of Android apps , 2013, ESEC/FSE 2013.

[9]  Arie van Deursen,et al.  Measuring software library stability through historical version analysis , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).