No ano passado, a IBM demonstrou como a IA pode fazer o trabalho repetitivo de manutenção de software atualizando o código legado. A empresa agora introduziu técnicas baseadas em IA para recodificar aplicativos legados para rodar em plataformas de computação modernas.
Projetos recentes da IBM chamados Mono2Micro e Application Modernization Accelerator(AMA) fornece aos arquitetos de aplicativos as ferramentas para atualizar e reutilizar aplicativos legados. De acordo com Nick Fuller , diretor de serviços de nuvem híbrida da IBM Research, essas iniciativas estão ajudando a trazer a IA para mais perto do ponto em que a IA pode migrar automaticamente de COBOL para Java.
Mas Fuller observa que essas abordagens avançadas baseadas em IA atualmente só são capazes de quebrar o código de máquina legado de programas monolíticos em microsserviços separados. Resta mais uma etapa para concluir uma tradução completa de uma linguagem de programação para outra, porque o kit de ferramentas AMA, embora projetado para modernizar o COBOL, atualmente fornece apenas mais uma etapa neste processo. “Traduzir de uma linguagem para outra é um desafio fundamental para a IA, na qual estamos trabalhando para fazer parte desse código legado funcionar em uma linguagem de programação moderna”, acrescentou.
Nesse ínterim, as ferramentas avançadas de IA da IBM oferecem alguns novos recursos. Quanto ao Mono2Micro, esta ferramenta primeiro analisa o código antigo para revelar quaisquer conexões ocultas dentro dele, por exemplo, vários componentes na lógica de negócios subjacente que contêm inúmeras chamadas e conexões entre si. Seria muito difícil e demorado para um arquiteto de aplicativos concluir essa tarefa sozinho.
Mono2Micro usa técnicas de agrupamento baseadas em IA para agrupar códigos semelhantes em grupos, o que mostra mais claramente como grupos de códigos interagem. O Mono2Micro primeiro aceita o código e, em seguida, analisa o código-fonte e o código-objeto tanto estaticamente (analisando o programa antes de ser executado) e dinamicamente (analisando o programa durante a execução).
A ferramenta então converte os programas monolíticos baseados em Java e sua lógica de negócios e interfaces de usuário associadas em microsserviços. Refatorar o monólito em microsserviços separados com funcionalidade específica minimiza as conexões que existiam no software quando ele era um programa monolítico, alterando a estrutura do aplicativo sem alterar seu comportamento externo.
O objetivo do kit de ferramentas AMA é analisar e refatorar aplicativos desenvolvidos anteriormente, escritos em linguagens legadas (COBOL, PL / I). Quanto ao kit de ferramentas AMA, ele combina a análise estática do código-fonte com uma compreensão da estrutura do aplicativo para criar um gráfico que representa o aplicativo legado. Quando usada em conjunto com técnicas de aprendizado profundo, essa abordagem baseada em gráficos facilita a persistência de dados.
Imagem: IBM Research
Imagem da interface Mono2Micro
A estratégia de IA da IBM aborda os principais desafios no aprendizado de máquina, onde as entradas são código e os parâmetros para análise são volume e valores múltiplos. Os aplicativos legados críticos geralmente contêm centenas de milhares a milhões de linhas de código. Nesse contexto, a aplicação de técnicas de aprendizado de máquina (ML) a grandes quantidades de dados pode se tornar mais eficiente com o conceito de incorporação.
Essas camadas de incorporação são uma forma de converter dados em valores numéricos. A vantagem do método de incorporação é que ele permite atribuir uma expressão numérica a uma grande quantidade de código com muitos valores possíveis. O mesmo acontece, por exemplo, ao traduzir a linguagem humana natural em valores numéricos usando embeddings de palavras vetoriais. Isso também é feito no contexto de um gráfico, pois está relacionado à análise de código.
“A incorporação de camadas é incrível porque sem elas seria difícil conseguir qualquer coisa que se parecesse com um sistema de aprendizado de máquina eficiente”, disse Fuller.
Ele acrescentou que, no caso da análise de código, o sistema de aprendizado de máquina oferece cada vez melhor microsserviços para um aplicativo legado refatorado, replicando o conteúdo funcional do aplicativo.
Observações mais completas: "Neste ponto, você não pode expirar ainda, mas 70% do trabalho está para trás, o que significa que você está muito mais perto de refatorar um aplicativo importante em uma arquitetura de microsserviço."