Por Pedro Sousa (*) 

Durante décadas, o desenvolvimento de aplicações seguiu um caminho relativamente estável: começava na definição do comportamento pretendido (os requisitos), em linguagem natural, e terminava no código fonte, expresso numa linguagem de programação, a qual assegura uma descrição completa e sem ambiguidades para que possa ser executada por uma máquina.

Com o tempo, fomos saltando etapas para chegar o mais rapidamente possível ao código, pois era aí que o valor parecia materializar se. Hoje, com a inteligência artificial, surge o chamado “vibe coding”. Descrevemos o que se pretende em meia dúzia de frases, conversamos um pouco com um agente de IA e, quase por magia, surge código fonte, praticamente em qualquer linguagem de programação. Funciona e impressiona, mas é claro que, por causa de tudo aquilo que ficou por explicitar, dos requisitos detalhados à análise e ao desenho, dificilmente esta abordagem será aplicável a contextos que não sejam pequenas aplicações de uso pessoal.

Ainda assim, faz nos pensar que, mais cedo ou mais tarde, a linguagem de programação será a linguagem natural. Nesse dia, “programar” será descrever em linguagem natural o que queremos que a aplicação faça, sem ambiguidades nem contradições, algo que muitos dirão ser uma impossibilidade, dada a natureza da própria linguagem natural. Talvez. Mas é exatamente isso que a engenharia de requisitos sempre tentou fazer.

E é precisamente na engenharia de requisitos que, já hoje, conseguimos tirar melhor partido da IA no desenvolvimento de aplicações. Partilho aqui a experiência que temos tido na modernização de aplicações legadas, onde se pretende transformar aplicações antigas em aplicações equivalentes, mas com melhores tecnologias, melhor experiência de utilização e, sobretudo, com menores custos de operação e manutenção.

Em vez de tentar usar a IA para gerar diretamente o código da nova aplicação a partir do código da aplicação legada, o caminho seguido por muitos, optámos por seguir a abordagem clássica de desenvolvimento de software, passo a passo, começando pela engenharia de requisitos. É que agora, com a “mão de obra” dos agentes de IA, já não há desculpas para não fazer tudo bem feito.

Para descobrirmos os requisitos da aplicação legada, observamos como a aplicação é usada no dia a dia, através da gravação das sessões dos utilizadores, e cruzamos essa informação com a análise do código fonte existente. Depois, validamos esses requisitos interagindo com a própria aplicação legada, à procura de inconsistências entre o que foi descrito e o que realmente acontece.

Tudo isto com agentes de IA a trabalhar de forma automática. A geração do código da nova aplicação, também baseada em IA, segue depois um processo de desenvolvimento perfeitamente expectável.

A experiência que queria partilhar convosco é simples: quanto maior for a qualidade dos requisitos, mais simples, previsível e eficaz é a geração de código pelos agentes de IA. Não estamos ainda a “programar” em linguagem natural, mas estamos claramente a caminhar nesse sentido.

Não há atalhos mágicos aqui. Avaliamos os requisitos usando oito indicadores de qualidade e só avançamos quando estes atingem um nível mínimo aceitável. Porque cada ambiguidade ou contradição ignorada acaba, inevitavelmente, por surgir mais tarde, durante a geração de código ou, pior ainda, em produção.

Talvez o maior ganho de ter todas as etapas bem documentadas surja na manutenção evolutiva da aplicação. O rastreamento exaustivo e detalhado entre os requisitos e o código gerado permite focar e minimizar o trabalho dos agentes de IA quando há alterações aos requisitos. Isto faz toda a diferença em grandes aplicações, demasiado grandes para caberem no contexto dos agentes. De facto, com a tecnologia de agentes hoje disponível, documentar todas as etapas é a diferença entre o sucesso e o falhanço da manutenção de grandes aplicações com IA.

Na minha opinião, o que vem a seguir ao “vibe coding” é voltarmos ao princípio, à Engenharia de Requisitos. Porque com requisitos claros e IA, tudo o resto parece fácil.

(*) Head of Enterprise Architecture na Link Consulting by Linkroad