Redação do Site Inovação Tecnológica - 13/07/2006
Uma equipe de cientistas da computação da Universidade de Illinois, Estados Unidos, liderados pela professora Yuanyuan Zhou, construiu um conjunto de ferramentas que consegue achar erros em programas - os famosos "bugs" - inferindo as intenções do programador. O programa localizador de erros analisa a forma como o programador escreve o código-fonte.
"A maioria das ferramentas de detecção de bugs exige a reprodução dos erros durante a execução," diz Zhou. "O programa roda significativamente mais lento enquanto é monitorado por essas ferramentas, que observam a existência de certos tipos de comportamento anormal. A maioria de nossos programas, entretanto, funciona examinando apenas o código-fonte, exigindo muito pouco esforço dos programadores."
A ferramenta CP-Miner, por exemplo, encontrou vários bugs nas últimas versões dos mais populares programas de código aberto do mercado. O programa é também extremamente rápido - ele consegue analisar de 3 a 4 milhões de linhas de código para os chamados bugs do "copiar e colar" em apenas meia-hora. Além de examinar, ele corrige o código, fazendo modificações consistentes com o programa como um todo.
Bugs do "copiar e colar" referem-se a erros derivados do reaproveitamento de código, que geralmente aparecem em programas muito grandes. Embora economizem muito tempo dos programadores, copiar e colar rotinas pode ser uma fonte de uma infinidade de bugs, devido à inconsistências entre o código colado e o programa receptor.
Já o programa PR-Miner procura por regras de programação implícitas no código. Detectadas as regras, ele verifica se elas foram seguidas em todo o código.
Programas com alergia
A ferramenta Rx é diferente: ela trata os erros de programa não como "doenças fatais" - que causam o travamento da máquina - mas como alergias - permitindo que o programa "sobreviva".
"Se você é alérgico a gatos, você tenta evitar os gatos," explica a professora. "De forma muito parecida, o Rx é uma terapia que tenta evitar as falhas do software. Se ele falha, o Rx traz o programa de volta para um ponto de checagem recente, e reexecuta o programa em um ambiente modificado."