Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/ESBF-B44K6H
Type: Dissertação de Mestrado
Title: Understanding the motivations for breaking changes in Java APIs
Authors: Aline Norberta de Brito
First Advisor: Marco Tulio de Oliveira Valente
First Referee: Andre Cavalcante Hora
Second Referee: Eduardo Magno Lages Figueiredo
Third Referee: Maurício Finavaro Aniche
Abstract: 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.
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.
Subject: Engenharia de Software
Computação
Interfaces (Computador)
language: Inglês
Publisher: Universidade Federal de Minas Gerais
Publisher Initials: UFMG
Rights: Acesso Aberto
URI: http://hdl.handle.net/1843/ESBF-B44K6H
Issue Date: 10-Jul-2018
Appears in Collections:Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
alinenorbertabrito.pdf1.62 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.