Investigando Code Smells em Sistemas suportador por Aprendizado de Máquina
Com o aumento contínuo da disponibilidade de volumes de dados grandes e complexos, Machine Learning (ML) vêm crescendo como a inteligência por trás dos Sistemas Suportados por Machine Learning (MLES) para resolver problemas técnicos na indústria e academia. Em tais sistemas, desenvolvedores implementam duas camadas de código, a camada de código inteligente e a de código não inteligente, ambas suscetíveis aos problemas previamente conhecidos pela Engenharia de Software. A literatura sugere que particularidades presentes em código inteligente dificultam seu desenvolvimento. Por exemplo, certos algoritmos de ML produzem comportamento estocástico, o que lança desafios a validação e verificação de código. No mesmo sentido, o desenvolvimento guiado por melhorias torna o código mais suscetível a problemas de engenharia como code smells. Trabalhos anteriores investigaram a presença de code smells em MLES, sugerindo que alguns tipos de smells estão mais presentes em tais sistemas do que nos clássicos. Entretanto, as razões para tais observações são desconhecidas. Neste trabalho, propomos uma investigação da relação entre particularidades presentes no desenvolvimento de MLES e a ocorrência de cheiros de código. Para este fim, esperamos: (i) Coletar repositórios de MLES; (ii) detectar code smells em seu código; (iii) criar um catálogo de atividades de desenvolvimento de MLES; (iv) Executar com desenvolvedores experientes um experimento de associação entre code smells e atividades; Por fim, (v) explorar a relação entre ocorrências de code smells e particularidades presentes nas atividades de desenvolvimento de MLES.
Code smells; Aprendizado de Máquina; Sistemas