Requisitos Não Funcionais
Restrições de qualidade, desempenho, segurança e operação que o EdTech deve atender.
Categorias
RNF01 a RNF06 — Segurança
| ID |
Requisito |
Métrica |
Verificação |
| RNF01 |
Senhas devem ser armazenadas com hash BCrypt (custo ≥ 12) |
Custo do encoder |
Inspeção de código |
| RNF02 |
Tokens JWT devem ser transmitidos exclusivamente via cookies HttpOnly + Secure + SameSite=Strict |
Flags do cookie |
Teste de integração |
| RNF03 |
Tokens JWT devem expirar em no máximo 1 hora |
Max-Age do cookie |
Teste automatizado |
| RNF04 |
O sistema não deve expor informações sobre e-mails cadastrados em respostas de erro |
Mensagem genérica |
Teste de penetração |
| RNF05 |
Todas as comunicações devem ocorrer via HTTPS |
Certificado SSL |
Cloud Run default |
| RNF06 |
Dados sensíveis (chaves, credenciais) não devem estar presentes no código-fonte |
Scan de secrets |
GitHub Actions |
RNF07 a RNF10 — Desempenho
| ID |
Requisito |
Métrica |
Verificação |
| RNF07 |
O tempo de resposta da API para listagem de documentos deve ser < 500ms (p95) |
Latência p95 |
Teste de carga |
| RNF08 |
O upload de um PDF de até 10 MB deve completar em < 5 segundos |
Tempo de upload |
Teste funcional |
| RNF09 |
O sistema deve suportar ao menos 50 usuários simultâneos |
Concorrência |
Teste de carga |
| RNF10 |
A página de login deve carregar em < 2 segundos (LCP) |
Core Web Vitals |
Lighthouse |
RNF11 a RNF14 — Confiabilidade e Disponibilidade
| ID |
Requisito |
Métrica |
Verificação |
| RNF11 |
O banco de dados deve ter backup automático diário com retenção de 7 dias |
Política de backup |
Cloud SQL config |
| RNF12 |
A tabela audit_logs não deve permitir operações de UPDATE ou DELETE |
Imutabilidade |
Inspeção de código + teste |
| RNF13 |
O sistema deve estar disponível ≥ 99% do tempo (excluindo janelas de manutenção) |
Uptime |
Cloud Run SLA |
| RNF14 |
Documentos no Cloud Storage devem ter redundância geográfica |
Classe de storage |
GCS config |
RNF15 a RNF18 — Usabilidade
| ID |
Requisito |
Métrica |
Verificação |
| RNF15 |
A interface deve ser responsiva para desktop e tablet (≥ 768px) |
Breakpoints |
Teste visual |
| RNF16 |
Formulários devem exibir feedback visual imediato para campos inválidos |
Tempo de feedback |
Teste funcional |
| RNF17 |
O sistema deve suportar modo claro e modo escuro |
Toggle de tema |
Teste visual |
| RNF18 |
Mensagens de erro devem ser claras e em português |
Idioma |
Inspeção |
RNF19 a RNF22 — Manutenibilidade
| ID |
Requisito |
Métrica |
Verificação |
| RNF19 |
A cobertura de testes unitários deve ser ≥ 80% no backend |
Coverage report |
JUnit + JaCoCo |
| RNF20 |
Todo código deve seguir a convenção de commits (Conventional Commits) |
Formato do commit |
GitHub Actions |
| RNF21 |
O deploy deve ser automatizado via CI/CD (zero intervenção manual) |
Pipeline |
GitHub Actions |
| RNF22 |
Toda integração com a main deve ser via Pull Request aprovado |
Branch protection |
GitHub config |
| ID |
Requisito |
Métrica |
Verificação |
| RNF23 |
O sistema deve estar em conformidade com a LGPD para dados de pesquisadores |
Análise jurídica |
Revisão documental |
| RNF24 |
Logs de auditoria devem registrar IP, user-agent e timestamp de cada ação |
Campos do log |
Inspeção de código |
| RNF25 |
O sistema deve impedir acesso a dados de projetos sem vínculo direto |
Isolamento |
Testes de acesso |
Resumo Visual
flowchart TD
%%{init: {"flowchart": {"nodeSpacing": 60, "rankSpacing": 80}}}%%
R["Requisitos Não Funcionais"] --> Seg["Segurança (6)"]
R --> Des["Desempenho (4)"]
R --> Con["Confiabilidade (4)"]
R --> Usa["Usabilidade (4)"]
R --> Man["Manutenibilidade (4)"]
R --> Cnf["Conformidade (3)"]
Histórico de Versões
| Versão |
Data |
Descrição |
Autor |
1.0 |
29/05/2026 |
Criação do documento |
Pedro Henrique P. Santos |
1.1 |
13/06/2026 |
Revisão técnica e reestruturação da documentação |
Pedro Henrique P. Santos |
1.2 |
04/07/2026 |
Revisão profunda, correção de metadados e melhorias visuais |
Pedro Henrique P. Santos |