DR-tools code health : uma abordagem para priorização de smells para apoiar a manutenção e evolução de software
dc.contributor.advisor | Pimenta, Marcelo Soares | pt_BR |
dc.contributor.author | Lacerda, Guilherme Silva de | pt_BR |
dc.date.accessioned | 2024-11-01T06:47:37Z | pt_BR |
dc.date.issued | 2024 | pt_BR |
dc.identifier.uri | http://hdl.handle.net/10183/280749 | pt_BR |
dc.description.abstract | Durante a manutenção e evolução do software, a dívida técnica é uma questão recorrente, já que modificações no software tendem a adicionar problemas aparentes de design, como falta de testes, problemas arquiteturais e um grande número de code smells, levando à degradação do código. Smells, englobando problemas de software a nível de código e falhas de princípios de design, impactam negativamente a qualidade e manutenção do software. Para monitorar e acompanhar esses smells, a priorização é uma estratégia eficaz, permitindo que desenvolvedores identifiquem e mitiguem problemas críticos de forma tática. Apesar de ser essencial na gestão da dívida técnica, a priorização de smells ainda carece de um conjunto sólido, validado e amplamente usado de modelos e ferramentas, permanecendo um campo aberto e relevante de pesquisa. O objetivo desta tese é investigar a importância da priorização de smells para o desenvolvimento e manutenção de software e propor o DR-Tools Code Health, uma nova abordagem para priorização de smells. Esta abordagem engloba a definição e detecção de mais de smell em um mesmo elemento de código, além da classificação e filtragem destes smells, permitindo que os desenvolvedores identifiquem no código as partes mais problemáticas e que necessitam de atenção, e as tornem candidatas prioritárias para refatorações, ma nutenção e evolução de software. O método proposto é inspirado no Método de Hanlon, amplamente usado para priorização de problemas de saúde em países em desenvolvi mento. Dois experimentos foram realizados: o primeiro avalia a percepção dos profissionais da indústria, revelando eficácia na identificação de problemas de código com alta concordância nas análises de métodos e classes, embora muitos desenvolvedores não tenham percebido mudanças, sugerindo a necessidade de melhorias na comunicação dos resultados. No segundo experimento, foram investigados 5 projetos open-source quanto à priorização e impacto dos smells em atributos de qualidade. Observou-se um padrão de aumento gradual ou constante dos smells, alinhado a estudos anteriores. O conceito de smell churn rate foi destacado, com o projeto JetUML mostrando redução significativa de smells entre versões. A estratégia de priorização baseou-se em melhorias oportunis tas, com modularidade e manutenibilidade sendo os atributos de qualidade mais afetados pelos smells. As principais contribuições deste trabalho incluem a i) abordagem multicritério para pri orização de smells, ii) um método para contabilizar adições/remoções dos smells entre duas versões e iii) duas ferramentas open-source, uma que dá suporte ao uso do método proposto e outra que implementa o método de inserções/remoções dos smells. | pt_BR |
dc.description.abstract | During software maintenance and evolution, technical debt is a recurring issue, as soft ware modifications tend to introduce apparent design problems, such as a lack of tests, architectural issues, and a large number of code smells, leading to code degradation. Smells, encompassing software problems at the code level and violations of design prin ciples, negatively impact the quality and maintainability of the software. To monitor and track these smells, prioritization is an effective strategy, allowing developers to tactically identify and mitigate critical issues. Despite being essential for managing technical debt, the prioritization of smells still lacks a solid, validated, and widely used set of models and tools, remaining an open and relevant field of research. The objective of this thesis is to investigate the importance of smell prioritization for software development and maintenance and to propose DR-Tools Code Health, a new approach for smell prioritization. This approach encompasses the definition and detection of multiple smells in the same code element, as well as the classification and filtering of these smells, enabling developers to identify the most problematic parts of the code that require attention, making them priority candidates for refactoring, maintenance, and software evolution. The proposed method is inspired by Hanlon’s Method, widely used for prioritizing health issues in developing countries. Two experiments were conducted: the first evaluates the perception of industry profes sionals, revealing effectiveness in identifying code problems with high agreement in the analysis of methods and classes, although many developers did not perceive changes, suggesting the need for improvements in communicating the results. In the second exper iment, 5 open-source projects were investigated regarding the prioritization and impact of smells on quality attributes. A pattern of gradual or consistent increase in smells was observed, aligned with previous studies. The concept of smell churn rate was highlighted, with the JetUML project showing a significant reduction in smells between versions. The prioritization strategy was based on opportunistic improvements, with modularity and maintainability being the quality attributes most affected by smells. The main contributions of this work include i) a multicriteria approach for smell prioriti zation, ii) a method for accounting for additions/removals of smells between two versions, and iii) two open-source tools, one that supports the proposed method and another that implements the method for tracking smell insertions/removals. | en |
dc.format.mimetype | application/pdf | pt_BR |
dc.language.iso | eng | pt_BR |
dc.rights | Open Access | en |
dc.subject | Qualidade de software | pt_BR |
dc.subject | Code smells | en |
dc.subject | Design smells | en |
dc.subject | Manutencao : Software | pt_BR |
dc.subject | Refatoração | pt_BR |
dc.subject | Prioritization approach | en |
dc.subject | Dívida técnica | pt_BR |
dc.subject | Software quality | en |
dc.subject | Soft ware maintenance and evolution | en |
dc.subject | Design issues | en |
dc.title | DR-tools code health : uma abordagem para priorização de smells para apoiar a manutenção e evolução de software | pt_BR |
dc.title.alternative | DR-Tools Code Health: a smells prioritization approach to support software maintenance and evolution | pt |
dc.type | Tese | pt_BR |
dc.identifier.nrb | 001214192 | pt_BR |
dc.degree.grantor | Universidade Federal do Rio Grande do Sul | pt_BR |
dc.degree.department | Instituto de Informática | pt_BR |
dc.degree.program | Programa de Pós-Graduação em Computação | pt_BR |
dc.degree.local | Porto Alegre, BR-RS | pt_BR |
dc.degree.date | 2024 | pt_BR |
dc.degree.level | doutorado | pt_BR |
Este item está licenciado na Creative Commons License
-
Ciências Exatas e da Terra (5117)Computação (1762)