On the link between structural dependencies and software changes
Autor(a) principal: | |
---|---|
Data de Publicação: | 2017 |
Tipo de documento: | Tese |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da USP |
Texto Completo: | https://teses.usp.br/teses/disponiveis/45/45134/tde-20230727-113255/ |
Resumo: | não disponível |
id |
USP_34015b0292d81f807ac2d05b7c26c7ab |
---|---|
oai_identifier_str |
oai:teses.usp.br:tde-20230727-113255 |
network_acronym_str |
USP |
network_name_str |
Biblioteca Digital de Teses e Dissertações da USP |
repository_id_str |
2721 |
spelling |
On the link between structural dependencies and software changesSobre a conexao entre dependencias estruturais e mudanças no softwareEngenharia De SoftwareProcesso De Softwarenão disponívelLow structural coupling is a design principle at the heart of software engineering. A recurrent claim is that classes with high coupling are prone to undergo forced local changes as a consequence of changes made in the classes they are connected to. This claim can be found in almost every Software Engineering book, in fundrunental papers of the area, in whitepapers written by industry experts, and even in Wikipedia. Despite the popularity and credibility of the claim, very little research effort has been put on its understanding. In other words, if a class A depends on another class B, then is A more likely to co-change with B as compared to the case where A does not depend on B? In other words, is the existence of dependencies statistically associated with the occurrence of co-changes? To what extent? Answering this question is crucial step in understanding the link between dependencies and software changes. Hence, in this paper, we set out to empirically investigate the link between structural dependencies and co-changes. In a preliminary study with 4 open-source systems, we discovered that structural dependencies do not instantly make artifacts co-change. However, the rate with which an artifact co-cochanges with another is indeed higher when the former structurally depends on the latter. We confirmed this finding in a new study where we extracted structural dependencies and co-changes from 77,286 code snapshots of 45 Java projects randomly sampled from the Apache Software Foundation. Our results indicated that, when A depends on Band B changes, the chances of A changing together with B is around 32 percent in average, with a standard deviation of 13.6 percent. We also built classification models using Random Forests to investigate which kinds of dependency best explain co-changes. We found that the length of transitive dependencies, number of type imports, number of method calls, and number of references were the most important variables in the model. However, the classifiers were often inaccurate, thus implying that dependencies are not good predictors for co-changes. In fact, we also found that a substantial number of commits involve classes that are not connected via dependencies, reinforcing our belief that co-changes are more frequently induced by other forms of connascence, such as conceptual coupling. In summary, on the one hand, we found empirical evidence connecting the existence of structural dependencies to the occurrence co-changes. On the other hand, we found that the majority of co-changes do not correlate with structural dependencies, meaning that structural dependencies might be responsible for a small portion of all software changes. As a practical consequence, developers should still embrace the low coupling principle by managing software dependencies while designing and evolving their systems. However, our findings also imply that IDEs should take into account additional sources of information to support developers in successfully propagating software changes, as structural iv dependencies seem not to be the main player. Finally, the data and tools produced during this research might be leveraged to bootstrap follow-up investigations, such as the influence of structural anti-patterns on change propagationBiblioteca Digitais de Teses e Dissertações da USPGerosa, Marco AurélioOliva, Gustavo Ansaldi2017-02-16info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisapplication/pdfhttps://teses.usp.br/teses/disponiveis/45/45134/tde-20230727-113255/reponame:Biblioteca Digital de Teses e Dissertações da USPinstname:Universidade de São Paulo (USP)instacron:USPLiberar o conteúdo para acesso público.info:eu-repo/semantics/openAccesspor2023-07-27T19:14:05Zoai:teses.usp.br:tde-20230727-113255Biblioteca Digital de Teses e Dissertaçõeshttp://www.teses.usp.br/PUBhttp://www.teses.usp.br/cgi-bin/mtd2br.plvirginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.bropendoar:27212023-07-27T19:14:05Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)false |
dc.title.none.fl_str_mv |
On the link between structural dependencies and software changes Sobre a conexao entre dependencias estruturais e mudanças no software |
title |
On the link between structural dependencies and software changes |
spellingShingle |
On the link between structural dependencies and software changes Oliva, Gustavo Ansaldi Engenharia De Software Processo De Software |
title_short |
On the link between structural dependencies and software changes |
title_full |
On the link between structural dependencies and software changes |
title_fullStr |
On the link between structural dependencies and software changes |
title_full_unstemmed |
On the link between structural dependencies and software changes |
title_sort |
On the link between structural dependencies and software changes |
author |
Oliva, Gustavo Ansaldi |
author_facet |
Oliva, Gustavo Ansaldi |
author_role |
author |
dc.contributor.none.fl_str_mv |
Gerosa, Marco Aurélio |
dc.contributor.author.fl_str_mv |
Oliva, Gustavo Ansaldi |
dc.subject.por.fl_str_mv |
Engenharia De Software Processo De Software |
topic |
Engenharia De Software Processo De Software |
description |
não disponível |
publishDate |
2017 |
dc.date.none.fl_str_mv |
2017-02-16 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://teses.usp.br/teses/disponiveis/45/45134/tde-20230727-113255/ |
url |
https://teses.usp.br/teses/disponiveis/45/45134/tde-20230727-113255/ |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.relation.none.fl_str_mv |
|
dc.rights.driver.fl_str_mv |
Liberar o conteúdo para acesso público. info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
Liberar o conteúdo para acesso público. |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.coverage.none.fl_str_mv |
|
dc.publisher.none.fl_str_mv |
Biblioteca Digitais de Teses e Dissertações da USP |
publisher.none.fl_str_mv |
Biblioteca Digitais de Teses e Dissertações da USP |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da USP instname:Universidade de São Paulo (USP) instacron:USP |
instname_str |
Universidade de São Paulo (USP) |
instacron_str |
USP |
institution |
USP |
reponame_str |
Biblioteca Digital de Teses e Dissertações da USP |
collection |
Biblioteca Digital de Teses e Dissertações da USP |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP) |
repository.mail.fl_str_mv |
virginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.br |
_version_ |
1809090937560760320 |