hic sunt dracones

[trad] Refatorando COBOL para Java com Agentes de IA

A modernização de sistemas em COBOL é um dos desafios mais urgentes enfrentados por empresas atualmente. O Gartner estimou que existem mais de 200 bilhões de linhas de código COBOL em operação, executando 80% dos sistemas empresariais do mundo. Em 2020, o COBOL ainda era responsável por 95% dos processos de transação com cartões de crédito e débito.

O desafio é crítico: 47% das organizações atualmente têm dificuldade em preencher cargos que exigem COBOL, com salários crescendo 25% ao ano. Até 2027, 92% dos desenvolvedores restantes de COBOL terão se aposentado. As abordagens tradicionais de modernização têm apresentado altas taxas de falha, já que a sintaxe única do COBOL dificulta o trabalho de equipes humanas. Agora, a IA está alcançando o que exércitos de desenvolvedores não conseguiram: análise, transformação e verificação automatizadas de código em escala.

Uma abordagem de refinamento iterativo

Converter simplesmente a sintaxe de COBOL para Java não é suficiente — o código convertido precisa preservar a lógica de negócio, seguir as convenções do Java e ser mantido por equipes de desenvolvimento modernas.

Na OpenHands, uma das abordagens mais eficazes que encontramos é o padrão de refinamento iterativo usando múltiplos agentes em um ciclo de feedback:

  1. Um agente de refatoração converte arquivos COBOL em Java
  2. Um agente de crítica avalia a qualidade de cada conversão e atribui uma pontuação
  3. Se a pontuação estiver abaixo do limite de qualidade, o processo se repete com base no feedback da crítica

O resultado é mais do que apenas código executável: é código que reproduz fielmente o original e atende aos padrões de qualidade e manutenibilidade exigidos.

Como funciona

A ideia é simples: um agente realiza o trabalho, outro verifica o resultado e, se não estiver bom o suficiente, o primeiro tenta novamente com base no feedback. Veja como isso se parece em código usando o OpenHands SDK:

While current_score < QUALITY_THRESHOLD and iteration < MAX_ITERATIONS:  
# Agente de refatoração converte COBOL para Java  
refactoring_conversation.send_message(refactoring_prompt)  
refactoring_conversation.run()  
    
# Agente de crítica avalia a conversão  
critique_conversation.send_message(critique_prompt)  
critique_conversation.run()  
    
# Analisa a pontuação e decide se deve continuar  
current_score = parse_critique_score(critique_file)

O agente de refatoração recebe instruções sobre os requisitos da conversão: preservar a lógica de negócio, usar convenções de nomenclatura Java, implementar tratamento de erros e adicionar documentação.

O agente de crítica avalia cada arquivo convertido quanto à correção, qualidade do código, completude e boas práticas — gerando um relatório estruturado com problemas específicos a serem corrigidos. Se o código não atingir o padrão especificado, o agente de refatoração executa novamente com base no feedback, aplicando melhorias direcionadas.

Exemplo

Aqui está um programa COBOL de gerenciamento de clientes:

1000 - MAIN-PROCESS.  
DISPLAY "CUSTOMER MANAGEMENT SYSTEM"  
EVALUATE TRUE  
    WHEN OP-ADD  
        PERFORM 2000-ADD-CUSTOMER  
    WHEN OP-UPDATE  
        PERFORM 3000-UPDATE-CUSTOMER  
    WHEN OP-DELETE  
        PERFORM 4000-DELETE-CUSTOMER  
END - EVALUATE.  

O agente converte isso em Java idiomático:

public class CustomerManagement {  
    public void mainProcess() {  
        System.out.println("CUSTOMER MANAGEMENT SYSTEM");  
        switch (operation) {  
            case ADD -> addCustomer();  
            case UPDATE -> updateCustomer();  
            case DELETE -> deleteCustomer();  
            default -> System.out.println("INVALID OPERATION");  
        }  
    }  
}  

Experimente

O exemplo completo de refinamento iterativo está disponível no OpenHands SDK. Assim que os PRs pendentes forem mesclados, você poderá encontrá-lo em:

Para executar o exemplo:

export LLM_API_KEY="sua-api-key"  
cd software-agent-sdk  
uv run python examples/01_standalone_sdk/31_iterative_refinement.py  

Para arquivos COBOL reais, você pode usar a aplicação AWS CardDemo, que fornece um aplicativo de mainframe representativo para testar abordagens de modernização.

Escalando a aplicação com o Large Codebase SDK

O exemplo de refinamento iterativo funciona bem para bases de código pequenas e médias. Mas sistemas corporativos COBOL podem ter milhões de linhas em milhares de programas, com interdependências complexas.

Para esses projetos de modernização em larga escala, desenvolvemos o OpenHands Large Codebase SDK. Esse kit estende o padrão de refinamento iterativo com:

O Large Codebase SDK também inclui fluxos de trabalho especializados de refatoração de COBOL que compreendem padrões comuns de mainframe — transações CICS, jobs JCL, manipulação de arquivos VSAM — e os convertem em equivalentes apropriados em Java.

Saiba mais

Tradução pirata do artigo da OpenHands sobre Refactoring COBOL to Java with AI Agents


Citação do artigo original

OpenHands. 2025. 
“Refactoring COBOL to Java with AI Agents.” 
OpenHands Blog, December 18, 2025. 
https://openhands.dev/blog/20251218-cobol-to-java-refactoring