8 pontos por GN⁺ 2025-08-15 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Engenheiros de software eficazes criam e mantêm um modelo mental claro dos requisitos e do código, executando um loop de comparação e atualização de forma repetida
  • LLMs conseguem escrever e modificar código, criar testes e depurar, mas têm dificuldade em manter um modelo mental preciso, o que leva à confusão em tarefas complexas
  • Atualmente, os LLMs têm limitações para identificar com precisão as diferenças entre código e requisitos e corrigi-las adequadamente devido a problemas de omissão de contexto, viés de recência e alucinação
  • Pessoas conseguem alternar o raciocínio com flexibilidade conforme a situação, como armazenar temporariamente o contexto completo ou ocultar detalhes por um momento para enxergar o panorama geral, mas os LLMs não conseguem implementar isso
  • LLMs são úteis em tarefas com requisitos simples, mas no desenvolvimento de software complexo, no fim, o engenheiro de software precisa assumir diretamente a responsabilidade pela clareza dos requisitos e pelo comportamento do código, e o LLM atua como ferramenta de apoio

Loop de engenharia de software

  • Engenheiros experientes trabalham repetindo as seguintes etapas
    1. construir um modelo mental dos requisitos
    2. escrever o código de acordo com esse modelo
    3. entender o que o código escrito realmente faz
    4. identificar as diferenças e corrigir o código ou os requisitos
  • O ponto central desse loop é a capacidade de manter um modelo mental preciso e sustentável

Limitações dos LLMs

  • LLMs conseguem executar tarefas como escrever código, identificar problemas e corrigi-los, criar e executar testes, adicionar logs e usar depuradores
  • No entanto, por não conseguirem manter um modelo mental, surgem problemas como os seguintes
    • presumir que o código que eles próprios escreveram está funcionando bem
    • quando um teste falha, depender de suposições para decidir se devem corrigir o código ou o teste
    • quando entram em confusão, apagar todo o código e reescrevê-lo do zero
  • Diferentemente dos humanos, quando um teste falha eles não têm flexibilidade para revisar o modelo e decidir a direção da correção, nem para destravar o problema por meio de conversa quando ficam frustrados
  • Engenheiros de software executam testes durante o trabalho e, quando surge um problema, conseguem julgar com clareza que parte deve ser corrigida
  • Às vezes, mesmo quando reiniciam todo o trabalho, isso acaba levando a uma compreensão mais profunda do problema

Possibilidades futuras

  • Isso pode mudar no futuro à medida que os modelos evoluírem mais, mas engenharia de software exige mais do que simples geração de código
  • Ao resolver problemas importantes, humanos conseguem trazer temporariamente à memória todo o contexto, focar em um ponto específico ou observar o quadro geral
  • O importante não é continuar aumentando indefinidamente a quantidade de contexto, e sim lidar seletivamente com as informações necessárias
  • Falta aos LLMs a capacidade de, como os humanos, armazenar e restaurar contexto temporariamente ou alternar o raciocínio entre o quadro geral e os detalhes
  • Principais limitações atuais dos LLMs
    • omissão de contexto (Context omission): não conseguem encontrar bem as partes em que falta informação necessária
    • viés de recência (Recency bias): dão peso excessivo às informações mais recentes dentro da janela de contexto
    • alucinação (Hallucination): inventam detalhes que não existem
  • A adição de memória pode melhorar parte disso, mas, quando a complexidade ultrapassa certo ponto, eles ainda falham em entender o contexto e manter o modelo
  • Também lhes falta a capacidade de manter dois modelos mentais semelhantes, analisar as diferenças entre eles e decidir onde corrigir os requisitos ou o código

Papel e uso no momento atual

  • LLMs têm pontos fortes em geração rápida de código e integração de requisitos e documentação, então podem ser bastante úteis em tarefas simples e bem definidas
  • No entanto, em problemas não triviais, é difícil manter contexto suficiente e promover melhorias iterativas
  • Portanto, tarefas como clareza dos requisitos e validação do código continuam sendo responsabilidade do engenheiro de software
  • Busca-se um ambiente em que humanos e agentes (LLMs) construam software juntos, mas, no momento, o engenheiro deve liderar, e o LLM deve ser usado como ferramenta

Ainda não há comentários.

Ainda não há comentários.