Motivação
A qualidade do código é fundamental em qualquer projeto de desenvolvimento de software, o que se estende ao contexto de sistemas baseados em ciência de dados e aprendizado de máquina.
A crescente complexidade dos algoritmos de aprendizado e a diversidade de bibliotecas e arcabouços para ciência de dados disponíveis reforçam a necessidade de padrões de qualidade de código para a área. Durante o desenvolvimento desses projetos, a atenção é direcionada geralmente aos algoritmos, dados e às interfaces das bibliotecas de ciência de dados e aprendizado de máquina, deixando em segundo plano a qualidade do código. Essa negligência pode resultar em um software propenso a erros, de difícil entendimento e manutenção, resultando na presença de diversos maus cheiros (“code smells”). Estes elementos facilitam o aparecimento de bugs e prejudicam a colaboração entre desenvolvedores, podendo ir desde funções com muitos parâmetros até a falta de modularização em classes.
Desse modo, inspirado nos princípios estabelecidos na literatura, em particular no livro “Clean Code” de Robert C. Martin, a busca por boas práticas que garantam um código de qualidade se torna necessária para a eficiência, compreensão e manutenção desses sistemas a longo prazo.
Principais Fatores Motivadores
- Crescente complexidade dos algoritmos de aprendizado de máquina e diversidade de bibliotecas
- Necessidade de padrões de qualidade de código em projetos de ciência de dados
- Prevenção de maus cheiros ("code smells") que facilitam bugs e prejudicam a colaboração
- Aplicação de princípios do "Clean Code" em contextos de ciência de dados e aprendizado de máquina
Objetivos
O presente projeto tem como objetivo desenvolver uma ferramenta web para identificar maus cheiros em projetos de ciência de dados e aprendizado de máquina. Essa ferramenta não se destina apenas a profissionais da área de computação, mas, principalmente, visa atender especialistas de diversas outras áreas, que precisam garantir a qualidade e a legibilidade de seus códigos. Dessa forma, a ferramenta permitirá a detecção de práticas inadequadas de programação que comprometem a eficiência e a manutenção do código, possibilitando refatorações mais precisas.
Além disso, o projeto propõe a criação de um painel interativo e intuitivo, que reunirá informações detalhadas sobre a qualidade do código. Esse painel apresentará métricas relevantes, como complexidade ciclomática, código duplicado e outras métricas de tamanho, permitindo uma avaliação rápida dos aspectos críticos do projeto.
Metodologia
Para a organização e registro das atividades e reuniões com o orientador, adotou-se a plataforma de anotações Notion.
Revisão Bibliográfica
O trabalho teve início em 2024, com o estudo da literatura formal, em particular os livros: Clean Code, Introduction to Software Design with Java e Implementation Patterns. Além disso, foram consultados blogs e tutoriais pertinentes ao trabalho.
Análise de Projetos
No próximo passo, iniciou-se a análise de três projetos de código aberto da área de ciência de dados e aprendizado de máquina, sob o ponto de vista da qualidade de código. Com o auxílio do Pylint, ferramenta de análise estática de código fonte, e do referencial teórico, identificaram-se maus cheiros de código e antipadrões em cada projeto.
Catálogo de Antipadrões
Após a detecção, os antipadrões mais relevantes foram selecionados, considerando tanto sua frequência de ocorrência quanto o impacto na performance das aplicações. Com base nessa seleção, uma descrição clara foi redigida para cada uma, trabalho que gerou um catálogo de antipadrões para projetos da área.
Design e Implementação
No ano de 2025, iniciou-se a construção da ferramenta que visa auxiliar desenvolvedores, com base no catálogo desenvolvido, na identificação dos principais antipadrões em seus projetos. Utilizando o Figma, ferramenta para elaboração e prototipação de interfaces, o design de um dashboard interativo com as principais funcionalidades foi elaborado, servindo de base para implementação incremental da aplicação.
Validação com Usuários
O desenvolvimento da ferramenta está hospedado no GitLab e foi organizado em milestones e issues, cada qual descrevendo uma das funcionalidades planejadas. A partir do mês de agosto, está prevista uma validação preliminar com usuários, cujo feedback será fundamental para o aprimoramento da ferramenta. No mês de outubro, outra validação está planejada para o desenvolvimento da versão final da aplicação.
Em paralelo, durante os meses de agosto a novembro, a monografia do TCC será elaborada, detalhando a implementação técnica da ferramenta, bem como os resultados obtidos através do feedback de usuários reais.
Cronograma
* O cronograma reflete as atividades realizadas em 2024 e previstas para 2025.