Um estudo empírico sobre breaking changes no ecossistema do NPM

Detalhes bibliográficos
Autor(a) principal: Venturini, Daniel
Data de Publicação: 2020
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
Texto Completo: http://repositorio.utfpr.edu.br/jspui/handle/1/26106
Resumo: Contexto: Os pacotes hospedados no npm criam uma rede de dependências, qual um pacote cliente utiliza algum recurso de um pacote provedor. Por vezes, os provedores introduzem breaking changes, que são alterações que podem causar defeitos nos clientes. Essas alterações deveriam ser publicadas apenas no nível major do Versionamento Semântico, mas quando são introduzidas nos níveis minor ou patch , podem causar defeitos inesperados nos clientes. Objetivo: Este trabalho propõe um estudo sobre breaking changes em níveis minor e patch no npm. Os objetivos são: (QP1) mensurar a ocorrência de breaking changes, (QP2) categorizar as modificações mais usuais causadoras de breaking changes e (QP3) analisar como os clientes se recuperam das breaking changes. Método: De uma amostra de clientes do npm foram restauradas as releases e instalada a última versão dos provedores que o cliente aceitava no momento da release. Em seguida, foram executados os scripts npm install/test . Para todas as releases que resultaram em erros, foram analisados os códigos e os repositórios dos clientes e dos provedores para verificar se o erro foi causado por um provedor, ou seja, uma breaking change. Resultados: (QP1) Ao todo, 13,9% das releases dos clientes são impactadas por breaking changes que estão ocorrendo ano após ano, e 54,9% das releases dos provedores com breaking changes possuem mais commits que as suas demais releases. (QP2) A maioria das breaking changes são corrigidas pelos provedores em níveis patch e são documentadas em 78,1% dos casos, principalmente em issues, o que faz com que a correção ocorra 3,3 vezes mais rápida. (QP3) Enquanto os provedores indiretos são os que mais introduzem as breaking changes, os clientes as corrigem em 39,1% dos casos e preferem realizar um upgrade na versão do provedor, mas sem alterar o range. Conclusões: As breaking changes realmente ocorrem em releases minor e patch. Enquanto estudos anteriores focaram em alterações de APIs, esse estudo utilizou os testes dos clientes para encontrar qualquer tipo de breaking change. Finalmente, apresentamos várias sugestões para os desenvolvedores melhorarem suas interações com o ecossistema do npm.
id UTFPR-12_7dd9334949c4ca9d63c02ccb6f303e2d
oai_identifier_str oai:repositorio.utfpr.edu.br:1/26106
network_acronym_str UTFPR-12
network_name_str Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
repository_id_str
spelling 2021-10-04T18:53:32Z2021-10-04T18:53:32Z2020-11-27VENTURINI, Daniel. Um estudo empírico sobre breaking changes no ecossistema do NPM. 2020. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2020.http://repositorio.utfpr.edu.br/jspui/handle/1/26106Contexto: Os pacotes hospedados no npm criam uma rede de dependências, qual um pacote cliente utiliza algum recurso de um pacote provedor. Por vezes, os provedores introduzem breaking changes, que são alterações que podem causar defeitos nos clientes. Essas alterações deveriam ser publicadas apenas no nível major do Versionamento Semântico, mas quando são introduzidas nos níveis minor ou patch , podem causar defeitos inesperados nos clientes. Objetivo: Este trabalho propõe um estudo sobre breaking changes em níveis minor e patch no npm. Os objetivos são: (QP1) mensurar a ocorrência de breaking changes, (QP2) categorizar as modificações mais usuais causadoras de breaking changes e (QP3) analisar como os clientes se recuperam das breaking changes. Método: De uma amostra de clientes do npm foram restauradas as releases e instalada a última versão dos provedores que o cliente aceitava no momento da release. Em seguida, foram executados os scripts npm install/test . Para todas as releases que resultaram em erros, foram analisados os códigos e os repositórios dos clientes e dos provedores para verificar se o erro foi causado por um provedor, ou seja, uma breaking change. Resultados: (QP1) Ao todo, 13,9% das releases dos clientes são impactadas por breaking changes que estão ocorrendo ano após ano, e 54,9% das releases dos provedores com breaking changes possuem mais commits que as suas demais releases. (QP2) A maioria das breaking changes são corrigidas pelos provedores em níveis patch e são documentadas em 78,1% dos casos, principalmente em issues, o que faz com que a correção ocorra 3,3 vezes mais rápida. (QP3) Enquanto os provedores indiretos são os que mais introduzem as breaking changes, os clientes as corrigem em 39,1% dos casos e preferem realizar um upgrade na versão do provedor, mas sem alterar o range. Conclusões: As breaking changes realmente ocorrem em releases minor e patch. Enquanto estudos anteriores focaram em alterações de APIs, esse estudo utilizou os testes dos clientes para encontrar qualquer tipo de breaking change. Finalmente, apresentamos várias sugestões para os desenvolvedores melhorarem suas interações com o ecossistema do npm.Context: Packages hosted on npm create a dependency network, where client packages use some recource from provider packages. Occasionally, providers introduce breaking changes, which are changes that may cause defects on clients. These changes should be only introduced in major level of Semantic Versioning, but when introduced in minor or patch levels, these may cause issues on clients. Objective: This work proposes a study about breaking changes in minor and patch levels on npm . Our objectives are: (RQ1) to measure the breaking change occurrence, (RQ2) to show the most common breaking change types, and (RQ3) to analyze how clients recover themselves. Method: From a sample of clients from npm , we restored the releases and installed the latest version of providers that the client accepted in the release timestamp. Following, we executed the npm install/test scripts. All releases that raised an error were analyzed, and the client and providers code and repositories was verified to check whether the error was raised by a provider, characterizing a breaking change. Results: (RQ1) Altogether, 13.9% of client releases are impacted by breaking changes, which have happened year after year and 54.9% of provider releases with breaking changes have more commits than their other releases. (RQ2) The majority of breaking changes are fixed by providers in patch levels and are documented in 78.1% of cases, mainly on issues, causing the fix to be 3.3 time faster. (RQ3) While indirect providers are the ones that introduces the majority of breaking changes, clients fix these in 39.1% of cases and they prefer to do an upgrade on the provider’s version without changing the range. Conclusions: Breaking changes do really happen in minor and patch releases. Previous studies focused only on API breaking changes, while this study used clients’ tests to find any types of breaking changes. We presented several suggestions to developers to improve their interaction with the npm ecosystem.porUniversidade Tecnológica Federal do ParanáCampo MouraoCiência da ComputaçãoUTFPRBrasilDepartamento Acadêmico de ComputaçãoCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOJavaScript (Linguagem de programação de computador)Software - DesenvolvimentoGerenciamento de configurações de softwareJavaScript (Computer program language)Computer software - DevelopmentSoftware configuration managementUm estudo empírico sobre breaking changes no ecossistema do NPMAn empirical study of breaking changes in the NPM ecosysteminfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisCampo MourãoPolato, IvaniltonWiese, Igor ScaliantePolato, IvaniltonWiese, Igor ScalianteSilva, Marco Aurélio GraciottoRé, ReginaldoVenturini, Danielinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))instname:Universidade Tecnológica Federal do Paraná (UTFPR)instacron:UTFPRORIGINALestudoempiricobreakingchanges.pdfestudoempiricobreakingchanges.pdfapplication/pdf1916751http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/26106/6/estudoempiricobreakingchanges.pdfebf72946a75b69e7b222f994ef0b3519MD56LICENSElicense.txtlicense.txttext/plain; charset=utf-81290http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/26106/7/license.txtb9d82215ab23456fa2d8b49c5df1b95bMD57TEXTestudoempiricobreakingchanges.pdf.txtestudoempiricobreakingchanges.pdf.txtExtracted texttext/plain119544http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/26106/8/estudoempiricobreakingchanges.pdf.txtc00605fd9fd6df597494d545d4401942MD58THUMBNAILestudoempiricobreakingchanges.pdf.jpgestudoempiricobreakingchanges.pdf.jpgGenerated Thumbnailimage/jpeg1183http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/26106/9/estudoempiricobreakingchanges.pdf.jpg56c6eb7704ec322ee23d5157aad89befMD591/261062021-10-05 03:05:47.713oai:repositorio.utfpr.edu.br:1/26106TmEgcXVhbGlkYWRlIGRlIHRpdHVsYXIgZG9zIGRpcmVpdG9zIGRlIGF1dG9yIGRhIHB1YmxpY2HDp8OjbywgYXV0b3Jpem8gYSBVVEZQUiBhIHZlaWN1bGFyLCAKYXRyYXbDqXMgZG8gUG9ydGFsIGRlIEluZm9ybWHDp8OjbyBlbSBBY2Vzc28gQWJlcnRvIChQSUFBKSBlIGRvcyBDYXTDoWxvZ29zIGRhcyBCaWJsaW90ZWNhcyAKZGVzdGEgSW5zdGl0dWnDp8Ojbywgc2VtIHJlc3NhcmNpbWVudG8gZG9zIGRpcmVpdG9zIGF1dG9yYWlzLCBkZSBhY29yZG8gY29tIGEgTGVpIG5vIDkuNjEwLzk4LCAKbyB0ZXh0byBkZXN0YSBvYnJhLCBvYnNlcnZhbmRvIGFzIGNvbmRpw6fDtWVzIGRlIGRpc3BvbmliaWxpemHDp8OjbyByZWdpc3RyYWRhcyBubyBpdGVtIDQgZG8gCuKAnFRlcm1vIGRlIEF1dG9yaXphw6fDo28gcGFyYSBQdWJsaWNhw6fDo28gZGUgVHJhYmFsaG9zIGRlIENvbmNsdXPDo28gZGUgQ3Vyc28gZGUgR3JhZHVhw6fDo28gZSAKRXNwZWNpYWxpemHDp8OjbywgRGlzc2VydGHDp8O1ZXMgZSBUZXNlcyBubyBQb3J0YWwgZGUgSW5mb3JtYcOnw6NvIGUgbm9zIENhdMOhbG9nb3MgRWxldHLDtG5pY29zIGRvIApTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIGRhIFVURlBS4oCdLCBwYXJhIGZpbnMgZGUgbGVpdHVyYSwgaW1wcmVzc8OjbyBlL291IGRvd25sb2FkLCB2aXNhbmRvIGEgCmRpdnVsZ2HDp8OjbyBkYSBwcm9kdcOnw6NvIGNpZW50w61maWNhIGJyYXNpbGVpcmEuCgogIEFzIHZpYXMgb3JpZ2luYWlzIGUgYXNzaW5hZGFzIHBlbG8ocykgYXV0b3IoZXMpIGRvIOKAnFRlcm1vIGRlIEF1dG9yaXphw6fDo28gcGFyYSBQdWJsaWNhw6fDo28gZGUgClRyYWJhbGhvcyBkZSBDb25jbHVzw6NvIGRlIEN1cnNvIGRlIEdyYWR1YcOnw6NvIGUgRXNwZWNpYWxpemHDp8OjbywgRGlzc2VydGHDp8O1ZXMgZSBUZXNlcyBubyBQb3J0YWwgCmRlIEluZm9ybWHDp8OjbyBlIG5vcyBDYXTDoWxvZ29zIEVsZXRyw7RuaWNvcyBkbyBTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIGRhIFVURlBS4oCdIGUgZGEg4oCcRGVjbGFyYcOnw6NvIApkZSBBdXRvcmlh4oCdIGVuY29udHJhbS1zZSBhcnF1aXZhZGFzIG5hIEJpYmxpb3RlY2EgZG8gQ8OibXB1cyBubyBxdWFsIG8gdHJhYmFsaG8gZm9pIGRlZmVuZGlkby4gCk5vIGNhc28gZGUgcHVibGljYcOnw7VlcyBkZSBhdXRvcmlhIGNvbGV0aXZhIGUgbXVsdGljw6JtcHVzLCBvcyBkb2N1bWVudG9zIGZpY2Fyw6NvIHNvYiBndWFyZGEgZGEgCkJpYmxpb3RlY2EgY29tIGEgcXVhbCBvIOKAnHByaW1laXJvIGF1dG9y4oCdIHBvc3N1YSB2w61uY3Vsby4KRepositório de PublicaçõesPUBhttp://repositorio.utfpr.edu.br:8080/oai/requestopendoar:2021-10-05T06:05:47Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)false
dc.title.pt_BR.fl_str_mv Um estudo empírico sobre breaking changes no ecossistema do NPM
dc.title.alternative.pt_BR.fl_str_mv An empirical study of breaking changes in the NPM ecosystem
title Um estudo empírico sobre breaking changes no ecossistema do NPM
spellingShingle Um estudo empírico sobre breaking changes no ecossistema do NPM
Venturini, Daniel
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
JavaScript (Linguagem de programação de computador)
Software - Desenvolvimento
Gerenciamento de configurações de software
JavaScript (Computer program language)
Computer software - Development
Software configuration management
title_short Um estudo empírico sobre breaking changes no ecossistema do NPM
title_full Um estudo empírico sobre breaking changes no ecossistema do NPM
title_fullStr Um estudo empírico sobre breaking changes no ecossistema do NPM
title_full_unstemmed Um estudo empírico sobre breaking changes no ecossistema do NPM
title_sort Um estudo empírico sobre breaking changes no ecossistema do NPM
author Venturini, Daniel
author_facet Venturini, Daniel
author_role author
dc.contributor.advisor1.fl_str_mv Polato, Ivanilton
dc.contributor.advisor-co1.fl_str_mv Wiese, Igor Scaliante
dc.contributor.referee1.fl_str_mv Polato, Ivanilton
dc.contributor.referee2.fl_str_mv Wiese, Igor Scaliante
dc.contributor.referee3.fl_str_mv Silva, Marco Aurélio Graciotto
dc.contributor.referee4.fl_str_mv Ré, Reginaldo
dc.contributor.author.fl_str_mv Venturini, Daniel
contributor_str_mv Polato, Ivanilton
Wiese, Igor Scaliante
Polato, Ivanilton
Wiese, Igor Scaliante
Silva, Marco Aurélio Graciotto
Ré, Reginaldo
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
JavaScript (Linguagem de programação de computador)
Software - Desenvolvimento
Gerenciamento de configurações de software
JavaScript (Computer program language)
Computer software - Development
Software configuration management
dc.subject.por.fl_str_mv JavaScript (Linguagem de programação de computador)
Software - Desenvolvimento
Gerenciamento de configurações de software
JavaScript (Computer program language)
Computer software - Development
Software configuration management
description Contexto: Os pacotes hospedados no npm criam uma rede de dependências, qual um pacote cliente utiliza algum recurso de um pacote provedor. Por vezes, os provedores introduzem breaking changes, que são alterações que podem causar defeitos nos clientes. Essas alterações deveriam ser publicadas apenas no nível major do Versionamento Semântico, mas quando são introduzidas nos níveis minor ou patch , podem causar defeitos inesperados nos clientes. Objetivo: Este trabalho propõe um estudo sobre breaking changes em níveis minor e patch no npm. Os objetivos são: (QP1) mensurar a ocorrência de breaking changes, (QP2) categorizar as modificações mais usuais causadoras de breaking changes e (QP3) analisar como os clientes se recuperam das breaking changes. Método: De uma amostra de clientes do npm foram restauradas as releases e instalada a última versão dos provedores que o cliente aceitava no momento da release. Em seguida, foram executados os scripts npm install/test . Para todas as releases que resultaram em erros, foram analisados os códigos e os repositórios dos clientes e dos provedores para verificar se o erro foi causado por um provedor, ou seja, uma breaking change. Resultados: (QP1) Ao todo, 13,9% das releases dos clientes são impactadas por breaking changes que estão ocorrendo ano após ano, e 54,9% das releases dos provedores com breaking changes possuem mais commits que as suas demais releases. (QP2) A maioria das breaking changes são corrigidas pelos provedores em níveis patch e são documentadas em 78,1% dos casos, principalmente em issues, o que faz com que a correção ocorra 3,3 vezes mais rápida. (QP3) Enquanto os provedores indiretos são os que mais introduzem as breaking changes, os clientes as corrigem em 39,1% dos casos e preferem realizar um upgrade na versão do provedor, mas sem alterar o range. Conclusões: As breaking changes realmente ocorrem em releases minor e patch. Enquanto estudos anteriores focaram em alterações de APIs, esse estudo utilizou os testes dos clientes para encontrar qualquer tipo de breaking change. Finalmente, apresentamos várias sugestões para os desenvolvedores melhorarem suas interações com o ecossistema do npm.
publishDate 2020
dc.date.issued.fl_str_mv 2020-11-27
dc.date.accessioned.fl_str_mv 2021-10-04T18:53:32Z
dc.date.available.fl_str_mv 2021-10-04T18:53:32Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv VENTURINI, Daniel. Um estudo empírico sobre breaking changes no ecossistema do NPM. 2020. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2020.
dc.identifier.uri.fl_str_mv http://repositorio.utfpr.edu.br/jspui/handle/1/26106
identifier_str_mv VENTURINI, Daniel. Um estudo empírico sobre breaking changes no ecossistema do NPM. 2020. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2020.
url http://repositorio.utfpr.edu.br/jspui/handle/1/26106
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Campo Mourao
dc.publisher.program.fl_str_mv Ciência da Computação
dc.publisher.initials.fl_str_mv UTFPR
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Departamento Acadêmico de Computação
publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Campo Mourao
dc.source.none.fl_str_mv reponame:Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
instname:Universidade Tecnológica Federal do Paraná (UTFPR)
instacron:UTFPR
instname_str Universidade Tecnológica Federal do Paraná (UTFPR)
instacron_str UTFPR
institution UTFPR
reponame_str Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
collection Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
bitstream.url.fl_str_mv http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/26106/6/estudoempiricobreakingchanges.pdf
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/26106/7/license.txt
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/26106/8/estudoempiricobreakingchanges.pdf.txt
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/26106/9/estudoempiricobreakingchanges.pdf.jpg
bitstream.checksum.fl_str_mv ebf72946a75b69e7b222f994ef0b3519
b9d82215ab23456fa2d8b49c5df1b95b
c00605fd9fd6df597494d545d4401942
56c6eb7704ec322ee23d5157aad89bef
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)
repository.mail.fl_str_mv
_version_ 1805922988172771328