Understanding the motivations for breaking changes in Java APIs

Aline Brito · Americanae (AECID Library) · 2018

Bibliotecas e APIs são comumente usadas no desenvolvimento de software, visto que permitem o reuso de código fonte e melhoram a produtividade. Assim como a maioria dos sistemas de software, elas também evoluem, o que pode quebrar contratos previamente estabelecidos com sistemas clientes, introduzindo breaking changes que podem afetar a compilação dos projetos. No entanto, as principais razões para introduzir breaking changes em APIs não são claras. Portanto, nesta dissertação de mestrado, são reportados os resultados de um longo estudo de campo de aproximadamente 4 meses com bibliotecas e frameworks Java populares. Foi configurada uma infraestrutura para observar todas as mudanças em 400 bibliotecas e para detectar breaking changes logo após sua introdução no código. Detectou-se possíveis breaking changes em 61 projetos. Depois de identificar as alterações, os desenvolvedores foram contatados, com o objetivo principal de entender as razões por trás das alterações nas APIs. Durante o estudo, identificou-se 59 breaking changes, confirmadas pelos desenvolvedores de 19 projetos. Analisando as respostas dos desenvolvedores, observou-se que (i) 39 % das alterações investigadas no estudo podem ter um impacto nos clientes, sendo porém mudanças que exigem pouco esforço na migração para as novas versões da API, (ii) breaking changes são motivadas principalmente pela necessidade de implementar novos recursos, pelo desejo de tornar as APIs mais simples, e para melhorar a manutenção do código fonte, (iii) os desenvolvedores não depreciam elementos antes de uma mudança devido ao aumento no esforço de manutenção, e (iv) a maioria dos desenvolvedores planejam documentar as mudanças, geralmente por release notes e changelogs. Na dissertação, também são fornecidas sugestões para projetistas, desenvolvedores de ferramentas, pesquisadores da área Engenharia de Software e desenvolvedores de APIs. Para concluir o trabalho, a ferramenta apidiff usada nesta dissertação para identificar breaking changes, foi atualizada com recursos importantes, por exemplo, suporte a operações de refatoração e integração com o sistema de controle de versões git.

Read the paper · More papers on PaperTik