MATERIAIS PARA ACOMPANHAR VOCÊ

Uma biblioteca aberta.
Um projeto para explorar.

Leia online, consulte um termo ou leve os arquivos para estudar no seu computador. O acesso ao conteúdo de ensino é gratuito.

LIVRO · EDIÇÃO REVISTA 2.0

Engenharia
Caracol

Programar antes do código

GRACILIANO TOLENTINO
203 páginas61 capítulosPDF
Baixar livro gratuito
PROJETO + LABORATÓRIOS

Do primeiro arquivo
ao ciclo completo.

Baixe o código da Oficina Caracol e os laboratórios iniciais. O arquivo contém instruções, testes e registros do escopo verificado.

  • JavaScript e Node.js
  • Dados fictícios e testes locais
  • Sem dependências externas no projeto
Baixar arquivos ZIPRequer Node.js 22 ou superior; edição testada com Node 24.22.1. Não inclui hospedagem ou serviço de produção.
PARA COMEÇAR SEM ADIVINHAR

Seu primeiro uso dos arquivos.

01

Extraia o ZIP

Guarde uma cópia e abra a pasta laboratorios_iniciais para as aulas 1 a 6.

02

Leia o README

Na pasta pratica, confira requisitos, comandos e limites da Oficina Caracol.

03

Execute e observe

Use um comando por vez. Compare os resultados com a explicação da aula.

04

Explique e registre

Descreva o que foi demonstrado, o que falhou e qual é a próxima ação.

Uma falha que faz parte da aula. npm run exercicio:antes deve falhar: ele detecta um defeito intencional isolado. A suíte principal e o exercício “depois” usam a implementação correta. Consulte o README.

VEJA AS RELAÇÕES

14 diagramas para
pensar com mais clareza.

Abra a imagem, acompanhe a explicação
e relacione-a com o capítulo.

Seis linhas relacionam as pastas data, src, public, tests, scripts e docs às suas funções. O README é a entrada do projeto.

Pastas da Oficina Caracol por função

A separação acompanha responsabilidades. Não exige um arquivo por campo nem concentra todos os assuntos em um documento.

Registro ilustrativo: id c01, titulo Revisão, descricao Caso fictício de revisão e ativo true. Os três primeiros são textos; ativo é booleano.

Um registro tem campos e tipos definidos

O formato é o contrato do pacote. O validador rejeita registros inválidos e propriedades extras; a aparência do texto não substitui o tipo do valor.

A lista de entrada tem A ativo e B inativo. listarAtivos valida e seleciona. A saída pública contém somente A, com id, titulo e descricao.

Selecionar ativos sem alterar a origem

Filtrar a saída não significa apagar o registro inativo da fonte. Ocultar um cartão depois de entregar o registro ao navegador não atende à mesma fronteira de publicação.

Dados entram no módulo catalogo, cuja função listarAtivos usa validarCasos. Dados válidos produzem saída pública; entrada inválida gera TypeError. A origem é preservada.

A fronteira do módulo de catálogo

A validação pertence ao contrato do catálogo. O consumidor deve tratar a falha; a validação não demonstra que a interface e o servidor já estão integrados.

Duas faixas separam GET de POST. GET consulta o catálogo e devolve registros públicos. POST envia chave e casoId a um registrador em memória e devolve a resposta da simulação.

Leitura pública e operação simulada

O estado temporário das reservas pertence ao registrador; a leitura do catálogo não cria reserva. O projeto não representa um sistema real de agendamento.

Problema e requisito orientam a unidade, que produz uma prova para o gate. Uma seta de retorno liga o gate à unidade afetada.

Uma unidade só avança com prova e decisão

O retorno tem uma causa e um alvo. Um gate não é apenas um formulário preenchido: precisa produzir uma decisão sustentada pelas evidências disponíveis.

Dois blocos apresentam M0 desconhecido, M1 identificado, M2 descrito, M3 estruturado, M4 implementado; depois M5 verificações aprovadas, M6 integrado, M7 auditado e M8 validado e governado.

M0 a M8 são estados de evidência

Cada nível depende de evidência pertinente e válida. Executar teste com falha não basta para M5; teste isolado não comprova M6. A maturidade não é uma média percentual.

Três decisões: resultado aceitável, inexistência de lacuna impeditiva e aceitação por autoridade. Falhar em qualquer uma bloqueia. Passar permite liberação, com ressalvas apenas para lacunas não impeditivas.

O gate produz um veredito com consequência

Documentar uma falha não a torna aceitável. O registro do gate deve delimitar escopo, evidência, autoridade, riscos e consequências da decisão.

REQ-001 orienta um contrato. Do contrato dependem dados e código, que convergem numa verificação integrada.

Dependências tornam o impacto visível

A ordem representa dependências do caso. Dados de teste e consumidores podem ser desenvolvidos em paralelo quando o contrato já está acordado; integrar exige revalidar as relações.

Cadeia em duas linhas: requisito, decisão ADR, código; depois teste, evidência EV e gate. Cada elemento aponta para a afirmação que fundamenta.

Rastrear a afirmação até a decisão

O exemplo mostra uma ligação possível. Nem todo requisito exige um ADR próprio. Uma evidência de teste vale para a versão, o ambiente e o alcance efetivamente observados.

Três chamadas: pedido-001 com c01 cria R1 e um efeito; repetir a mesma chave e caso retorna R1 sem novo efeito; reutilizar a chave com c02 causa conflito HTTP409 e mantém um efeito.

Repetir a solicitação não repete o efeito

Os casos c01 e c02 são públicos e válidos neste cenário. Idempotência usa a identidade da operação, não apenas o fato de a tela parecer igual. O contrato da oficina conserva estado em memória e não garante reserva durável.

A fonte de dados permanece preservada. Uma cópia na sandbox tem snapshot válido, sofre corrupção controlada e recebe restore. A comparação final confronta a cópia restaurada com a referência.

Recuperar a cópia sem sobrescrever a fonte

Os comandos da oficina atuam em sandbox/recuperacao. O exercício não escreve sobre o catálogo fonte, não trata produção e exige verificar o resultado após restaurar.

Três perfis lado a lado: Essencial, Estruturado e Crítico. Os controles se acumulam conforme cresce o impacto e a irreversibilidade da falha.

O rigor cresce com o impacto da falha

Os perfis orientam proporcionalidade. A lista é didática, não uma certificação nem um substituto para avaliação específica do sistema e de suas obrigações.

Unidade, integração e sistema aparecem em três faixas verticais. Uma faixa transversal de regressão aponta para as três, indicando repetição de provas após mudanças.

Regressão atravessa os níveis de teste

Uma mudança pode exigir regressão em vários níveis. Um teste de unidade aprovado não comprova sozinho o fluxo de sistema; ferramentas automáticas não eliminam a avaliação manual de interação.

CONTINUE A INVESTIGAÇÃO

Fontes e leituras relacionadas.

As referências apoiam conceitos delimitados.
Não representam aprovação externa do método.

S01Guide to the Software Engineering Body of Knowledge

IEEE Computer Society. 2024 com atualização 4.0a de 2025.

Seção consultada: Apresentação e indicação da revisão 4.0a de 25 de setembro de 2025

Situa áreas de conhecimento consolidadas. A combinação e os estados Caracol pertencem à proposta do autor.

Consulta parcial à página oficial; o livro integral não foi incorporado nem distribuído.

Consultar a fonte oficial
S02ISO IEC IEEE 12207 Systems and software engineering Software life cycle processes

ISO IEC IEEE. 2026 segunda edição.

Seção consultada: Abstract público e identificação da edição de abril de 2026

O resumo descreve processos ao longo do ciclo de vida e não impõe um modelo específico. Não é declaração de conformidade com a norma.

Consulta parcial ao resumo e aos metadados oficiais; texto normativo integral não consultado.

Consultar a fonte oficial
S03Secure Software Development Framework SSDF Recommendations for Mitigating the Risk of Software Vulnerabilities

Souppaya Murugiah Scarfone Karen Dodson Donna NIST. NIST SP 800-218 versão 1.1 fevereiro de 2022.

Seção consultada: Visão geral dos grupos e práticas PO.1 PO.2 e PO.4 da tabela 1 páginas impressas 5 a 9

Referência para incluir segurança no desenvolvimento e tratar verificações como práticas contextualizadas.

Consulta parcial às práticas de requisitos papéis e critérios de segurança no documento oficial. Não houve avaliação de cumprimento integral.

Consultar a fonte oficial
S04Secure Software Development Practices for Generative AI and Dual Use Foundation Models An SSDF Community Profile

Booth Harold e colaboradores NIST. NIST SP 800-218A julho de 2024.

Seção consultada: Abstract e escopo de produtores de modelos sistemas e adquirentes

Não converte um prompt de programação em conformidade com um perfil destinado a sistemas e modelos de IA.

Consulta parcial ao resumo oficial e identificação. Leitura complementar para contextos com modelos de IA.

Consultar a fonte oficial
S05Application Security Verification Standard

OWASP Foundation. ASVS versão 5.0.0 maio de 2025.

Seção consultada: Introduction e identificação da versão estável

Referência para formular verificações de segurança web; o catálogo de estudo não é certificado pelo ASVS.

Consulta parcial ao projeto e à identificação da edição. Requisitos individuais precisam ser selecionados e verificados no projeto real.

Consultar a fonte oficial
S06Web Content Accessibility Guidelines WCAG 2.2

World Wide Web Consortium. Recomendação de 12 de dezembro de 2024.

Seção consultada: Critérios 1.4.3 1.4.4 1.4.10 2.1.1 2.4.7 3.1.1 3.3.2 e 4.1.3

Orienta os roteiros de interface e a necessidade de verificar resultados. Os roteiros do exemplo cobrem um subconjunto.

Consulta parcial aos critérios de contraste redimensionamento refluxo teclado foco idioma rótulos e mensagens de estado. Não é auditoria completa de conformidade.

Consultar a fonte oficial
S07Pro Git

Chacon Scott Straub Ben. Segunda edição 2014 versão web consultada em 2026.

Seção consultada: Seções 2.2 Recording Changes to the Repository e 2.4 Undoing Things

Apoia comparação e registro de versões. Histórico de código não substitui revogação de uma credencial exposta.

Consulta parcial a status diff staging commits e cuidados ao desfazer alterações. As operações de restauração do projeto são próprias da sandbox e não derivam de uma garantia de recuperação por Git.

Consultar a fonte oficial
S08Using architectural decision records to streamline decision making during development

Kunce Darius Goby Dominik AWS. Guia web sem edição fixa.

Seção consultada: Introdução ADR process e Best practices

Apoia contexto alternativas decisão consequências e histórico do ADR. Os documentos preenchidos da Oficina são exemplos autorais.

Consulta parcial às páginas do processo e de preservação de decisões substituídas.

Consultar a fonte oficial
S09Continuous Integration

Fowler Martin. Artigo web atualizado em 2024.

Seção consultada: Definição e práticas de integração frequente com build e testes

Integração contínua é uma prática de integração e verificação frequente. A mera existência de uma ferramenta de pipeline não a demonstra.

Consulta parcial ao artigo; sem reprodução extensa.

Consultar a fonte oficial
S10Semantic Versioning

Preston Werner Tom e colaboradores. Especificação 2.0.0 tradução brasileira.

Seção consultada: Especificação itens 1 3 6 7 e 8

Apoia comunicação de mudanças na API. O número 2.0 deste livro identifica a edição editorial e não certifica uma API do método.

Consulta parcial às regras de API pública imutabilidade de versão publicada e incrementos.

Consultar a fonte oficial
S11Managing the Development of Large Software Systems

Royce Winston W. IEEE WESCON 1970 pp 1 a 9 reimpressão ICSE 1987 pp 328 a 338.

Seção consultada: Introdução e figuras 2 a 4 da cópia digital

A leitura histórica inclui a crítica ao teste tardio e relações de iteração; não reduz o artigo a defender uma sequência rígida sem retorno.

Consulta parcial ao texto original reproduzido em fac símile hospedado por terceiro. Acesso à cópia não significa licença de redistribuição; o PDF externo não integra o pacote.

Consultar a fonte oficial
S12Manifesto para Desenvolvimento Ágil de Software

Beck Kent e demais signatários. 2001 tradução brasileira.

Seção consultada: Declaração de valores e ressalva sobre valor dos itens comparados

Contextualiza colaboração software em funcionamento e adaptação. Não atribui aos signatários aprovação do Caracol.

Consulta à declaração curta oficial; os princípios são leitura complementar.

Consultar a fonte oficial
S13Removing sensitive data from a repository

GitHub Docs. Documentação web.

Seção consultada: About removing sensitive data e About sensitive data exposure

Credencial real exposta deve ser invalidada ou rotacionada; remover um arquivo da versão atual não elimina todas as cópias.

Consulta parcial às seções de revogação rotação e alcance de cópias.

Consultar a fonte oficial
S14npm ci

npm Documentation. Documentação web.

Seção consultada: Description e observações sobre coerência e opções do lockfile

A instalação limpa exige coerência entre manifesto lockfile e opções. O arquivo de lock contribui para repetibilidade sem provar sozinho todo o ambiente.

Consulta parcial à documentação e aos resultados indexados da página oficial.

Consultar a fonte oficial
S15Making retries safe with idempotent APIs

Featonby Malcolm Amazon Builders Library. Artigo técnico web.

Seção consultada: Retrying and side effects e Reducing client complexity

Apoia o exemplo autoral de mesma chave mesma intenção e conflito para conteúdo diferente. O registrador em memória não oferece garantia distribuída.

Consulta parcial às seções sobre intenção chave de requisição e efeitos de repetição.

Consultar a fonte oficial
S16Certified Tester Foundation Level Syllabus

International Software Testing Qualifications Board. Versão 4.0.1 2024.

Seção consultada: Seções 2.2 Test Levels and Test Types 2.2.3 Confirmation Testing and Regression Testing e 5.2 Risk Management

Apoia distinguir fronteira de teste e finalidade de reexecução. Não é acreditação do livro ou certificação do leitor.

Consulta parcial aos níveis finalidade de regressão e relação entre risco de produto e esforço de teste.

Consultar a fonte oficial
S17Refactoring

Fowler Martin. Site do autor.

Seção consultada: Definição de refatoração e catálogo Extract Function

Preservar comportamento observável é o foco; a escolha de proteção por testes depende do contexto, não de uma categoria única obrigatória.

Consulta parcial à definição e ao exemplo de extração de função.

Consultar a fonte oficial
S18JavaScript Guide e Getting started Your first website

MDN Web Docs. Documentação web.

Seção consultada: Grammar and types Control flow and error handling Functions e módulos de primeira página

Referência técnica para conceitos da linguagem e separação entre estrutura apresentação e interação. Não é curso integral reproduzido do MDN.

Consulta parcial a sintaxe tipos controle funções e introdução web. Exemplos do livro são originais.

Consultar a fonte oficial
S19Node.js Documentation

Node.js Project. Linha 24 documentação web consultada em 2026.

Seção consultada: Test runner Running tests from the command line HTTP createServer e Server.listen

Apoia execução dos módulos testes HTTP e arquivos. A versão efetivamente usada está registrada no pacote, sem prometer igualdade em todo sistema operacional.

Consulta parcial às APIs utilizadas. Teste local realizado com Node v24.22.1; a página latest pode avançar para outra correção da linha 24.

Consultar a fonte oficial