Aplicação de Machine Learning na Gestão de Dívida Técnica: um benchmark de ferramentas
##plugins.themes.bootstrap3.article.main##
Resumo
O termo conhecido como Dívida Técnica (DT) é uma metáfora apresentada por (CUNNINGHAM, 1992) para explicar o esforço ou custos adicionais de se utilizar soluções alternativas para alcançar os objetivos de curto prazo, muitas vezes, sem considerar a possibilidade de impactar negativamente o software a longo prazo. Semelhante a dívida financeira, DT pode ser acumulada ao longo do tempo e gerar "juros" na forma de custos adicionais de manutenção e retrabalho. Para manter a DT sob controle, os profissionais podem adotar diferentes estratégias e aplicar frameworks desenvolvidos para esse fim. Estes recursos apoiam as diferentes atividades de gestão de DT, que segundo (LI; AVGERIOU; LIANG, 2015), vão desde a identificação de um item, até a sua correção. 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, levando em consideração que grande parte dos processos são automatizados devido à agilidade e ao tempo de implementação (MELO et al., 2022). Dessa forma, identificar uma DT manualmente, por exemplo, torna-se uma atividade enviesada e custosa, uma vez que depende fortemente do julgamento de especialistas. 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 desses itens. 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; CHARTERS, 2007). Baseando-se nos resultados da RSL, foi possível perceber uma limitação de trabalhos que propõem ferramentas que possam automatizar o gerenciamento de DT, bem como a ausência de discussões sobre os requisitos essenciais para que esses recursos proporcionem uma gestão eficaz. Dessa forma, como segunda atividade conduzida neste projeto de doutorado, desenvolveu-se um benchmark com o objetivo de identificar e comparar características de ferramentas que possam auxiliar a automatizar a gestão de DT, as quais possam ser utilizadas por profissionais no desenvolvimento de software. Nesta pesquisa, o benchmark foi utilizado como uma metodologia de avaliação qualitativa, possibilitando analisar as ferramentas de gestão de DT e, foi executado em três etapas: Planejamento, Execução e Análise (PERIN; SILVA; VALENTIM, 2021). Na primeira etapa, as ferramentas foram selecionadas com base nos resultados da RSL conduzida anteriormente. Na sequência, as características analisadas nas ferramentas foram definidas. Estas particularidades foram escolhidas porque observou-se uma ausência desse tipo de análise na literatura, além de serem características que irão auxiliar na escolha de ferramentas ao problema abordado, sendo elas (i) Se as ferramentas possuem funcionalidades que facilitam a execução de uma ou mais etapas do processo de gestão de DT; (ii) Se as ferramentas são utilizadas de maneira específica no âmbito de DT ou contribuem para a gestão de tarefas de forma abrangente; (iii) Facilidade de uso na utilização e realização das tarefas; (iv) Se impactam positivamente na produtividade do projeto; (v) Se as ferramentas foram desenvolvidas utilizando inteligência artificial, ou especificamente ML. Na etapa de análise, seis ferramentas foram avaliadas individualmente em relação às características supracitadas. Vale ressaltar que, nem todas são utilizadas especificamente para gerenciar DT, mas no controle de tarefas durante o desenvolvimento de um projeto. Sendo elas: (i) Jenkins: servidor de automação de código aberto utilizado para processos de integração e entrega contínua; (ii) SonarQube: ferramenta de análise estática para manutenção de código-fonte; (iii) Jira: ferramenta popular de gerenciamento de projetos. Embora o JIRA não seja uma ferramenta específica para lidar com qualidade de código ou DT, ele oferece integrações que podem ajudar nessas áreas. Por exemplo, é possível criar um campo personalizado para acompanhar uma DT; (iv) FindBugs: analisador de código estático que detecta possíveis bugs e problemas de qualidade no código em projetos Java, incluindo DT; (v) Tracy-TD: ferramenta que considera a perspectiva do negócio para priorizar DT; e (vi) CodeScene: ferramenta de análise do comportamento do código, que combina dados de controle de versão com algoritmos de ML para identificar padrões sociais e riscos ocultos na base de código. Apenas duas das seis ferramentas foram desenvolvidas com a aplicação de ML. O Jira utiliza ML em aspectos para aprimorar a eficiência no gerenciamento de projetos, automatizar tarefas e auxiliar na tomada de decisões. Dentre alguns exemplos de como ML é utilizado no Jira, pode-se citar a análise de dados históricos de issues e do comportamento dos usuários, com isso, o Jira pode prever quanto tempo levará para resolver um novo issue, auxiliando na priorização de tarefas. O CodeScene utiliza diferentes algoritmos de ML para analisar o código-fonte do projeto e fornecer insights para os desenvolvedores sobre possíveis problemas de qualidade. Dentre as técnicas de ML, pode-se incluir: modelos de aprendizado supervisionado para identificar anomalias no código e Natural Processing Language para analisar comentários, documentação e outros textos associados ao código. As análises revelaram que as ferramentas atuais não são abrangentes o suficiente. Dessa forma, torna-se imperativo o desenvolvimento de uma ferramenta mais robusta, capaz de atender aos critérios estabelecidos, visando simplificar e tornar mais prático o processo de gestão de DT. Este estudo encontra-se atualmente em andamento, os resultados são preliminares mas está em evolução. O escopo futuro incluirá uma expansão das análises da RSL e do benchmarking, explorando a eficácia e limitações das ferramentas identificadas. Bem como, que estudos empíricos sejam realizados de forma a avaliar em projetos reais a eficácia das ferramentas. Ao final, espera-se apresentar à academia-indústria um corpo de conhecimento avaliado sobre recursos que possam automatizar a gestão de DT.
Downloads
Não há dados estatísticos.
##plugins.themes.bootstrap3.article.details##
Seção
Engenharia da Computação e Sistemas