Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/35426
Type: Dissertação
Title: Bad smell agglomerations and their impact on software modularity
Other Titles: Aglomerações de anomalias de código e seu impacto na modularidade de software
Authors: Amanda Damasceno Santana
First Advisor: Eduardo Magno Lages Figueiredo
First Referee: André Cavalcante Hora
Second Referee: Marcelo de Almeida Maia
Abstract: Most systems must evolve to cope with new stakeholders requirements, or to fix existing problems. These changes are complex due to several factors, including the need of understanding the source code, activity that is impaired by the presence of bad smells. Bad smell is a symptom of bad decisions about the system design or code. When two or more bad smells occur in the same snippet of code, they form an agglomeration. Consequently, developers need to put more effort to perform their development and maintenance tasks. In this work, we evaluate agglomerations composed of four kinds of bad smells: Large Class, Long Method, Feature Envy, and Refused Bequest. We aim at evaluating how these agglomerations are spread in the source code, and how they impact on the software modularity. Our results are achieved through the use of association rules and effect size measurements. We have found that classes with two or more smells are frequent in the source code, even when the smells present in the class are of the same type. We also observed that agglomerations are the most spread in the source code, even when the size of the systems are taken into account. Agglomerations have a significant effect on most analyzed modularity metrics. This result means that they may affect class complexity, fault proneness, and coupling.
Abstract: A maioria dos sistemas devem evoluir a fim de implementar novos requisitos dos stakeholders, ou para corrigir problemas existentes. Estas mudanças são complexas devido a diversos fatores, incluindo a necessidade de compreender o código fonte do sistema, atividade que é prejudicada pela presença de anomalias de código. Anomalias de código são sintomas de más decisões sobre o projeto do sistema ou simplesmente de seu código. Contudo, quando duas ou mais anomalias acontecem no mesmo pedaço de código, elas formam uma aglomeração. Consequentemente, desenvolvedores precisam se esforçar muito mais para realizar suas atividades de desenvolvimento e manutenção. Neste trabalho, nós avaliamos aglomerações formadas por quatro tipos de anomalias: Large Class, Long Method, Feature Envy e Refused Bequest. Nosso objetivo é avaliar como estas aglomerações estão espallhadas no código fonte, e como elas impactam na modularidade do software. Nossos resultados são alcançados através do uso de regras de associação e medidas de tamanho do efeito. Nós encontramos que classes com duas ou mais anomalias são frequentes no código fonte, até mesmo quando consideramos somente o mesmo tipo de anomalia. Elas também são altamente espalhadas no código fonte, mesmo quando o tamanho do sistema é levado em consideração. Também, nós descobrimos que elas realmente impactam a modularidade. Estes resultados significam que elas podem afetar a complexidade da classe, torná-las mais propensas a problemas, e mais acopladas a outras classes.
Subject: Computação – Teses.
Bad smell – Teses.
Aglomeração – Teses.
Anomalias de código (Engenharia de software) – Teses.
Software - Reutilização – Teses.
language: eng
metadata.dc.publisher.country: Brasil
Publisher: Universidade Federal de Minas Gerais
Publisher Initials: UFMG
metadata.dc.publisher.department: ICEX - INSTITUTO DE CIÊNCIAS EXATAS
metadata.dc.publisher.program: Programa de Pós-Graduação em Ciência da Computação
Rights: Acesso Restrito
URI: http://hdl.handle.net/1843/35426
Issue Date: 30-Oct-2020
metadata.dc.description.embargo: 30-Oct-2021
Appears in Collections:Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
Amanda Santana - Dissertação.pdf959.82 kBAdobe PDFView/Open


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