Understanding the motivations for breaking changes in Java APIs
| dc.creator | Aline Norberta de Brito | |
| dc.date.accessioned | 2019-08-13T08:36:07Z | |
| dc.date.accessioned | 2025-09-08T23:03:39Z | |
| dc.date.available | 2019-08-13T08:36:07Z | |
| dc.date.issued | 2018-07-10 | |
| dc.description.abstract | Libraries 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.uri | https://hdl.handle.net/1843/ESBF-B44K6H | |
| dc.language | Inglês | |
| dc.publisher | Universidade Federal de Minas Gerais | |
| dc.rights | Acesso Aberto | |
| dc.subject | Engenharia de Software | |
| dc.subject | Computação | |
| dc.subject | Interfaces (Computador) | |
| dc.subject.other | Mining software repositories | |
| dc.subject.other | Breaking changes | |
| dc.subject.other | API evolution | |
| dc.title | Understanding the motivations for breaking changes in Java APIs | |
| dc.type | Dissertação de mestrado | |
| local.contributor.advisor1 | Marco Tulio de Oliveira Valente | |
| local.contributor.referee1 | Andre Cavalcante Hora | |
| local.contributor.referee1 | Eduardo Magno Lages Figueiredo | |
| local.contributor.referee1 | Maurício Finavaro Aniche | |
| local.description.resumo | 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. | |
| local.publisher.initials | UFMG |
Arquivos
Pacote original
1 - 1 de 1
Carregando...
- Nome:
- alinenorbertabrito.pdf
- Tamanho:
- 1.58 MB
- Formato:
- Adobe Portable Document Format