Understanding the motivations for breaking changes in Java APIs

dc.creatorAline Norberta de Brito
dc.date.accessioned2019-08-13T08:36:07Z
dc.date.accessioned2025-09-08T23:03:39Z
dc.date.available2019-08-13T08:36:07Z
dc.date.issued2018-07-10
dc.description.abstractLibraries and APIs are commonly used to reuse code and to increase productivity. As most software systems, they also evolve over time, which may break existing client systems. However, the main reasons to introduce breaking changes in APIs are unclear. Therefore, in this dissertation, we report the results of an almost 4-month long field study with the developers of 400 popular Java libraries. We monitored all changes in these libraries, and shortly after identifying breaking changes, we asked the developers to explain the reasons behind their decision to change the APIs. By analyzing the developers' answers, we report that breaking changes are mostly motivated by the implementation of new features, the simplification of API elements, and the improvement of maintenance. To conclude, we describe the design and implementation of APIDiff 2.0, the tool we used to conduct the study reported in this dissertation.
dc.identifier.urihttps://hdl.handle.net/1843/ESBF-B44K6H
dc.languageInglês
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Aberto
dc.subjectEngenharia de Software
dc.subjectComputação
dc.subjectInterfaces (Computador)
dc.subject.otherMining software repositories
dc.subject.otherBreaking changes
dc.subject.otherAPI evolution
dc.titleUnderstanding the motivations for breaking changes in Java APIs
dc.typeDissertação de mestrado
local.contributor.advisor1Marco Tulio de Oliveira Valente
local.contributor.referee1Andre Cavalcante Hora
local.contributor.referee1Eduardo Magno Lages Figueiredo
local.contributor.referee1Maurício Finavaro Aniche
local.description.resumoBibliotecas 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.
local.publisher.initialsUFMG

Arquivos

Pacote original

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
alinenorbertabrito.pdf
Tamanho:
1.58 MB
Formato:
Adobe Portable Document Format