Blog · Sistemas legados

Como modernizar um sistema Delphi: atualizar, migrar ou reescrever?

Muito ERP, sistema de automação comercial e controle industrial no Brasil foi escrito em Delphi entre o fim dos anos 90 e os anos 2000, e continua rodando. Para quem depende de um deles, a dúvida raramente é se modernizar: é como fazer isso sem parar a empresa. Diferente do VB6, o Delphi ainda tem fabricante, e isso abre um caminho a mais. Este guia mostra os quatro caminhos e como escolher.

Em resumo

Se o sistema sustenta a operação e a equipe domina Delphi, atualizar para uma versão atual (trocando o BDE e os componentes abandonados) resolve a compatibilidade sem mudar de linguagem. Se o problema é gente, acesso web ou integração, o caminho mais seguro é migrar em etapas para .NET e web, módulo a módulo, com os dois sistemas convivendo. Reescrever tudo de uma vez é o que mais falha.

Delphi não é VB6, e isso muda a conversa

O suporte ao ambiente do Visual Basic 6 terminou em 2008, e ele não tem sucessor direto. O Delphi seguiu outro destino: passou da Borland para a CodeGear e, desde 2008, pertence à Embarcadero, que continua lançando versões dentro do RAD Studio, com 64 bits, Unicode e acesso a bancos modernos. Na prática, um sistema Delphi tem uma opção que o VB6 não tem: atualizar sem trocar de linguagem.

O porém é que quase nenhum sistema legado está no Delphi atual. O cenário típico é Delphi 5, 6 ou 7, com anos de componentes de terceiros acumulados, e a distância até a versão de hoje é grande. É essa distância que define o caminho.

Sinais de que o seu sistema Delphi está pedindo atenção

  • BDE e Paradox: o Borland Database Engine está descontinuado há anos, não tem versão 64 bits e é fonte clássica de tabela corrompida, arquivo travado em rede e erro estranho em Windows novo.
  • Componentes sem dono: grids, relatórios e conexões comprados de fornecedores que sumiram, muitas vezes sem código-fonte. Eles travam qualquer atualização.
  • Comunicação antiga: as bibliotecas de rede das versões antigas podem não suportar os protocolos de segurança que bancos, SEFAZ e APIs exigem hoje, e cada integração nova vira remendo.
  • Gente: há cada vez menos desenvolvedores Delphi disponíveis, e muito sistema depende de uma pessoa só, às vezes de alguém que já saiu da empresa.
  • Acesso de fora: a operação pede acesso pelo celular, pelo cliente ou pelo parceiro, e a resposta atual é área de trabalho remota.
  • Mudança de regra: alterações fiscais e de negócio (como as da reforma tributária) exigem mexer em cálculos e documentos, e cada alteração demora mais do que deveria.

Os 4 caminhos, do menos ao mais invasivo

1 · Estabilizar e manter

Colocar o código em controle de versão, montar um ambiente de compilação que qualquer pessoa consiga reproduzir, documentar as rotinas críticas e corrigir o que dói. Parece pouco, mas muito sistema Delphi existe hoje como uma pasta de fontes na máquina de alguém. Faz sentido quando o sistema atende bem e a pressão por mudança é baixa. É o que fazemos em manutenção de sistemas.

2 · Atualizar para uma versão atual do Delphi

Levar o código para o RAD Studio atual: trocar BDE por FireDAC, substituir componentes abandonados, adaptar o código para Unicode (o tipo string mudou a partir do Delphi 2009) e compilar em 64 bits. O sistema continua desktop, mas volta a ter base suportada. Faz sentido quando a regra de negócio é grande e estável, a equipe domina Delphi e o problema é compatibilidade, não web nem gente. Inclua a licença do RAD Studio na conta.

3 · Migrar em etapas para .NET e web

O caminho que mais recomendamos quando o problema é gente, integração ou acesso web. Primeiro, criamos uma API em .NET sobre o mesmo banco de dados (Firebird, InterBase, SQL Server): o Delphi continua rodando, e o sistema já passa a conversar com site, aplicativo e parceiros. Depois, módulo a módulo, as telas migram para a web, começando pelo que mais aperta. Durante a transição, Delphi e sistema novo convivem, lendo e gravando os mesmos dados.

Se os dados ainda estão em Paradox ou DBF, o primeiro passo é levá-los para um banco de verdade, o que por si só já elimina boa parte dos travamentos. O padrão completo, conhecido como strangler fig, está em como modernizar um sistema legado sem parar a operação.

4 · Reescrever do zero

Justificável quando o sistema é pequeno, o código-fonte se perdeu ou o negócio mudou tanto que as regras antigas não servem mais. Mesmo aí, o Delphi antigo é a melhor especificação que existe: o sistema novo precisa produzir o mesmo resultado nos mesmos casos, inclusive nas exceções que ninguém lembra que existem.

E levar o Delphi para a nuvem?

Dá para fazer em três níveis, e vale saber qual deles está sendo oferecido:

  • Executável num servidor na nuvem: o sistema roda igual, só que numa máquina remota acessada por área de trabalho remota. Resolve acesso de fora e backup, mas não moderniza nada: mesmo código, mesmos limites.
  • Banco na nuvem + API: os dados saem do servidor do escritório, e a API abre caminho para integrações e aplicativos. O Delphi continua como interface, por enquanto.
  • Sistema web: as telas migram para o navegador em etapas (caminho 3). É o único nível em que o sistema deixa de depender de Windows instalado na máquina de quem usa. Detalhes em como migrar um sistema desktop para web.

Como escolher: três perguntas

  • Quem mantém o sistema daqui a dois anos? Se ninguém na equipe programa Delphi e contratar é difícil, atualizar o Delphi só adia o problema. Migrar para .NET resolve.
  • O sistema precisa sair do desktop? Se clientes, vendedores ou parceiros precisam acessar, a resposta passa pela web.
  • Existe código-fonte que compila? Com fontes e componentes em mãos, todos os caminhos estão abertos. Sem eles, a migração parte do banco de dados e do comportamento do sistema. É possível, mas o plano muda.

Para uma primeira resposta agora, o diagnóstico de legado em 2 minutos faz essas perguntas e indica o caminho mais provável para o seu caso.

O erro mais caro

Trocar tudo de uma vez, depois de meses de desenvolvimento no escuro. É o padrão que mais falha em modernização: reintroduz bugs que o sistema antigo já tinha resolvido, atrasa o retorno e concentra o risco num único fim de semana. Com Delphi, o motivo é o mesmo da migração de VB6 para .NET: a regra de negócio está espalhada em eventos de tela e em consultas SQL dentro dos formulários, e só aparece quando alguém tenta reescrever.

Como a Decidi conduz

Começamos com um diagnóstico gratuito: olhamos o código (quando existe), o banco, os componentes e o que a operação mais sofre. Devolvemos o caminho mais seguro, que às vezes é só estabilizar. Quando a decisão é migrar, fazemos em etapas para .NET e web, com o Delphi em produção até o último módulo sair. Veja como conduzimos a modernização de sistemas legados.

Dúvidas frequentes

Perguntas sobre Delphi

Ainda vale a pena manter um sistema em Delphi?
Para manter um sistema que funciona, sim: o Delphi atual é suportado pela Embarcadero e compila para Windows 64 bits. O que pesa é quem vai manter. Se ninguém na equipe domina Delphi e contratar é difícil, migrar para .NET e web resolve o problema de gente, que atualizar o Delphi só adia.
Dá para converter Delphi para .NET automaticamente?
Existem ferramentas de conversão, mas o resultado costuma ser código .NET com a estrutura do Delphi antigo, incluindo os mesmos problemas. Usamos automação para mapear telas, tabelas e regras, e reescrevemos com revisão humana, módulo a módulo, comparando o resultado com o sistema antigo.
O banco Firebird ou InterBase precisa mudar?
Não necessariamente. O .NET conversa bem com Firebird e InterBase, então a API e o sistema novo podem usar o mesmo banco durante a transição. Trocar de banco (para SQL Server ou PostgreSQL) pode vir depois, se fizer sentido. Se os dados estão em Paradox ou DBF, aí sim a mudança de banco é o primeiro passo.
Quanto tempo leva modernizar um sistema Delphi?
Depende do número de módulos e do estado do código. A vantagem da migração em etapas é que a primeira parte entra em produção antes do projeto terminar, em vez de tudo de uma vez no fim. O prazo por etapa sai do diagnóstico, depois de olhar o código e o banco.

Tem um sistema Delphi segurando a sua operação?

Conte a versão do Delphi, o banco de dados e o que trava hoje. Devolvemos um diagnóstico honesto do melhor caminho.

Quero uma avaliação do meu sistema