AI-Native Transformation Framework

Estratégia de engenharia brownfield

Como fazer a transição de uma base de código existente para o desenvolvimento nativo em IA: quando remediar no lugar, quando usar strangler-fig, quando reconstruir, quando isolar, e a metodologia que torna cada abordagem viável.


Sua base de código é realmente brownfield?

Os quatro modos desta página se aplicam a bases de código brownfield: código existente com decisões acumuladas, usuários em produção e uma equipe trabalhando dentro dele. Antes de escolher um modo, verifique o estado da base de código. Três aparecem na prática:

EstadoO que significaO que fazer
Greenfield (em desenvolvimento, pré-GA)Base de código nova, ainda não em produção, ou em produção mas jovem o suficiente para que todo o código ainda esteja sendo ativamente projetado. Pontuações baixas de maturidade aqui são decisões de cronograma, não dívida.Continue o desenvolvimento. Feche as lacunas de maturidade no cronograma do roadmap. Execute novamente a avaliação de maturidade na GA e trate as lacunas não fechadas como brownfield a partir de então.
Brownfield (produção, acumulado)O código existe, roda em produção, tem usuários reais, carrega anos de decisões. As lacunas de maturidade são dívida.Escolha um modo usando os quatro abaixo.
HíbridoUm novo serviço pronto para o Nível 5 dentro de uma organização cujos outros sistemas são brownfield. O novo serviço é greenfield; a fronteira de integração legada é brownfield.Avalie o novo serviço como greenfield. Para cada fronteira legada, escolha um modo separadamente. Versão mais comum: um novo app nativo em IA lendo ou escrevendo dados por meio de uma API legada.

Os quatro modos

Cada modo é um caminho diferente para o Nível 5. A pergunta não é "qual modo a equipe tem capacidade para" (isso é uma decisão de alocação de recursos a jusante). A pergunta é "qual modo é o caminho mais curto para o Nível 5 para esta base de código, com base nas evidências." Tamanho da equipe, prioridades estratégicas e custo de oportunidade são entradas que um humano pondera após ler a recomendação; não são entradas para a recomendação em si.

ModoO que "caminho para o Nível 5" significa
Remediar no lugarO Nível 5 acontece nesta base de código por meio de construção de harness por etapas.
Strangler-figO Nível 5 acontece gradualmente: novas partes são construídas prontas para o Nível 5 enquanto as antigas se aposentam.
Reconstrução completaO Nível 5 acontece em uma nova versão desta base de código; a versão antiga se aposenta na transição.
Isolar e contornarO Nível 5 não acontece nesta base de código. Acontece em novas bases de código prontas para o Nível 5 ao lado; esta permanece congelada.

Modo 1: Remediar no lugar

Mantenha o código existente. Invista no harness: testes, tipos, convenções, intenção documentada. Use IA para acelerar a própria remediação por meio da metodologia Pesquisa-Revisão-Reconstrução abaixo.

Quando é o certo: a arquitetura é fundamentalmente sólida (o problema é o harness, não a estrutura); a equipe tem expertise de domínio ligada à base de código atual; a continuidade de negócio não pode tolerar sistemas paralelos.

O risco: você remedia o harness e o código permanece fundamentalmente no Nível 3 porque a estrutura resiste. Você gastou seis meses e ainda não consegue chegar ao Rung 5.

Modo 2: Migração strangler-fig

Construa novas funcionalidades prontas para o Nível 5 ao lado do sistema antigo. Roteie o tráfego por uma fachada. Elimine partes do sistema antigo uma por uma à medida que as novas se provam. O Strangler Fig Pattern de Martin Fowler é a referência canônica.

Quando é o certo: o sistema existente tem costuras limpas para extração; a continuidade de negócio é importante; o tempo de reconstrução de todo o sistema excederia a tolerância do negócio.

O risco: a identificação de costuras é difícil. Se as costuras não forem limpas, você acaba com dois sistemas acoplados em vez de um: o dobro da complexidade, nenhum dos benefícios.

Modo 3: Reconstrução completa

Comece de novo com uma base de código pronta para o Nível 5. Execute os dois sistemas em paralelo, migre os dados, faça a transição quando o novo sistema provar equivalência ou superioridade.

Quando é o certo: a estrutura existente impede ativamente o trabalho necessário; o custo da remediação contínua excede o custo da reconstrução; a economia da reconstrução assistida por IA torna a reconstrução viável em um prazo que antes não era; o domínio está bem compreendido (você está substituindo o como, não redescobrir o o quê).

O risco: o efeito do segundo sistema. Reconstruções acumulam cada funcionalidade diferida do sistema antigo e afundam sob seu próprio peso. Mantenha o escopo disciplinado.

Modo 4: Isolar e contornar

Congele o legado. Mantenha-o com mãos humanas no nível que o negócio ainda requer. Construa novo valor como novos apps prontos para o Nível 5 ao lado, roteando por qualquer API ou camada de dados que já funcione. Não tente modernizar o próprio legado.

Quando é o certo: o custo de remediação excede o valor restante no legado; novo valor pode ser entregue em paralelo sem integração profunda; o legado tem uma costura de integração viável (API, banco de dados, fila) pela qual novos apps podem rotear; o negócio tolera o modo de manutenção por um período prolongado.

O risco: o legado ignorado acumula mais dívida ao longo do tempo. Eventualmente algo força a decisão: um patch de segurança que não pode ser aplicado, um EOL de plataforma, um modelo de dados que não consegue absorver novos requisitos. Isolar e contornar compra tempo; não resolve o problema.

"Não investir" é um resultado legítimo aqui. Nem todo legado vale a pena corrigir. O sinal: você está escrevendo seu terceiro plano de remediação para o mesmo módulo, os testes que você adicionou no trimestre passado não estão mais verdes e o negócio ainda entrega valor por esse código. Essa não é uma base de código esperando para ser modernizada. É uma base de código esperando para ser substituída.


Critérios de decisão

PerguntaRemediarStranglerReconstruirIsolar
A arquitetura é fundamentalmente sólida?SimPrincipalmenteNãoNão importa
Há costuras limpas para extração?N/ASimN/APelo menos um ponto de integração utilizável
A equipe consegue descrever a intenção do sistema?SimSimSim (ou use Black Box to Blueprint)Não obrigatório para o legado
O negócio pode tolerar sistemas paralelos?N/ASimSimSim
O pagamento contínuo da dívida é mais barato que a substituição?SimParcialmenteNãoSim, enquanto novo valor é publicado ao lado
O legado tem valor restante que vale preservar?SimSimSimSim, mas não vale corrigir
Você tem capacidade de equipe para a opção mais difícil?MenorMédioMaiorBaixo (o legado permanece congelado)

Sem um "sim" claro na linha de reconstrução? Não reconstrua. O efeito do segundo sistema pune equipes que escolheram reconstruir por razões que não se encaixam.

Várias respostas "não" nas colunas Remediar/Strangler/Reconstruir, mas o legado ainda tem valor de negócio? Isolar e contornar é provavelmente o modo certo.

O Technical Debt Quadrant aguça a decisão de reconstrução:

Tipo de dívidaCausaRemediação
Prudente, deliberadaSabíamos do atalho ao publicar.Geralmente remediável.
Prudente, inadvertidaAprendemos melhor depois.Remediável, mas verifique se o aprendizado invalidou decisões estruturais.
Imprudente, deliberadaSabíamos melhor, fizemos assim mesmo.Frequentemente remediável com disciplina, mas sinaliza problemas de processo que sobrevivem à base de código.
Imprudente, inadvertidaNão sabíamos o que estávamos fazendo.Candidato à reconstrução. A estrutura reflete ignorância que o conhecimento posterior não consegue desfazer no lugar.
Experimente no seu código
codebase-readiness

Precisa de ajuda para escolher o modo certo? A skill codebase-readiness para Claude Code avalia uma base de código em relação ao modelo de maturidade de nove dimensões e recomenda um caminho para o Nível 5, incluindo qual dos quatro modos se aplica.

Ver no GitHub

A metodologia: Pesquisa, Revisão, Reconstrução

Publicada por Fowler e EPAM em Research, Review, Rebuild, esta é a metodologia brownfield mais concreta disponível. Ela se aplica diretamente aos Modos 1 a 3; no Modo 4, aplica-se à costura de integração mesmo que o legado permaneça congelado. A implantação direta de agentes em uma base de código legada opaca produz de forma confiável output confidentemente errado. A estrutura em fases evita isso.

Fase 1: Pesquisa. A IA analisa o código existente: reconstrói a intenção, extrai contratos comportamentais, identifica padrões, documenta o grafo de dependências. Ferramentas como conectores MCP permitem que os agentes percorram sistematicamente a base de código. Output: um mapa de intenção, ou seja, o que o sistema faz, independentemente de como está estruturado.

Fase 2: Revisão. Especialistas de domínio validam o mapa de intenção. A IA pode extrair o que o código faz. Apenas humanos conseguem distinguir comportamento intencional de acidente histórico. Este é o gargalo de throughput: no caso de estudo Bahmni (AngularJS para React), a revisão humana levou cerca de 20 minutos por componente. Planeje capacidade para a revisão, não apenas para a geração.

Fase 3: Reconstrução. Com a intenção validada, a IA gera código de substituição com ambiguidade mínima. No Bahmni: cerca de US$ 2 por componente em menos de uma hora, contra 3 a 6 dias manualmente. A economia é convincente quando as Fases 1 e 2 são disciplinadas, e pior do que a tradicional quando são puladas.

A ordem é estruturalmente importante. Equipes que pulam pesquisa e revisão para chegar mais rápido à reconstrução não economizam tempo; elas produzem outputs errados mais rápido e gastam o tempo economizado depurando comportamentos alucinados.

Economia: o que os números implicam

O ponto de dados do Bahmni reorganiza a matemática: o que era uma migração de 18 meses se torna uma de 6 meses, onde a restrição é a capacidade do revisor, não as horas de engenharia. Seu desempenho vai variar com arquitetura, cobertura de testes e complexidade de domínio, e a economia só funciona quando Pesquisa e Revisão são disciplinadas. Pulá-las colapsa o ganho de velocidade.

Black Box to Blueprint: engenharia reversa da intenção

Quando a equipe original foi embora, a documentação está errada e o código é a única fonte de verdade, a Fase 1 se torna um problema de engenharia reversa. O Black Box to Blueprint de Fowler descreve cinco técnicas:

  1. Reconstrução da camada de UI: inferir comportamento a partir da interface do usuário e suas transições de estado.
  2. Change data capture: observar como o sistema modifica dados em produção para inferir a lógica de negócio.
  3. Inferência de lógica de servidor: analisar fronteiras de API e padrões de requisição/resposta para reconstruir a lógica por trás deles.
  4. Arqueologia binária: reconstruir a partir de binários, logs e interfaces externas quando o código-fonte é perdido.
  5. Enriquecimento progressivo multi-passagem: dividir artefatos em fragmentos gerenciáveis, extrair insights parciais por passagem, construir contexto incrementalmente. A análise de sistema completo em uma única passagem falha em escala.

Duas disciplinas são inegociáveis: triangulação (toda hipótese sobre intenção confirmada em duas fontes independentes: UI + logs, API + banco de dados, código + comportamento observado) e rastreamento de linhagem (para cada afirmação, registre a evidência em que se baseia, para que evidências não confiáveis sejam identificáveis depois).


Spec-from-code: a inversão brownfield

Os Padrões de Execução de IA e o Guia de Especificação assumem que as specs precedem o código. O brownfield inverte isso: o código já existe e a spec precisa ser extraída por engenharia reversa. Este é um fluxo de trabalho diferente.

Ferramentas de desenvolvimento guiado por spec como spec-kit, Kiro e Tessl são orientadas principalmente para greenfield. O "Brownfield Bootstrap" do spec-kit é a exceção: descubra automaticamente a arquitetura existente para estabelecer uma Constituição (princípios governantes persistentes), depois aplique o desenvolvimento guiado por spec apenas ao novo trabalho enquanto Pesquisa e Revisão alcançam a superfície legada.

O padrão que funciona:

  1. Extraia a especificação implícita. O que o sistema realmente faz? Veja a sequência brownfield do Lab de IA para a versão disciplinada.
  2. Escreva cenários ponta a ponta que descrevam o comportamento esperado atual a partir da spec extraída.
  3. Verifique que os cenários passam no código existente. Isso se torna seu harness de regressão.
  4. Aplique spec-first a todo novo trabalho. Sem exceções.
  5. Migre strangler-fig componente por componente, usando os cenários como proteção durante a migração.

O primeiro passo é o trabalho mais difícil da transição. Os agentes conseguem documentar o que o sistema faz; apenas humanos conseguem responder se é o que ele deveria fazer.


Armadilhas comuns

Subestimar o gargalo de revisão humana. Os custos de geração de IA caíram por ordens de grandeza. Os custos de revisão humana não. Planeje a capacidade do revisor como restrição de primeira classe, não como reflexo.

Brownfield de meio Lab. Executar parte do projeto em modo nativo em IA e parte no modo tradicional porque "essa parte é mais rápida do jeito antigo" não produz nenhum benefício. A lista de armadilhas do Lab de IA nomeia isso especificamente.

Tratar costuras como dadas quando são implícitas. O strangler-fig parece bem nos quadros brancos. Na prática, "costuras limpas" são onde as responsabilidades podem ser extraídas sem acoplamento a outros oito módulos. Se isso não for verdade para sua base de código, o strangler-fig se torna uma reconstrução completa com etapas extras.

Confundir custo de modernização com custo de substituição. A decisão "remediar vs. reconstruir" não é sobre se consertar custa dinheiro, pois ambos custam. É sobre se a estrutura consegue suportar o que você precisa que ela suporte. Dívida imprudente e inadvertida não pode ser desfeita no lugar, independentemente do orçamento.


Panorama de ferramentas (instantâneo)

O framework não recomenda ferramentas específicas; o panorama muda rápido demais. Mas vale saber sobre: desenvolvimento guiado por spec (spec-kit, Kiro, Tessl; veja a comparação de Fowler); conectores MCP para percorrimento sistemático de bases de código; plataformas de agentes (Claude Code, Cursor, Aider, Devin) com diferentes trade-offs de autonomia/humano-no-loop; benchmarks (SWE-bench, IDE-Bench), mas pontuações em problemas curados não preveem desempenho brownfield no seu código.


Espelho: estratégia e confiabilidade

Engenharia para Confiabilidade é sobre fazer sistemas confiáveis a partir de outputs de IA não confiáveis. A estratégia brownfield é sobre tornar os agentes de IA eficazes em bases de código não confiáveis. Os dois convergem no harness: sensores rápidos, intenção documentada, validação em nível de cenário. Uma migração brownfield que não termina com a base de código no Nível 5 de maturidade e não corresponde à disciplina de Confiabilidade teve sucesso na forma, mas não na função.


Relacionados


Fontes


← Voltar para o início · Maturidade do código · O Lab de IA · Engenharia para Confiabilidade · Glossário