Melhorando Estimativas de Projetos com Machine Learning
Aprenda como as técnicas de machine learning melhoram a estimativa de esforço em projetos de software.
― 8 min ler
Índice
Mais e mais empresas de software estão percebendo o valor de acompanhar os dados dos seus Projetos. Essa informação pode ajudar a criar planos melhores para estimar o trabalho que vai ser necessário em projetos futuros. Analisando dados passados, essas empresas conseguem desenvolver maneiras melhores de calcular quanto tempo vai levar para suas equipes terminarem um projeto. Esse artigo mostra como novas técnicas, usando Aprendizado de Máquina, ajudam a estimar o esforço necessário para o desenvolvimento de software tanto de forma flexível (Ágil) quanto tradicional (não ágil).
Desafios na Estimativa de Esforço
Os gerentes de projetos de software querem chegar em boas estimativas sobre quanto trabalho vai dar para finalizar um projeto. Porém, alguns acham que essa tarefa é quase impossível, enquanto outros acreditam que dá pra fazer, especialmente com dados passados suficientes. A abordagem que cada empresa toma para estimar o trabalho pode variar bastante dependendo do tipo de software que elas criam. Esse artigo vai discutir as últimas técnicas de aprendizado de máquina para estimar o esforço e agrupar em métodos não ágeis e ágeis.
O Papel do Aprendizado de Máquina
O aprendizado de máquina se tornou uma ferramenta útil para diferentes problemas, desde reconhecer rostos até recomendar produtos. Ele também teve um impacto significativo na engenharia de software. Estudos recentes mostraram que várias atividades de software, incluindo design, implementação, teste, manutenção e gerenciamento, foram temas de pesquisa usando aprendizado de máquina. Essas atividades geralmente envolvem vários tópicos específicos, com o gerenciamento de software focando em áreas como análise de repositórios de software e previsão de custos.
Estimativa de esforço em projetos de software não é fácil. Para fazer as melhores estimativas possíveis, as empresas precisam usar informações passadas. Pesquisas mostram que ter dados históricos relacionados a projetos similares pode levar a estimativas melhores. Mas ainda tem uma lacuna entre o que já se sabe e o que precisa ser aprendido para superar desafios na estimativa de esforço para o desenvolvimento de software.
Previsão de Esforço Não Ágil
Duas décadas atrás, um estudo significativo analisou 147 projetos para entender seus esforços e prazos. Eles descobriram que 63% das estimativas estavam dentro de 25% do resultado real. Essa descoberta sugere que conseguir estimativas precisas é possível. Um dos primeiros estudos utilizando aprendizado de máquina para estimar esforço de software foi feito com vários algoritmos contra métodos tradicionais. Os resultados mostraram que as técnicas de aprendizado de máquina se saíram competitivas. Uma grande vantagem é que esses algoritmos podem se adaptar a novas informações ao longo do tempo.
Outro estudo revisou 304 artigos relacionados à estimativa de custo de software. Os autores recomendaram ajustes que acreditavam que melhorariam a pesquisa nessa área. Existem diferentes modelos que são analisados para a estimativa de esforço, como regressão linear simples e modelos de redes neurais mais complicados. Comparações recentes mostraram que redes neurais tendem a oferecer melhor precisão que modelos mais simples.
Um estudo recente avaliou três modelos de aprendizado de máquina usando um conjunto de dados bem conhecido com 93 projetos. Essa pesquisa comparou três métodos que não são os mais avançados, mas que servem como um bom ponto de partida. Os resultados mostraram que todos os três métodos se saíram melhor que o modelo COCOMO estabelecido, com um método se destacando como o melhor.
A previsão de esforço baseada no tamanho da equipe também foi investigada, juntando modelos de custo tradicionais com técnicas modernas como a regressão de vetor de suporte.
Previsão de Esforço Ágil
Estimar esforço em projetos ágeis gira principalmente em torno de descobrir quanto trabalho é necessário para completar histórias de usuários. Um novo modelo propôs uma forma de estimar pontos de história usando uma mistura de técnicas avançadas de aprendizado de máquina. Experimentos com projetos de código aberto mostraram que essa abordagem consistentemente superou outros métodos.
Vários estudos exploraram diferentes tipos de redes neurais para avaliar sua eficácia em ambientes ágeis. Pesquisadores tentaram criar métodos fáceis de treinar que entreguem resultados comparáveis às técnicas existentes. Resultados mostraram que um tipo específico de rede neural se saiu bem ao lado de um modelo de incorporação de palavras.
Uma comparação extensa de estimadores de software foi feita usando conjuntos de dados padrão. As descobertas revelaram que um modelo baseado em analogias adaptado por métodos de aprendizado de máquina foi a abordagem com melhor desempenho. Outra abordagem inovadora focou em aprender com erros passados. Analisando erros anteriores cometidos por especialistas, pesquisadores puderam melhorar futuras estimativas, revelando que o tipo e a gravidade desses erros eram previsíveis.
Dois conjuntos de dados comumente usados na estimativa de esforço no desenvolvimento ágil são o conjunto de dados Choetkiertikul e o conjunto de dados TAWOS. O conjunto de dados Choetkiertikul contém milhares de questões de projetos de código aberto, fornecendo informações valiosas para a estimativa de pontos de história. O conjunto de dados TAWOS, por outro lado, consiste em informações de projetos ágeis e é usado para vários problemas de engenharia de software.
Não Ágil vs. Ágil
Quando se trata de estimar esforço em projetos não ágeis, o foco geralmente é no projeto inteiro ou em grandes módulos. Essa abordagem pode levar a erros aumentados devido à complexidade de muitas linhas de código. No desenvolvimento ágil, as previsões podem ser feitas em uma escala menor, permitindo estimativas para engenheiros ou equipes individuais.
Acompanhar estimativas de esforço e o esforço real necessário ajuda a fornecer vários benefícios. Isso permite que as empresas calculem taxas de subestimação para cada engenheiro, ofereçam feedback sobre novas estimativas e identifiquem engenheiros de alto desempenho em tarefas específicas. Com o tempo, à medida que os engenheiros ganham experiência, suas estimativas se tornam mais precisas, levando a melhores habilidades de design e menos erros nas estimativas.
Tendências Atuais e Futuras
Quatro tipos principais de técnicas surgiram para estimar o esforço de desenvolvimento de software. Esses incluem algoritmos evolutivos, árvores de decisão, redes neurais rasas e métodos de aprendizado profundo. As várias abordagens utilizam diferentes características de dados históricos, como linhas de código, tipo de aplicação, nomes de casos de uso e pontos de complexidade para histórias de usuários.
Embora o aprendizado profundo tenha se popularizado em muitas áreas que dependem de previsões baseadas em dados, métodos simples como a regressão linear ainda podem ser eficazes na estimativa de histórias ágeis e são mais fáceis de manter. No entanto, novos modelos de redes neurais provavelmente continuarão a ser explorados, particularmente aqueles que focam no mecanismo de atenção usado no processamento de linguagem.
Nos últimos anos, mais empresas começaram a usar software de gerenciamento de projetos para acompanhar tarefas. Essa prática resulta em conjuntos de dados maiores, se tornando valiosos para criar modelos de previsão precisos no futuro. A tendência sugere que haverá um maior uso de sistemas de rastreamento e gerenciamento com uma variedade de capacidades de previsão, incluindo estimativa de esforço para histórias individuais, equipes e projetos inteiros.
A estimativa de esforço no desenvolvimento de software não é só possível, mas pode ser feita com um grau razoável de precisão. Redes neurais avançadas podem aprender com dados de projetos passados e reconhecer padrões que ajudam a fazer previsões melhores. No entanto, quando projetos diferem significativamente dos dados históricos, a precisão das previsões pode cair. Portanto, mais pesquisas são necessárias para abordar essas questões e melhorar os modelos de estimativa.
À medida que mais empresas adotam métodos ágeis de desenvolvimento de software, é provável que as práticas de estimativa que visam o trabalho de engenheiros individuais se tornem mais refinadas. Essa mudança, no final das contas, vai aprimorar a capacidade das equipes de software de estimar e planejar seu trabalho de forma eficaz.
Título: Recent Advances in Software Effort Estimation using Machine Learning
Resumo: An increasing number of software companies have already realized the importance of storing project-related data as valuable sources of information for training prediction models. Such kind of modeling opens the door for the implementation of tailored strategies to increase the accuracy in effort estimation of whole teams of engineers. In this article we review the most recent machine learning approaches used to estimate software development efforts for both, non-agile and agile methodologies. We analyze the benefits of adopting an agile methodology in terms of effort estimation possibilities, such as the modeling of programming patterns and misestimation patterns by individual engineers. We conclude with an analysis of current and future trends, regarding software effort estimation through data-driven predictive models.
Autores: Victor Uc-Cetina
Última atualização: 2023-03-06 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2303.03482
Fonte PDF: https://arxiv.org/pdf/2303.03482
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.