CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software

Detalhes bibliográficos
Autor(a) principal: Oliveira Neto, João Victor de
Data de Publicação: 2017
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFRN
Texto Completo: https://repositorio.ufrn.br/jspui/handle/123456789/24772
Resumo: A necessidade de evolução nos softwares tornou-se cada vez mais frequente e a engenharia de software precisou se adaptar para entregar produtos de qualidade em prazos cada vez menores. Para que o software continue sendo útil ao longo do tempo, para o propósito ao qual foi desenvolvido, é necessário que sejam realizadas mudanças ou incluídas novas funcionalidades para que este acompanhe as mudanças no contexto do negócio. Com essas mudanças, é inevitável que o software passe a aumentar de tamanho e, consequentemente, em complexidade. Essa expansão do software cria relacionamentos de dependência entre componentes do código-fonte e essas dependências se propagam em uma cadeia de dependências à medida que a aplicação cresce. Reescrever o mesmo trecho de código é uma prática não recomendada no desenvolvimento de software, pois implica em replicar código de forma distribuída e desordenada. Ao fazer o reuso, o mesmo trecho já escrito é referenciado em diferentes funcionalidades do sistema através da cadeia de dependência e chamadas de métodos, fazendo com que diferentes partes do código que estejam associadas a diferentes funcionalidades passem a depender de um mesmo componente. Alterações de trechos de código que possuem relação direta ou indireta com diferentes casos de uso podem levar a falhas imprevistas da aplicação, pois dependendo do número de artefatos envolvidos e da extensão da cadeia de dependências relacionada ao código alterado, uma mudança pode impactar um outro caso de uso que aparentemente não tem relação com o trecho de código modificado. Prever impactos decorrentes de alterações em um artefato é uma tarefa que exige tempo para análise, profundo conhecimento do código-fonte e esforço de teste. Este trabalho apresenta uma abordagem para automatizar a identificação de possíveis conflitos indiretos através de uma ferramenta, capaz de determinar quais casos de uso possuem maior probabilidade de serem impactados por mudanças no código-fonte, podendo assim direcionar os esforços de testes de forma mais eficaz. Foi elaborado um estudo para avaliar um projeto real de dimensão extensa que não possui uma suíte de testes automatizados e a ferramenta desenvolvida mostrou-se eficiente para detectar conflitos indiretos em diferentes cenários e também provou, através de um experimento empírico, que a maior parte das falhas decorrentes de conflitos indiretos teriam sido evitadas caso a ferramenta tivesse sido utilizada ainda na fase de desenvolvimento.
id UFRN_4cde5d7e500e9169168b07a0ba33931d
oai_identifier_str oai:https://repositorio.ufrn.br:123456789/24772
network_acronym_str UFRN
network_name_str Repositório Institucional da UFRN
repository_id_str
spelling Oliveira Neto, João Victor dehttp://lattes.cnpq.br/5736903367841961http://lattes.cnpq.br/4986614168117334Kulesza, Uirahttp://lattes.cnpq.br/0189095897739979Medeiros, Sérgio Queiroz dehttp://lattes.cnpq.br/0310395336626784Pinto, Felipe Alves Pereirahttp://lattes.cnpq.br/6163607072712192Lima, Gleydson de Azevedo Ferreira2018-02-20T21:02:12Z2018-02-20T21:02:12Z2017-08-31OLIVEIRA NETO, João Victor de. CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software. 2017. 95f. Dissertação (Mestrado Profissional em Engenharia de Software) - Instituto Metrópole Digital, Universidade Federal do Rio Grande do Norte, Natal, 2017.https://repositorio.ufrn.br/jspui/handle/123456789/24772A necessidade de evolução nos softwares tornou-se cada vez mais frequente e a engenharia de software precisou se adaptar para entregar produtos de qualidade em prazos cada vez menores. Para que o software continue sendo útil ao longo do tempo, para o propósito ao qual foi desenvolvido, é necessário que sejam realizadas mudanças ou incluídas novas funcionalidades para que este acompanhe as mudanças no contexto do negócio. Com essas mudanças, é inevitável que o software passe a aumentar de tamanho e, consequentemente, em complexidade. Essa expansão do software cria relacionamentos de dependência entre componentes do código-fonte e essas dependências se propagam em uma cadeia de dependências à medida que a aplicação cresce. Reescrever o mesmo trecho de código é uma prática não recomendada no desenvolvimento de software, pois implica em replicar código de forma distribuída e desordenada. Ao fazer o reuso, o mesmo trecho já escrito é referenciado em diferentes funcionalidades do sistema através da cadeia de dependência e chamadas de métodos, fazendo com que diferentes partes do código que estejam associadas a diferentes funcionalidades passem a depender de um mesmo componente. Alterações de trechos de código que possuem relação direta ou indireta com diferentes casos de uso podem levar a falhas imprevistas da aplicação, pois dependendo do número de artefatos envolvidos e da extensão da cadeia de dependências relacionada ao código alterado, uma mudança pode impactar um outro caso de uso que aparentemente não tem relação com o trecho de código modificado. Prever impactos decorrentes de alterações em um artefato é uma tarefa que exige tempo para análise, profundo conhecimento do código-fonte e esforço de teste. Este trabalho apresenta uma abordagem para automatizar a identificação de possíveis conflitos indiretos através de uma ferramenta, capaz de determinar quais casos de uso possuem maior probabilidade de serem impactados por mudanças no código-fonte, podendo assim direcionar os esforços de testes de forma mais eficaz. Foi elaborado um estudo para avaliar um projeto real de dimensão extensa que não possui uma suíte de testes automatizados e a ferramenta desenvolvida mostrou-se eficiente para detectar conflitos indiretos em diferentes cenários e também provou, através de um experimento empírico, que a maior parte das falhas decorrentes de conflitos indiretos teriam sido evitadas caso a ferramenta tivesse sido utilizada ainda na fase de desenvolvimento.The necessity of software evolution for those which solve daily problems became even more frequent and the software engineering had to be adapted in order to be able to delivery products with good quality in tight dead lines. In order to the software continues being useful during its life cycle, to the main purpose whose was developed, its necessary to apply changes or include new features due to changes which happens in the business. Rewrite the same block of code is not a recommended approach on software development, because it spreads code in a distributed and disordered way. Applying the code reuse, the same block of code already wrote is referenced by different use cases through the dependency chain and method calls, where different parts of the code, which are being relate to differents funcionalitys, going to depend to the same component. Changes applyed to a block of code which has direct or indirect relation with differents use cases may lead to umpredictable fails, depending on the number of different artifacts related and the extension of dependency chain related to the artifact which was modified, this change may cause a impact on another use case which, by a first look, does not have any relation which the modified block of code. Predict impacts from in a specific artifact is a task which demands time to analysis, deep knowledge of the source-code and test effort. This paper presents an approach to automatize the identification of possible indirect conflicts using the developed tool, whose can determinate which use cases are more defect prone by source-code changes, providing a more effective direction to the test’s efforts. A Study Case was elaborated, assessing a real project of extensive dimension whose doesn’t have a automatized test case suite, and the developed tool was able to identify the indirect conflicts on differents cenarios and besides, the tool was able to proof in a empiric experiment which the major failures, caused by indirect conflicts could be avoided if the tool were be used during the development fase.porCNPQ::ENGENHARIAS: ENGENHARIA DE SOFTWAREConflitos indiretosRepositório de softwareAnálise estáticaGrafo de chamadas de métodosRevisão de códigoCodeTrack: uma ferramenta para análise contínua de conflitos indiretos de softwareinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisPROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE SOFTWAREUFRNBrasilinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFRNinstname:Universidade Federal do Rio Grande do Norte (UFRN)instacron:UFRNTEXTJoaoVictorDeOliveiraNeto_DISSERT.pdf.txtJoaoVictorDeOliveiraNeto_DISSERT.pdf.txtExtracted texttext/plain179977https://repositorio.ufrn.br/bitstream/123456789/24772/2/JoaoVictorDeOliveiraNeto_DISSERT.pdf.txt5cc8f4c94edb06b6d97914f5577f08cbMD52THUMBNAILJoaoVictorDeOliveiraNeto_DISSERT.pdf.jpgJoaoVictorDeOliveiraNeto_DISSERT.pdf.jpgIM Thumbnailimage/jpeg2620https://repositorio.ufrn.br/bitstream/123456789/24772/3/JoaoVictorDeOliveiraNeto_DISSERT.pdf.jpg0e8094c0473240326e43a0118bcee28bMD53TEXTJoaoVictorDeOliveiraNeto_DISSERT.pdf.txtJoaoVictorDeOliveiraNeto_DISSERT.pdf.txtExtracted texttext/plain179977https://repositorio.ufrn.br/bitstream/123456789/24772/2/JoaoVictorDeOliveiraNeto_DISSERT.pdf.txt5cc8f4c94edb06b6d97914f5577f08cbMD52THUMBNAILJoaoVictorDeOliveiraNeto_DISSERT.pdf.jpgJoaoVictorDeOliveiraNeto_DISSERT.pdf.jpgIM Thumbnailimage/jpeg2620https://repositorio.ufrn.br/bitstream/123456789/24772/3/JoaoVictorDeOliveiraNeto_DISSERT.pdf.jpg0e8094c0473240326e43a0118bcee28bMD53ORIGINALJoaoVictorDeOliveiraNeto_DISSERT.pdfJoaoVictorDeOliveiraNeto_DISSERT.pdfapplication/pdf2690226https://repositorio.ufrn.br/bitstream/123456789/24772/1/JoaoVictorDeOliveiraNeto_DISSERT.pdf98953b35dd62453bf6da95f43bba58d3MD51123456789/247722022-11-03 18:21:30.458oai:https://repositorio.ufrn.br:123456789/24772Repositório de PublicaçõesPUBhttp://repositorio.ufrn.br/oai/opendoar:2022-11-03T21:21:30Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)false
dc.title.pt_BR.fl_str_mv CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software
title CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software
spellingShingle CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software
Oliveira Neto, João Victor de
CNPQ::ENGENHARIAS: ENGENHARIA DE SOFTWARE
Conflitos indiretos
Repositório de software
Análise estática
Grafo de chamadas de métodos
Revisão de código
title_short CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software
title_full CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software
title_fullStr CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software
title_full_unstemmed CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software
title_sort CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software
author Oliveira Neto, João Victor de
author_facet Oliveira Neto, João Victor de
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/5736903367841961
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/4986614168117334
dc.contributor.referees1.none.fl_str_mv Medeiros, Sérgio Queiroz de
dc.contributor.referees1Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/0310395336626784
dc.contributor.referees2.none.fl_str_mv Pinto, Felipe Alves Pereira
dc.contributor.referees2Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/6163607072712192
dc.contributor.author.fl_str_mv Oliveira Neto, João Victor de
dc.contributor.advisor-co1.fl_str_mv Kulesza, Uira
dc.contributor.advisor-co1Lattes.fl_str_mv http://lattes.cnpq.br/0189095897739979
dc.contributor.advisor1.fl_str_mv Lima, Gleydson de Azevedo Ferreira
contributor_str_mv Kulesza, Uira
Lima, Gleydson de Azevedo Ferreira
dc.subject.cnpq.fl_str_mv CNPQ::ENGENHARIAS: ENGENHARIA DE SOFTWARE
topic CNPQ::ENGENHARIAS: ENGENHARIA DE SOFTWARE
Conflitos indiretos
Repositório de software
Análise estática
Grafo de chamadas de métodos
Revisão de código
dc.subject.por.fl_str_mv Conflitos indiretos
Repositório de software
Análise estática
Grafo de chamadas de métodos
Revisão de código
description A necessidade de evolução nos softwares tornou-se cada vez mais frequente e a engenharia de software precisou se adaptar para entregar produtos de qualidade em prazos cada vez menores. Para que o software continue sendo útil ao longo do tempo, para o propósito ao qual foi desenvolvido, é necessário que sejam realizadas mudanças ou incluídas novas funcionalidades para que este acompanhe as mudanças no contexto do negócio. Com essas mudanças, é inevitável que o software passe a aumentar de tamanho e, consequentemente, em complexidade. Essa expansão do software cria relacionamentos de dependência entre componentes do código-fonte e essas dependências se propagam em uma cadeia de dependências à medida que a aplicação cresce. Reescrever o mesmo trecho de código é uma prática não recomendada no desenvolvimento de software, pois implica em replicar código de forma distribuída e desordenada. Ao fazer o reuso, o mesmo trecho já escrito é referenciado em diferentes funcionalidades do sistema através da cadeia de dependência e chamadas de métodos, fazendo com que diferentes partes do código que estejam associadas a diferentes funcionalidades passem a depender de um mesmo componente. Alterações de trechos de código que possuem relação direta ou indireta com diferentes casos de uso podem levar a falhas imprevistas da aplicação, pois dependendo do número de artefatos envolvidos e da extensão da cadeia de dependências relacionada ao código alterado, uma mudança pode impactar um outro caso de uso que aparentemente não tem relação com o trecho de código modificado. Prever impactos decorrentes de alterações em um artefato é uma tarefa que exige tempo para análise, profundo conhecimento do código-fonte e esforço de teste. Este trabalho apresenta uma abordagem para automatizar a identificação de possíveis conflitos indiretos através de uma ferramenta, capaz de determinar quais casos de uso possuem maior probabilidade de serem impactados por mudanças no código-fonte, podendo assim direcionar os esforços de testes de forma mais eficaz. Foi elaborado um estudo para avaliar um projeto real de dimensão extensa que não possui uma suíte de testes automatizados e a ferramenta desenvolvida mostrou-se eficiente para detectar conflitos indiretos em diferentes cenários e também provou, através de um experimento empírico, que a maior parte das falhas decorrentes de conflitos indiretos teriam sido evitadas caso a ferramenta tivesse sido utilizada ainda na fase de desenvolvimento.
publishDate 2017
dc.date.issued.fl_str_mv 2017-08-31
dc.date.accessioned.fl_str_mv 2018-02-20T21:02:12Z
dc.date.available.fl_str_mv 2018-02-20T21:02:12Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv OLIVEIRA NETO, João Victor de. CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software. 2017. 95f. Dissertação (Mestrado Profissional em Engenharia de Software) - Instituto Metrópole Digital, Universidade Federal do Rio Grande do Norte, Natal, 2017.
dc.identifier.uri.fl_str_mv https://repositorio.ufrn.br/jspui/handle/123456789/24772
identifier_str_mv OLIVEIRA NETO, João Victor de. CodeTrack: uma ferramenta para análise contínua de conflitos indiretos de software. 2017. 95f. Dissertação (Mestrado Profissional em Engenharia de Software) - Instituto Metrópole Digital, Universidade Federal do Rio Grande do Norte, Natal, 2017.
url https://repositorio.ufrn.br/jspui/handle/123456789/24772
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.program.fl_str_mv PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE SOFTWARE
dc.publisher.initials.fl_str_mv UFRN
dc.publisher.country.fl_str_mv Brasil
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFRN
instname:Universidade Federal do Rio Grande do Norte (UFRN)
instacron:UFRN
instname_str Universidade Federal do Rio Grande do Norte (UFRN)
instacron_str UFRN
institution UFRN
reponame_str Repositório Institucional da UFRN
collection Repositório Institucional da UFRN
bitstream.url.fl_str_mv https://repositorio.ufrn.br/bitstream/123456789/24772/2/JoaoVictorDeOliveiraNeto_DISSERT.pdf.txt
https://repositorio.ufrn.br/bitstream/123456789/24772/3/JoaoVictorDeOliveiraNeto_DISSERT.pdf.jpg
https://repositorio.ufrn.br/bitstream/123456789/24772/2/JoaoVictorDeOliveiraNeto_DISSERT.pdf.txt
https://repositorio.ufrn.br/bitstream/123456789/24772/3/JoaoVictorDeOliveiraNeto_DISSERT.pdf.jpg
https://repositorio.ufrn.br/bitstream/123456789/24772/1/JoaoVictorDeOliveiraNeto_DISSERT.pdf
bitstream.checksum.fl_str_mv 5cc8f4c94edb06b6d97914f5577f08cb
0e8094c0473240326e43a0118bcee28b
5cc8f4c94edb06b6d97914f5577f08cb
0e8094c0473240326e43a0118bcee28b
98953b35dd62453bf6da95f43bba58d3
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)
repository.mail.fl_str_mv
_version_ 1802117723167129600