Aplicação de Machine Learning na Gestão de Dívida Técnica
##plugins.themes.bootstrap3.article.main##
Resumo
Dívida Técnica (DT) refere-se aos problemas ocasionados quando tarefas do desenvolvimento de software encontram-se pendentes ou mal executadas. Ao mesmo tempo em que estas ações podem proporcionar maiores benefícios a curto prazo, há em contrapartida riscos ao projeto, dificultando sua evolução e gestão (SEAMAN E GUO, 2011). De forma a manter uma DT sob controle, profissionais do desenvolvimento de software podem adotar diferentes estratégias especialmente desenvolvidas para esse fim. Estes recursos apoiam as diferentes atividades de gestão de DT, que vão desde a identificação, até a sua correção (LI; LIANG; AVGERIOU, 2014). No entanto, as estratégias que auxiliam no entendimento e gestão de DT, em sua maioria, são realizadas de forma manual, o que se torna um desafio para a indústria o (MELO et al., 2022). De forma a reduzir essa subjetividade, pesquisadores estão construindo soluções que melhorem a gestão de DT baseando-se na aplicação de algoritmos de Machine Learning (ML). No entanto, a quantidade de estudos que propõem recursos desenvolvidos a partir desses algoritmos, torna-se limitada e preliminar (TSINTZIRA et al., 2020). Neste sentido, este trabalho tem como objetivo propor a construção de uma infraestrutura que auxilie na aplicação de técnicas de ML no gerenciamento de DT, visando a correção automatizada dessas dívidas. Inicialmente, foi realizada uma Revisão Sistemática da Literatura (RSL) a fim de identificar evidências relacionadas a utilização de técnicas de ML na gestão de DT (Kitchenham e Charters, 2007). A busca pelos estudos primários foi realizada através da busca automática em bibliotecas digitais especializadas e de renome científico-acadêmico na área da Ciência da Computação. As fontes de busca utilizadas foram: (i) ACM Digital Library; (ii) IEEE Digital Library; (iii) Science Direct e (iv) SCOPUS. Buscando obter resultados relevantes entre as bibliotecas digitais na busca automática, uma string de busca foi formada a partir das palavras-chave "technical debt", "artificial intelligence" e "machine learning" com seus respectivos sinônimos em inglês. A busca inicial resultou em 777 estudos primários e, em seguida foram aplicados os critérios de inclusão e exclusão, resultando em um total de 108 estudos selecionados. No processo de avaliação da qualidade, os estudos resultantes foram lidos na íntegra para identificar quais atendiam aos critérios de qualidade e, respondiam as questões de pesquisa de maneira satisfatória, resultando em 47 estudos primários. Como resultados parciais, as técnicas de ML como Random Forest e Naive Bayes se destacaram na RSL pela quantidade de citações nos estudos. São amplamente utilizadas em tarefas de classificação de texto, alcançando boa precisão na identificação de DT em comentários de código-fonte (Li, Soliman e Avgeriou, 2022). A escolha da técnica depende do contexto específico, como a necessidade de classificar automaticamente grandes volumes de código ou identificar padrões em dados de histórico de desenvolvimento. Como exemplo, o estudo de (ABBAS et al., 2020). utiliza algoritmos como Random Forest, Decision Trees e Support Vector Machines (SVM), para treinar modelos preditivos baseados em dados históricos de mudanças e métricas de software, como complexidade, quantidade de linhas de código, e coesão em métodos. A eficácia dos modelos é avaliada através de métricas de performance, como precisão, recall e F1-score. Além disso, a dívida técnica de código representou cerca de 53% das pesquisas e das soluções desenvolvidas com a aplicação de ML, bem como, estudos primários estão dedicando suas pesquisas à DT auto-admitida ou intencional (SATD), a qual refere-se a situações em que os desenvolvedores estão cientes de que a implementação atual não é a melhor, no entanto, adicionam comentários como um lembrete para correção futura. Assim, ML está sendo utilizado nas atividades de classificação de texto para identificar SATD em comentários de código, uma vez que, podem utilizar informações semânticas para uma identificação eficiente de categorias de texto. Adicionalmente, observou-se quais desafios são alcançados ao aplicar técnicas de ML no gerenciamento de DT. Como desafios, destaca-se o fato de que DT se manifesta nas diferentes atividades do desenvolvimento de um software. A heterogeneidade da DT dificulta o treinamento de um único modelo abrangente para lidar com todos os tipos. Considerando a complexidade e diversidade dos tipos de DT, o escopo da aplicação de ML neste trabalho será focado inicialmente na identificação de SATD em comentários de código e a previsão do esforço necessário para a correção especifica dessa DT. As técnicas de ML serão aplicadas diretamente no ambiente de desenvolvimento de software, integrando-se a ferramentas de gestão de código e DT. Isso permitirá a análise contínua do código e a detecção automatizada de DT, reduzindo a carga de trabalho manual dos desenvolvedores. A aplicação será feita através do desenvolvimento de modelos de ML que serão treinados com dados de código-fonte e histórico de projetos, esses modelos serão integrados a pipelines de desenvolvimento, automatizando a detecção e recomendação de ações corretivas. Para que esses objetivos sejam atingidos, pretende-se aplicar técnicas de ML na resolução de problemas no contexto de DT, com base na seleção e replicação de estudos da RSL. Bem como, analisar e triangular as informações coletadas em cada atividade para ao final desenvolver o TechDebtML, uma infraestrutura computacional destinada a apoiar o compartilhamento do conhecimento sobre dívida técnica e ML. A solução será destinada a desenvolvedores de software que lidam diretamente com a manutenção e evolução do código. Gestores de projetos e arquitetos de software também poderão utilizar as previsões geradas pelos modelos de ML para melhorar o planejamento e a alocação de recursos. Para avaliar a proposta desenvolvida, será realizada sessões de grupo focal com especialistas na área e profissionais de desenvolvimento de software. O desenvolvimento do trabalho tem o objetivo de fornecer informações relevantes para suprir as dificuldades que os profissionais da indústria encontram para compreender e gerenciar DT em seus projetos.
Downloads
Não há dados estatísticos.
##plugins.themes.bootstrap3.article.details##
Seção
Engenharia da Computação e Sistemas