publication . Preprint . Conference object . 2018

Why and How Java Developers Break APIs

Aline Brito; Laerte Xavier; Andre Hora; Marco Tulio Valente;
Open Access English
  • Published: 16 Jan 2018
Abstract
Modern software development depends on APIs to reuse code and increase productivity. As most software systems, these libraries and frameworks also evolve, which may break existing clients. However, the main reasons to introduce breaking changes in APIs are unclear. Therefore, in this paper, we report the results of an almost 4-month long field study with the developers of 400 popular Java libraries and frameworks. We configured an infrastructure to observe all changes in these libraries and to detect breaking changes shortly after their introduction in the code. After identifying breaking changes, we asked the developers to explain the reasons behind their decis...
Subjects
free text keywords: Computer Science - Software Engineering, Java, computer.programming_language, computer, Systems engineering, Reuse, Software, business.industry, business, Computer science, Software development, Maintainability, Software engineering, Software system
Related Organizations
45 references, page 1 of 3

[1] S. Moser and O. Nierstrasz, “The effect of object-oriented frameworks on developer productivity,” Computer, vol. 29, no. 9, pp. 45-51, 1996. [OpenAIRE]

[2] D. Konstantopoulos, J. Marien, M. Pinkerton, and E. Braude, “Best principles in the design of shared software,” in 33rd International Computer Software and Applications Conference (COMPSAC), pp. 287- 292, 2009. [OpenAIRE]

[3] S. Raemaekers, A. van Deursen, and J. Visser, “Measuring software library stability through historical version analysis,” in 28th International Conference on Software Maintenance (ICSM), pp. 378-387, 2012. [OpenAIRE]

[4] M. Reddy, API Design for C++. Morgan Kaufmann Publishers, 2011.

[5] W. Wu, Y.-G. Gueheneuc, G. Antoniol, and M. Kim, “AURA: a hybrid approach to identify framework evolution,” in 32nd International Conference on Software Engineering (ICSE), pp. 325-334, 2010.

[6] R. Robbes, M. Lungu, and D. Ro¨thlisberger, “How do developers react to API deprecation? the case of a Smalltalk ecosystem,” in 20th International Symposium on the Foundations of Software Engineering (FSE), pp. 56:1-56:11, 2012. [OpenAIRE]

[7] T. McDonnell, B. Ray, and M. Kim, “An empirical study of API stability and adoption in the Android ecosystem,” in 29th International Conference on Software Maintenance (ICSM), pp. 70-79, 2013.

[8] C. Bogart, C. Ka¨stner, J. Herbsleb, and F. Thung, “How to break an API: cost negotiation and community values in three software ecosystems,” in 24th International Symposium on the Foundations of Software Engineering (FSE), pp. 109-120, 2016. [OpenAIRE]

[9] L. Xavier, A. Brito, A. Hora, and M. T. Valente, “Historical and impact analysis of API breaking changes: A large scale study,” in 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 138-147, 2017.

[10] E. M. Rogers, Diffusion of Innovations. Free Press, 5th ed., 2003.

[11] J. Businge, A. Serebrenik, and M. G. J. van den Brand, “Eclipse API usage: the good and the bad,” Software Quality Journal, vol. 23, no. 1, pp. 107-141, 2015.

[12] L. Mastrangelo, L. Ponzanelli, A. Mocci, M. Lanza, M. Hauswirth, and N. Nystrom, “Use at your own risk: The Java unsafe API in the wild,” in 30th International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pp. 695-710, 2015. [OpenAIRE]

[13] H. Borges, A. Hora, and M. T. Valente, “Understanding the factors that impact the popularity of GitHub repositories,” in 32nd IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 334-344, 2016.

[14] L. Xavier, A. Hora, and M. T. Valente, “Why do we break APIs? first answers from developers,” in 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 392-396, 2017.

[15] N. Cliff, Ordinal methods for behavioral data analysis. Psychology Press, 2014.

45 references, page 1 of 3
Abstract
Modern software development depends on APIs to reuse code and increase productivity. As most software systems, these libraries and frameworks also evolve, which may break existing clients. However, the main reasons to introduce breaking changes in APIs are unclear. Therefore, in this paper, we report the results of an almost 4-month long field study with the developers of 400 popular Java libraries and frameworks. We configured an infrastructure to observe all changes in these libraries and to detect breaking changes shortly after their introduction in the code. After identifying breaking changes, we asked the developers to explain the reasons behind their decis...
Subjects
free text keywords: Computer Science - Software Engineering, Java, computer.programming_language, computer, Systems engineering, Reuse, Software, business.industry, business, Computer science, Software development, Maintainability, Software engineering, Software system
Related Organizations
45 references, page 1 of 3

[1] S. Moser and O. Nierstrasz, “The effect of object-oriented frameworks on developer productivity,” Computer, vol. 29, no. 9, pp. 45-51, 1996. [OpenAIRE]

[2] D. Konstantopoulos, J. Marien, M. Pinkerton, and E. Braude, “Best principles in the design of shared software,” in 33rd International Computer Software and Applications Conference (COMPSAC), pp. 287- 292, 2009. [OpenAIRE]

[3] S. Raemaekers, A. van Deursen, and J. Visser, “Measuring software library stability through historical version analysis,” in 28th International Conference on Software Maintenance (ICSM), pp. 378-387, 2012. [OpenAIRE]

[4] M. Reddy, API Design for C++. Morgan Kaufmann Publishers, 2011.

[5] W. Wu, Y.-G. Gueheneuc, G. Antoniol, and M. Kim, “AURA: a hybrid approach to identify framework evolution,” in 32nd International Conference on Software Engineering (ICSE), pp. 325-334, 2010.

[6] R. Robbes, M. Lungu, and D. Ro¨thlisberger, “How do developers react to API deprecation? the case of a Smalltalk ecosystem,” in 20th International Symposium on the Foundations of Software Engineering (FSE), pp. 56:1-56:11, 2012. [OpenAIRE]

[7] T. McDonnell, B. Ray, and M. Kim, “An empirical study of API stability and adoption in the Android ecosystem,” in 29th International Conference on Software Maintenance (ICSM), pp. 70-79, 2013.

[8] C. Bogart, C. Ka¨stner, J. Herbsleb, and F. Thung, “How to break an API: cost negotiation and community values in three software ecosystems,” in 24th International Symposium on the Foundations of Software Engineering (FSE), pp. 109-120, 2016. [OpenAIRE]

[9] L. Xavier, A. Brito, A. Hora, and M. T. Valente, “Historical and impact analysis of API breaking changes: A large scale study,” in 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 138-147, 2017.

[10] E. M. Rogers, Diffusion of Innovations. Free Press, 5th ed., 2003.

[11] J. Businge, A. Serebrenik, and M. G. J. van den Brand, “Eclipse API usage: the good and the bad,” Software Quality Journal, vol. 23, no. 1, pp. 107-141, 2015.

[12] L. Mastrangelo, L. Ponzanelli, A. Mocci, M. Lanza, M. Hauswirth, and N. Nystrom, “Use at your own risk: The Java unsafe API in the wild,” in 30th International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pp. 695-710, 2015. [OpenAIRE]

[13] H. Borges, A. Hora, and M. T. Valente, “Understanding the factors that impact the popularity of GitHub repositories,” in 32nd IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 334-344, 2016.

[14] L. Xavier, A. Hora, and M. T. Valente, “Why do we break APIs? first answers from developers,” in 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 392-396, 2017.

[15] N. Cliff, Ordinal methods for behavioral data analysis. Psychology Press, 2014.

45 references, page 1 of 3
Powered by OpenAIRE Open Research Graph
Any information missing or wrong?Report an Issue
publication . Preprint . Conference object . 2018

Why and How Java Developers Break APIs

Aline Brito; Laerte Xavier; Andre Hora; Marco Tulio Valente;