AULA 27 / 61 · ACESSO GRATUITO

Tecnologias e compatibilidade

Graciliano TolentinoEngenharia Caracol · Edição 2.0
Nesta aula
  1. Escolher para um problema definido
  2. Decisão arquitetural preenchida
  3. Prova pequena de compatibilidade
  4. Procedimento e erros
  5. Exercício resolvido e gate
  6. Leitura relacionada

Escolher para um problema definido

Stack é o conjunto de tecnologias usado para construir e executar um sistema. Na Oficina Caracol, JavaScript atende dois ambientes: navegador, que apresenta a interface, e Node, que executa servidor, leitura de arquivos e testes. A mesma linguagem não torna os ambientes iguais. O navegador não oferece automaticamente o acesso a arquivos e processos que o Node disponibiliza.

Compatibilidade é a capacidade das partes trabalharem juntas nas condições previstas: sintaxe aceita pelo runtime, APIs disponíveis, formato de dados compartilhado e comportamento nos navegadores escolhidos. Runtime é o programa que executa o código. Antes de discutir ferramentas adicionais, precisamos demonstrar que o caminho mínimo atende os requisitos.

Uma biblioteca pronta pode reduzir trabalho em outro projeto. Aqui, a decisão é usar somente APIs padrão para manter o percurso visível e não introduzir dependências externas. Essa restrição é pedagógica e contextual; não demonstra que bibliotecas são inadequadas em geral. A escolha deve ser revista se requisitos futuros ultrapassarem o que conseguimos manter de modo responsável.

Decisão arquitetural preenchida

ADR é um registro de decisão arquitetural: documenta contexto, escolha, alternativas e consequências. S08 descreve esse tipo de registro. O documento abaixo registra a arquitetura definida para o pacote; a aceitação de resultados de execução continua dependente das provas.

CampoADR-CAT-01
ContextoCatálogo público e reserva simulada; dados fictícios; ensino de fluxo completo
Alternativa AHTML estático: simples para conteúdo fixo, insuficiente sozinho para demonstrar a API de reservas
Alternativa BJavaScript no navegador e Node com APIs padrão: atende ao escopo e mantém o percurso explícito
Alternativa CFramework e serviços externos: possíveis, porém ampliam conceitos e dependências neste exercício
DecisãoAdotar alternativa B, sem banco externo nem dependências de terceiros
ConsequênciasImplementar e testar explicitamente HTTP, validação, seleção, estados da interface e simulação
RevisãoReavaliar se houver persistência real, múltiplos processos ou requisitos fora do escopo

Não escrevemos que B é mais rápida ou segura em termos absolutos. Esses comparativos exigiriam critérios e medições. A justificativa é sua adequação à aprendizagem e às capacidades definidas. Se um participante escolher outra solução como extensão, precisará demonstrar os mesmos requisitos e explicar os novos custos.

Prova pequena de compatibilidade

Uma prova técnica curta deve atacar uma incerteza antes de comprometer toda a solução. Para o pacote, o percurso relevante é iniciar o servidor Node, abrir a página no navegador, obter os casos públicos e apresentar estados explícitos. A prova não exige implementar um produto inteiro; exige um resultado que permita aceitar ou revisar a decisão.

text
Diretório: pratica
Identificar runtime: node --version
Verificar o pacote: npm test
Executar validação: npm run validate
Iniciar percurso integrado: npm start
Endereço local: http://127.0.0.1:3000
Registrar: versão real, navegador, resultado e limites

O número da versão deve vir do ambiente executado, sem copiar uma versão presumida do livro. O teste do Node não substitui a inspeção no navegador: as APIs e as fronteiras são distintas. A prova precisa registrar falhas e diferenças, inclusive uma API não disponível ou um comportamento de interface inadequado.

FronteiraO que conferir
Node e arquivosLeitura e validação dos dados no caminho previsto
Servidor e navegadorResposta HTTP com somente campos públicos e estados de falha explícitos
Navegador e pessoaConteúdo, foco, teclado e feedback previstos no escopo

Procedimento e erros

  • Liste requisitos e restrições antes de escolher nomes de ferramentas.
  • Compare alternativas com o mesmo critério e registre as consequências.
  • Verifique a incerteza mais importante com uma prova pequena e identificável.
  • Registre o ambiente realmente testado e a condição de revisão da escolha.
ErroReparo
Escolher pela popularidade sem requisitoRelacionar necessidade, custo e prova de adequação
Confundir Node com navegadorTestar cada ambiente e sua fronteira específica
Declarar compatibilidade apenas porque instalouExecutar o percurso e observar resultados
Fixar versão sem conferir APIs usadasComparar disponibilidade e comportamento no runtime escolhido

Exercício resolvido e gate

Dados: a interface abre corretamente, mas o servidor não inicia no runtime de um colega. Ele propõe adicionar uma biblioteca de interface. Qual investigação corresponde ao problema?

Ver solução comentada

Solução: registrar versão do Node, comando, diretório e mensagem de falha; verificar as APIs e a sintaxe do servidor no ambiente escolhido. Uma biblioteca visual não trata essa fronteira. Se a versão é incompatível, alinhar o ambiente suportado e repetir a prova; se o caminho está errado, corrigir a execução e a documentação.

  • Rubrica: localizar a fronteira, recolher evidência reproduzível e evitar uma mudança sem relação com a causa.
  • Gate: a decisão está documentada, o ambiente testado é identificável e a prova mínima atende aos critérios; diferenças conhecidas têm consequência e não são escondidas em uma declaração genérica de compatibilidade.

Leitura relacionada

Consultar S18, guia de JavaScript, e S19, documentação de módulos, HTTP, sistema de arquivos e test runner do Node. A disponibilidade de cada API deve ser conferida na documentação da versão realmente adotada.

Fontes relacionadas

Consulte os limites e as seções de apoio de cada referência.

S08 S18 S19
Conseguiu explicar o que aprendeu?

Tente o exercício antes de consultar a solução. Marque a aula para organizar sua leitura.

A conclusão desta leitura não equivale a certificação ou aceite de um projeto real. Teste os exemplos no escopo indicado e registre as limitações.