Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Aula 5: Sinergia com IA - Potencializando SBSE com LLMs

Seção 1: Abertura e Engajamento

1.1. Problema Motivador

Imagine que você é um engenheiro de software sênior em uma equipe que acabou de herdar um sistema complexo. O gerente de produto chega com um requisito claro, porém vago: “Precisamos melhorar a manutenibilidade deste código. Ele é muito frágil e difícil de entender”. Como você traduz “melhorar a manutenibilidade” em algo que um algoritmo de otimização possa entender? Quais métricas você deve otimizar? Complexidade Ciclomática? Coesão? Acoplamento? E se você estiver otimizando a logística de entrega de uma frota, será que uma simples troca aleatória de duas cidades no operador de mutação é a melhor abordagem, ou existem heurísticas mais inteligentes que poderiam acelerar a busca?

Até agora, a definição da função de fitness e dos operadores de busca dependia inteiramente da experiência e criatividade do engenheiro. Era um processo artesanal, sujeito a vieses e, muitas vezes, limitado pelo conhecimento humano. E se pudéssemos ter um “consultor especialista” disponível 24/7 para nos ajudar a explorar essas possibilidades? É exatamente aqui que a sinergia entre SBSE e a Inteligência Artificial generativa, especialmente os LLMs, revoluciona o campo.

1.2. Objetivos deste Laboratório

Ao final deste laboratório, você será capaz de:

Seção 2: Fundamentos Teóricos (Versão Expressa)

Nesta aula, não introduzimos novos algoritmos de busca, mas sim uma nova ferramenta para aprimorar os que já conhecemos. A ideia central é usar LLMs como parceiros de brainstorming e co-criação no processo de formulação de problemas de SBSE.

2.1. O LLM como um “Oráculo de Métricas”

O maior desafio ao aplicar SBSE é definir a função de fitness. Uma boa função de fitness é a bússola que guia a busca para soluções de alta qualidade. Uma função mal definida pode levar a otimizações inúteis ou até prejudiciais (Lei de Goodhart).

2.2. O LLM como um “Gerador de Heurísticas”

Os operadores genéticos (crossover, mutação) são o motor da exploração em algoritmos evolutivos. Operadores genéricos funcionam, mas operadores especializados, que conhecem a estrutura do problema, são muito mais eficientes.

Seção 3: Laboratório Prático Guiado (Google Colab)

3.1. Roteiro do Notebook: workshop.ipynb

Neste laboratório, vamos atuar como consultores de software contratados para otimizar a alocação de tarefas em uma equipe de desenvolvimento. O objetivo é usar um LLM para nos ajudar a definir o que “melhor alocação” significa e como explorar as possíveis alocações de forma inteligente. Usaremos a biblioteca DEAP para a implementação do algoritmo genético e a API da OpenAI para interagir com o LLM.

3.2. Estrutura do Laboratório

O notebook será dividido em três partes principais:

Seção 4: Análise e Discussão dos Resultados

4.1. Interpretando os Resultados

Ao final do notebook, teremos uma solução de alocação otimizada. As perguntas a serem feitas são:

4.2. O “Porquê” das Decisões

Seção 5: Síntese e Próximos Passos

5.1. Resumo do Laboratório

5.2. Preparação para o Próximo Bloco

Até agora, focamos em problemas “clássicos” de otimização e engenharia de software. No próximo módulo, SBSE Aplicada à Engenharia de Software Tradicional, vamos mergulhar em uma das aplicações mais poderosas e impactantes da SBSE: o Teste Baseado em Busca (Search-Based Software Testing - SBST). Você aplicará os algoritmos que aprendeu para um novo desafio: gerar automaticamente dados de teste que explorem os cantos mais obscuros de um programa para encontrar bugs, maximizando a cobertura de código. A habilidade de formular problemas que você praticou hoje será crucial.