• Home
  • Química
  • Astronomia
  • Energia
  • Natureza
  • Biologia
  • Física
  • Eletrônicos
  • Clone wars - encontrando cópias de código com erros

    Chanchal Roy, professor associado do Departamento de Ciência da Computação. Crédito:Kris Foster

    O código é onipresente e a maioria das indústrias ao redor do mundo confia em software baseado em código para manter as operações do dia-a-dia em execução, disse Chanchal Roy, professor associado do Departamento de Ciência da Computação.

    "As funções mais simples usam código, e código ruim pode ter um impacto enorme, "disse Roy, que ingressou na Faculdade de Artes e Ciências em 2009. "Infelizmente, a forma como os desenvolvedores copiam o código pode resultar em muitos bugs ou erros, algo que minha pesquisa aborda. "

    É uma prática comum para desenvolvedores de software copiar, cole e modifique um fragmento de código existente para se adequar à tarefa ou ferramenta em que estão trabalhando. Isso é chamado de clonagem, e o código resultante do processo de copiar e colar é, claro, chamado de clone.

    "Existem razões válidas pelas quais a clonagem é tão comum, "disse Roy, cuja pesquisa é apoiada por um Conselho de Pesquisa em Ciências Naturais e Engenharia do Canadá Accelerator Grant. "Isso economiza tempo, há baixo risco no uso de código estável, e resulta em um desenvolvimento mais rápido. Não há necessidade de reinventar a roda."

    O problema, Roy é rápido em apontar, é que muitas vezes a clonagem de código resulta na clonagem de "bugs" desconhecidos também, e esses erros podem se espalhar rapidamente.

    "Se você tem um bug no código original, você está copiando erros repetidamente, "disse ele." Mesmo se você encontrar uma instância do bug, é quase impossível encontrar todos eles ... o que resulta em muitas indústrias usando código desatualizado em vez de código novo que potencialmente contém bugs. "

    Em parte por causa dos problemas relacionados à clonagem e aos clones cheios de erros resultantes, até 85 por cento do custo de desenvolvimento de software pode ir para a manutenção de software, incluindo detecção de clones.

    "É uma espada de dois gumes, "disse Roy." A clonagem é comum devido aos benefícios para os programadores, mas os clones podem carregar bugs que também são realmente problemáticos. "

    Detecção de clones, uma área em que Roy dedicou muito tempo de pesquisa, significa encontrar fragmentos de código semelhantes para resolver problemas de bug. Em sua forma mais simples, é como fazer uma pesquisa de documento por palavras específicas. Em sua forma mais complexa, é como procurar uma agulha em um palheiro, especialmente se o código original foi modificado (que é a forma mais comum de clonagem) e está em um programa que contém milhões de linhas de código.

    Abordar esta questão, Roy e seu colaborador de pesquisa James Cordy, da Queen's University, desenvolveram vários sistemas de detecção de clones que procuram fragmentos de código semelhantes. Existem dois critérios principais necessários para um bom sistema de detecção de clones:precisão, que é a capacidade de detectar clones corretamente; e lembre-se, um termo que se refere à porcentagem de clones detectados em relação ao número total de clones presentes. Roy e Cordy desenvolveram o primeiro sistema de detecção de clones, chamado NICAD, que se destaca em precisão e recall.

    "Assim que definirmos quais semelhanças pesquisar, NICAD pode detectar clones modificados, "Roy disse, observando que uma grande quantidade de testes em humanos, incluindo a verificação de mais de nove milhões de fragmentos clonados, tem se empenhado em garantir que o sistema de detecção de clones seja preciso.

    Por meio de sua avaliação da detecção de clones, Roy também se tornou um líder mundial na área de benchmarking de ferramentas de detecção de clones com o desenvolvimento da ferramenta BigCloneBench.

    O potencial dos sistemas de detecção de clones de Roy e do trabalho de benchmarking não passa despercebido. Roy e Cordy receberam recentemente dois prêmios de Papel Mais Influente, em reconhecimento do “impacto duradouro das contribuições feitas nos 10 anos anteriores”. Seu trabalho em benchmarking e NICAD foram reconhecidos pela Conferência Internacional sobre Análise de Software, Evolução e Reengenharia, e a Conferência Internacional sobre Compreensão de Programas, respectivamente.

    Olhando para a próxima década, Roy disse que gostaria de desenvolver um "sistema de clonagem seguro" que não apenas detectasse clones corrompidos, mas também é capaz de aconselhar sobre como consertar bugs no sistema, ou até mesmo removê-los automaticamente.

    "Isso tem o potencial de economizar muito tempo e dinheiro, mas não tenho certeza se posso fazer isso nos próximos 20 anos, "disse Roy com um leve sorriso e risada.


    © Ciência https://pt.scienceaq.com