CodeLiberator: Conversão de linguagem

O CodeLiberator é o bloco mais inteligente da nossa estrutura de modernização de sistemas legados para converter aplicativos legados completos, incluindo a lógica de negócios, UI e camadas de acesso aos dados. 

Essa ferramenta usa metadados criados pelo KnowledgeLiberator™ para transformar a lógica de negócios desenvolvida nas linguagens de programação de terceira e quarta geração em aplicativos novos completos usando a pilha de tecnologia Java ou .NET.

Características principais do CodeLiberator:

  • converter a lógica comercial de uma linguagem de programação para outra, por ex. COBOL para Java, Natural para Java, PL / I para Java, etc.
  • converter interfaces de usuário legados diferentes como 3270 CICS / BMS, IMS-DC, terminais Unix para soluções de thin client JSF, HTML / JavaScript (programação reativa) com JSON etc.
  • converter acesso aos dados embutidos em aplicativos legados para executar a mesma lógica em bancos de dados migrados, preservando toda a lógica de recuperação e manipulação de dados em RDBMS, NoSQL ou arquivos.

O CodeLiberator™ é o bloco mais inteligente da nossa estrutura de modernização dos legados para converter aplicativos legados completos, incluindo lógica de negócios, interface do usuário (UI) e camadas de acesso a dados. Essa ferramenta usa metadados criados pelo KnowledgeLiberator™ para transformar a lógica de negócios desenvolvida em linguagens de programação de 3ª e 4ª geração em aplicativos completamente novos usando a pilha de tecnologia Java.

Principais características do CodeLiberator:

    • converter lógica de negócios de uma linguagem de programação para outra, por exemplo, COBOL para Java, Natural para Java, PL/I para Java, PL/I para COBOL, etc.
    • converter o processamento de transações online: converter vários interfaces de usuário legadas como 3270 CICS/BMS, IMS-DC, terminais Unix para soluções thin client JSF, HTML/JavaScript (programação reativa) com JSON etc.
    • converter o acesso a dados incorporados em aplicativos legados para executar a mesma lógica em bancos de dados migrados,
    • preservando toda a lógica de acesso aos dados (recuperação de dados, lógica de manipulação) em RDBMS, NoSQL ou arquivos.

Conversão de linguagem…é mesmo fácil?

Há quem diga: a conversão de linguagens é fácil. Claro, criar equivalentes de definição de dados, instruções específicas de linguagem, fluxo de programa, etc. Até mesmo a criação de código orientado a objetos com classes base e herança é conceitualmente acessível.

O diabo está nos detalhes: executar o código e criar exatamente a mesma saída para as mesmas entradas provavelmente pode ser considerado um critério de sucesso, mas a manutenção e o desempenho também devem ser considerados ao mesmo tempo. Por exemplo, uma string COBOL ou Natural não deve simplesmente ser convertida em uma string Java porque o comportamento inato das strings nos dois domínios de linguagem é diferente. Claro que se ainda insistirmos no mesmo comportamento – e normalmente este é o caso – então haverá codificação adicional em Java necessária, o que certamente afetaria a manutenção de forma negativa e aplicaria técnicas WET contra DRY. Vários sabores e versões de uma linguagem legada têm diferenças em sua implementação que devemos considerar.

Não podemos nos esquecer que geralmente convertemos códigos ‘ao vivo’ que fazem parte do dia a dia dos negócios e são desenvolvidos ativamente. Após a conversão, esse código deve estar em uma forma em que os desenvolvedores possam modifica-lo, desenvolve-lo, refatora-lo e fazer tudo o que os desenvolvedores geralmente fazem com o código.

Ao converter para Java, o resultado pode ser mais parecido com o legado ou mais parecido com o Java. Existem muitos parâmetros de conversão que influenciam a satisfação de um desenvolvedor de legado quando olhar para o código Java, em oposição à satisfação de um desenvolvedor de Java ao procurar construções comuns e elementos de linguagem de Java no código novo.

Interfaces do usuário (UIs) – 
Convertendo aplicativos legados completos

No mundo aberto moderno, não há tantas abordagens diferentes de alto nível para gerar interfaces de usuário (UIs). As interfaces da Web são as espécies predominantes – elas existem em várias implementações diferentes de html/javascript simples (com ou sem frameworks simples, por exemplo, jQuery) ou frameworks de aplicativos de nível superior, por exemplo, Angular, React e similares.

O nosso CodeLiberator captura as definições de tela e as transforma em um conjunto de descritores. Esses descritores são alimentados então em um “player” leve em um navegador da Web que cria o visual e a essência (‘the look and feel’) das telas originais. Esta parte do projeto, até esse ponto, é extremamente fácil do empreendimento.

O desafio está em recriar o comportamento original com movimentos de foco, manipulação de eventos, manipulação de dados, comunicação com o servidor, manipulação de erros, validação de dados, etc.

Nossa solução vem com um editor de tela que permite que os desenvolvedores trabalhem em uníssono com o código convertido assim que as alterações precisarem ser feitas.

Camada de acesso aos dados

Adicionamos uma camada entre o aplicativo convertido e o novo mecanismo de banco de dados selecionado para fornecer exatamente a mesma funcionalidade. Essa abordagem possibilita que, durante a conversão do aplicativo, a lógica do aplicativo não precise ser alterada, a funcionalidade e os algoritmos funcionem ‘as-is’. Usando essa abordagem, nossos clientes não precisam adicionar complexidade desnecessária à primeira etapa da migração, a refatoração não é necessária. Mude para o mundo aberto rapidamente (replataforma) e, quando o mainframe for deixado para trás, planeje o próximo movimento: refatorar, rearquitetar.

Essa camada adicionada torna possível abstrair o mecanismo de banco de dados e aproveitar a liberdade de escolher entre mecanismos de banco de dados SQL ou NoSQL.

Outros produtos

Descubra todos os nossos produtos!

knowledge_liberator_logo

KnowledgeLiberator

Entender o sistema legado.

data_liberator

DataLiberator

Migração de banco de dados legado.

code_liberator

CodeLiberator

Conversão de linguagem.

app_tester

AppTester

Automação de teste.

Deixe sua mensagem

Solicitar demo