Pular para o conteúdo principal

Requisitos Não-Funcionais

Organizados conforme a ISO 25010:2023 (System and Software Quality Models). Requisitos marcados com 📋 têm origem direta no relatório de levantamento NotebookLM.


Performance Efficiency

RNF-PERF-001 — Tempo de resposta da API

CampoValor
Categoria ISOPerformance Efficiency → Time Behaviour
MétricaTempo de resposta P95 para endpoints REST do management-service
Valor-alvo≤ 500ms para operações de leitura; ≤ 1000ms para operações de escrita
VerificaçãoTestes de carga com k6 ou Artillery
PrioridadeAlta

RNF-PERF-002 — 📋 Geração de horário em background job

CampoValor
Categoria ISOPerformance Efficiency → Time Behaviour
MétricaA interface do usuário permanece responsiva durante toda a geração
Valor-alvoGeração é 100% assíncrona — usuário pode navegar normalmente durante o processamento
VerificaçãoTeste funcional: iniciar geração, navegar para outra tela, verificar que a aplicação responde normalmente
PrioridadeEssencial
OrigemRelatório NotebookLM, Seção 6 — RNF-004

No sistema anterior, a geração leva 20-30 minutos e bloqueia a interface. O SISGHA resolve isso com background job via RabbitMQ (ADR-006).

RNF-PERF-003 — Tempo de carregamento do frontend

CampoValor
Categoria ISOPerformance Efficiency → Time Behaviour
MétricaLargest Contentful Paint (LCP) em conexão 4G
Valor-alvo≤ 2.5s (classificação "Good" pelo Core Web Vitals)
VerificaçãoLighthouse, PageSpeed Insights
PrioridadeMédia

Reliability

RNF-REL-001 — Disponibilidade

CampoValor
Categoria ISOReliability → Availability
MétricaUptime mensal do sistema em produção
Valor-alvo≥ 99% (≤ 7.3h de downtime por mês)
VerificaçãoMonitoramento com Prometheus/Grafana ou equivalente
PrioridadeAlta

RNF-REL-002 — 📋 Salvamento automático e transações atômicas

CampoValor
Categoria ISOReliability → Fault Tolerance
MétricaNenhuma perda de dados em edição longa (ex: edição de grade por 30+ minutos)
Valor-alvoToda operação de escrita é atômica e persistida automaticamente — sem botão "Salvar" manual
VerificaçãoTeste: editar grade por 30 min, simular queda de conexão, verificar que dados foram preservados
PrioridadeEssencial
OrigemRelatório NotebookLM, Seção 6 — RNF-002. Origem direta: "susto" relatado pelo DAPE Jaru sobre perda de dados no sistema anterior

"A gente já passou por tanto susto nesse horário que a gente fica... melhor não mexer." — DAPE Jaru

RNF-REL-003 — Tolerância a falhas na geração

CampoValor
Categoria ISOReliability → Fault Tolerance
MétricaMensagens de geração que falham são retentadas automaticamente
Valor-alvoDead letter queue configurada com 3 retries antes de marcar como ERRO
VerificaçãoTeste: simular falha do timetable-generator durante processamento, verificar retry automático
PrioridadeAlta

Security

RNF-SEC-001 — Autenticação SSO e controle de acesso

CampoValor
Categoria ISOSecurity → Authenticity + Authorization
Métrica100% dos endpoints protegidos por token OAuth2/OIDC
Valor-alvoNenhum endpoint de API acessível sem autenticação válida (exceto health check)
VerificaçãoTeste de penetração automatizado, audit de rotas sem guard
PrioridadeEssencial

RNF-SEC-002 — Segurança de dados acadêmicos

CampoValor
Categoria ISOSecurity → Confidentiality
MétricaDados acadêmicos (notas, frequência, dados pessoais) criptografados em trânsito e em repouso
Valor-alvoTLS 1.3 para comunicação; criptografia de disco no PostgreSQL em produção
VerificaçãoScan TLS (Qualys SSL Labs), verificação de configuração do banco
PrioridadeAlta

Maintainability

RNF-MNT-001 — Cobertura de testes automatizados

CampoValor
Categoria ISOMaintainability → Testability
MétricaCobertura de código por testes automatizados
Valor-alvo≥ 70% de line coverage no management-service; ≥ 60% no timetable-generator
VerificaçãoRelatório de cobertura (Jest/Vitest para TS, dotnet test para C#)
PrioridadeMédia

Interaction Capability

RNF-INT-001 — 📋 Interface responsiva para consulta mobile

CampoValor
Categoria ISOInteraction Capability → User Interface Aesthetics
MétricaTodas as telas de consulta (horário, calendário) são usáveis em telas ≥ 375px de largura
Valor-alvoLayout adaptativo sem scroll horizontal em dispositivos móveis
VerificaçãoTeste manual em viewport 375×667 (iPhone SE) e 360×800 (Android médio)
PrioridadeAlta
OrigemRelatório NotebookLM, Seção 6 — RNF-003

RNF-INT-002 — Acessibilidade WCAG 2.1 AA

CampoValor
Categoria ISOInteraction Capability → Accessibility
MétricaConformidade com WCAG 2.1 nível AA
Valor-alvo0 violações nível A ou AA detectadas por ferramentas automatizadas
Verificaçãoaxe-core, Lighthouse Accessibility Score ≥ 90
PrioridadeMédia

Flexibility / Scalability

RNF-FLX-001 — 📋 SPA para gerenciar estado complexo da grade

CampoValor
Categoria ISOFlexibility → Adaptability
MétricaA aplicação web opera como SPA sem reload de página durante operações de edição de grade
Valor-alvoNavegação entre telas de edição de horário sem perda de estado (Pinia)
VerificaçãoTeste: editar grade, navegar para outra tela, voltar, verificar que o estado foi preservado
PrioridadeAlta
OrigemRelatório NotebookLM, Seção 6 — RNF-001

RNF-FLX-002 — Escalabilidade horizontal do management-service

CampoValor
Categoria ISOFlexibility → Scalability
MétricaO management-service pode rodar em múltiplas réplicas sem estado local
Valor-alvoStateless — sessão no Redis, sem arquivos locais temporários
VerificaçãoTeste: rodar 2+ réplicas, verificar que requests são distribuídos corretamente
PrioridadeBaixa (futuro — escala atual não demanda)

Fonte: Relatório de levantamento NotebookLM, Seção 6 — Requisitos Não-Funcionais. ISO 25010:2023.