🎓 Resumo para Iniciantes
Em vez de sair programando e depois ver o que acontece, você escreve primeiro um documento detalhado dizendo exatamente o que o sistema deve fazer em cada situação. Só depois de todo mundo concordar com o documento é que o código começa.
O que é?
Spec-Driven Development (SDD) é uma abordagem onde o desenvolvimento começa pela criação de uma especificação completa e precisa do comportamento esperado do sistema — antes de qualquer linha de código ser escrita.
A spec não é um documento de requisitos vago. É uma descrição executável, testável e verificável do que o sistema deve fazer: inputs, outputs, estados, regras de negócio, casos de borda e comportamentos esperados em cada cenário.
Como funciona na prática
- Escrever a spec: Definir em detalhe o comportamento do sistema, idealmente em formato que possa ser validado (Gherkin, OpenAPI, JSON Schema, markdown estruturado)
- Revisar e alinhar: Produto, engenharia e QA concordam com a spec antes de qualquer implementação
- Implementar contra a spec: O código é escrito para satisfazer a especificação, não para explorar
- Validar: Testes verificam aderência à spec — qualquer desvio é um bug, não uma interpretação
SDD e desenvolvimento com IA
Com o uso crescente de LLMs para geração de código, o SDD ganhou nova relevância. Modelos como Claude, GPT e Gemini produzem código muito mais preciso quando recebem uma spec clara do que quando recebem uma instrução vaga.
O fluxo moderno é:
Spec detalhada → LLM gera implementação → Testes validam contra a spec
Nesse contexto, escrever boas specs se tornou uma das competências mais valiosas de um engenheiro sênior ou arquiteto — a habilidade de “especificar” passou a valer tanto quanto a habilidade de “implementar”.
Formatos de spec comuns
| Formato | Uso |
|---|---|
| OpenAPI / Swagger | Especificação de APIs REST |
| JSON Schema | Estrutura e validação de payloads |
| Gherkin (BDD) | Comportamento em linguagem natural executável |
| Markdown estruturado | Specs funcionais para uso com LLMs |
| PRD (Product Requirements Doc) | Requisitos de produto em nível funcional |
SDD vs. TDD
TDD (Test-Driven Development) começa pelos testes — você escreve o teste antes do código. SDD começa pela especificação — a spec define o contrato, os testes são uma consequência dela.
Na prática, os dois se complementam: a spec define o “o quê”, o TDD garante que o código implementa o “o quê” corretamente.
Aplicação no e-commerce
- Especificar regras de promoção antes de implementar no engine de pricing
- Definir contratos de API entre sistemas (ERP, WMS, plataforma) antes do desenvolvimento
- Documentar fluxos de checkout com todas as variações (parcelamento, endereço, frete) antes de codificar
- Usar specs como input para geração de código com IA — reduzindo retrabalho e ambiguidade
Biblioteca do Arquiteto
Software Requirements
Karl Wiegers, Joy Beatty
Specification by Example
Gojko Adzic
Archie (O Bibliotecário)
CURADOR"Eu li todos eles. A maioria é lixo. Estes aqui são os que sobraram na minha prateleira depois de 30 anos codando."