VERSÃO OFICIAL docs/artigo.html SEGUNDO ARTIGO LIM-313 LIM-344 LIM-347

Sistema de Gestão do Laboratório de Hardware

Artigo Acadêmico — Projeto Integrador 2º TI / IFF Bom Jesus do Itabapoana LIM-344
Laboratório de Hardware 2025 — Versão 3.0 (Segundo Artigo) — Maio de 2026
Alunos do 2º TIInstituto Federal Fluminense, Campus Bom Jesus do Itabapoana
Prof. OrientadorInstituto Federal Fluminense, Campus Bom Jesus do Itabapoana

Resumo

Resumo

Este artigo apresenta o desenvolvimento do Sistema de Gestão do Laboratório de Hardware, um projeto integrador elaborado pela turma de 2º Técnico em Informática do Instituto Federal Fluminense — Campus Bom Jesus do Itabapoana. O sistema visa informatizar e modernizar o controle de equipamentos, empréstimos e agendamentos do laboratório, substituindo processos manuais por uma plataforma web baseada em PHP 8.2, MySQL 8.0 e Bootstrap 5. São descritas a modelagem conceitual (diagramas DFD, DER, casos de uso), a arquitetura do sistema, as regras de negócio, os módulos implementados e o planejamento do backlog com gráficos de Gantt e Burndown. Adicionalmente, são detalhadas implementações recentes: módulo de empréstimos com CRUD completo, geração e leitura de QR Code para identificação de componentes, segurança com rate limiting e CSP, e o portal de documentação auditável do projeto. Os resultados parciais demonstram a viabilidade da solução para a gestão eficiente dos recursos do laboratório.

Palavras-chave: Sistema de Gestão. Laboratório de Hardware. PHP. MySQL. QR Code. Segurança. Projeto Integrador. Instituto Federal.

Abstract

Abstract

This paper presents the development of the Hardware Laboratory Management System, an integrative project created by the 2nd year Information Technology class at the Federal Fluminense Institute — Bom Jesus do Itabapoana Campus. The system aims to computerize and modernize the control of equipment, loans, and scheduling of the laboratory, replacing manual processes with a web platform based on PHP 8.2, MySQL 8.0, and Bootstrap 5. The conceptual modeling (DFD, ERD, and use case diagrams), system architecture, business rules, implemented modules, and backlog planning with Gantt and Burndown charts are described. Recent implementations are also detailed: the complete loan module with full CRUD, QR Code generation and reading for component identification, security features including rate limiting and CSP headers, and the project's auditable documentation portal. Partial results demonstrate the feasibility of the solution for efficient management of laboratory resources.

Keywords: Management System. Hardware Laboratory. PHP. MySQL. QR Code. Security. Integrative Project. Federal Fluminense Institute.

1. Introdução

O presente artigo apresenta o desenvolvimento do Sistema de Gestão do Laboratório de Hardware, um projeto integrador desenvolvido pela turma de 2º TI do Instituto Federal Fluminense — Campus Bom Jesus do Itabapoana. O sistema tem como objetivo principal informatizar e modernizar o controle de equipamentos, empréstimos e agendamentos do laboratório de hardware da instituição.

O projeto abrange desde a modelagem conceitual (diagramas DFD, DER, casos de uso, dicionário de dados) até a implementação funcional com PHP 8.2, MySQL 8.0 e Bootstrap 5, incluindo integração com Docker para ambiente de desenvolvimento padronizado. O código-fonte está hospedado no repositório github.com/debianlima/laboratorio_hardware_2025.

1.1 Objetivos

Objetivo Geral: Desenvolver um sistema web para gestão do laboratório de hardware do IFF Bom Jesus do Itabapoana, informatizando os processos de controle de equipamentos, empréstimos e agendamentos.

Objetivos Específicos:

2. Contexto e Justificativa

O laboratório de hardware do IFF Bom Jesus do Itabapoana enfrentava desafios operacionais significativos: controle manual de empréstimos de kits, agendamentos em planilhas, dificuldade de rastreamento de itens e ausência de relatórios gerenciais. A partir de análises utilizando matriz GUT (Gravidade, Urgência, Tendência), foram priorizados os requisitos que mais impactavam a rotina do laboratório.

Os Diagramas de Causa e Consequência (DCC-1 e DCC-2) elaborados durante a fase de análise evidenciaram que a falta de um sistema integrado resultava em perda de equipamentos, conflitos de agendamento e dificuldade na prestação de contas. O sistema proposto visa resolver esses problemas por meio de uma plataforma web com controle de acesso, CRUD de itens, empréstimos, agendamentos e relatórios.

3. Metodologia

O desenvolvimento do sistema seguiu uma abordagem baseada em metodologias ágeis, com ciclos iterativos de planejamento, implementação e revisão. As etapas metodológicas foram organizadas conforme descrito a seguir.

3.1 Levantamento de Requisitos

Os requisitos foram levantados por meio de entrevistas com o técnico do laboratório e professores da disciplina, análise de documentos institucionais e observação direta dos processos manuais existentes. A matriz GUT (Gravidade, Urgência, Tendência) foi aplicada para priorização dos requisitos.

3.2 Modelagem do Sistema

A modelagem conceitual incluiu a elaboração de Diagramas de Fluxo de Dados (DFD) níveis 0 e 1, Diagrama Entidade-Relacionamento (DER), diagramas de caso de uso e diagramas de contexto de menu. O dicionário de dados foi construído para documentar todas as tabelas, campos e relacionamentos do banco de dados MySQL.

3.3 Tecnologias Utilizadas

ComponenteTecnologiaFinalidade
LinguagemPHP 8.2Lógica do servidor e controllers
Banco de DadosMySQL 8.0Persistência de dados
FrontendBootstrap 5 + CSS3Interface responsiva
InfraestruturaDocker + Docker ComposeAmbiente padronizado
Controle de VersãoGit + GitHubVersionamento do código

3.4 Atividades Realizadas

As atividades foram organizadas em sprints semanais, abrangendo desde a análise inicial até a implementação dos módulos. Cada sprint produziu entregas incrementais validadas pelo orientador e pelo técnico do laboratório. O detalhamento de cada módulo implementado encontra-se nas seções 6 a 15 deste artigo.

4. Requisitos do Sistema

4.1 Requisitos Funcionais

O sistema contempla 30 requisitos funcionais (RF-01 a RF-30), dos quais os principais incluem:

4.2 Requisitos Não Funcionais

5. Regras de Negócio

As regras de negócio definem as restrições e comportamentos do sistema:

IDRegraDescriçãoMóduloStatus
RN-01Autenticação obrigatóriaTodas as páginas, exceto login, exigem sessão ativaAutenticaçãoImplementado
RN-02Controle de acesso por perfilApenas usuários com perfil "administrador" (coluna tipo) podem gerenciar usuários e acessar relatórios. O campo tipo é armazenado na sessão durante o login e utilizado para controle de acesso.AutenticaçãoImplementado
RN-03Unicidade do patrimônioO código de patrimônio deve ser único no sistemaItensImplementado
RN-04Disponibilidade de itensApenas itens com status "disponível" podem ser emprestadosEmpréstimosImplementado
RN-05Devolução obrigatóriaUm item emprestado deve ser devolvido antes de novo empréstimo ao mesmo usuárioEmpréstimosImplementado
RN-06Conflito de agendamentoDois agendamentos não podem sobrepor horário no mesmo laboratórioAgendamentosPrevista
RN-07Aprovação de agendamentoAgendamentos requerem aprovação do administrador antes de confirmaçãoAgendamentosPrevista
RN-08Limite de empréstimosCada usuário pode ter no máximo 3 empréstimos ativos simultaneamenteEmpréstimosImplementado
RN-09Atualização de statusAo registrar devolução, o status do item volta automaticamente para "disponível"EmpréstimosImplementado
RN-10Log de auditoriaToda operação de criação, edição ou exclusão é registrada com data, hora e usuárioAuditoriaPrevista
RN-11Exclusão protegidaItens com empréstimos ativos não podem ser excluídosItensImplementado
RN-12Senha seguraSenhas devem ter mínimo de 4 caracteres e serem armazenadas com bcryptAutenticaçãoImplementado
RN-13QR Code único por itemCada item possui um QR Code único baseado no seu ID, apontando para URL absoluta do servidorQR CodeImplementado
RN-14Visualização pública via QRA página de detalhes do item (ver.php) não requer autenticação para leitura via QR CodeQR CodeImplementado
RN-15Rate limit no loginMáximo de 5 tentativas de login por IP antes de bloqueio de 15 minutos, com log de tentativasSegurançaImplementado

Tabela 5.1 — Regras de negócio com status de implementação. Regras RN-01 a RN-12 mantidas da versão original; RN-13 a RN-15 adicionadas na versão 3.0. Regras marcadas como "Prevista" ainda não foram implementadas e estão vinculadas a itens do backlog pendentes. A regra RN‑10, referente ao log de auditoria, está em fase de pendência, aguardando a implementação do módulo BL‑11.

6. Arquitetura do Sistema

O sistema adota uma arquitetura monolítica modular baseada no padrão MVC simplificado, com as seguintes camadas:

CamadaTecnologiaDescrição
ApresentaçãoHTML5 + Bootstrap 5 + CSS3Interface responsiva com navegação intuitiva
LógicaPHP 8.2Controllers em PHP com sessão e flash messages
DadosMySQL 8.0 + mysqliBanco relacional com transações e chaves estrangeiras
InfraestruturaDocker + Docker ComposeAmbiente padronizado com Apache e PHP 8.2

6.1 Diagrama de Camadas

Apresentação HTML5 · Bootstrap 5 · CSS3 Lógica (PHP) Controllers · Sessão · Flash Messages Dados (MySQL) mysqli · Transações · FKs Infraestrutura: Docker · Apache · PHP 8.2 Cliente Servidor Banco
Figura 2 — Diagrama de camadas da arquitetura do sistema

6.2 Ambiente de Desenvolvimento

O projeto utiliza Docker com dois containers: lab_hardware_app (PHP 8.2 + Apache) e lab_hardware_db (MySQL 8.0). A configuração é centralizada no arquivo docker-compose.yml com variáveis de ambiente via .env. A documentação da pasta docs/ é servida diretamente pelo Apache via volume mount (./docs:/var/www/html/docs), estando acessível em http://localhost:8080/docs/.

7. Diagrama de Fluxo de Dados (DFD)

7.1 DFD Nível 0 — Diagrama de Contexto

O DFD de contexto mostra o sistema como um processo único e suas interações com entidades externas.

Administrador (Técnico/Professor) Usuário (Aluno) Sistema de Gestão do Laboratório de Hardware Banco de Dados MySQL 8.0 lab_hardware Comandos de gestão Relatórios e alertas Solicitações de empréstimo Confirmações e status Gravar/Consultar Dados retornados
Figura 3 — DFD Nível 0: Diagrama de Contexto do sistema

7.2 DFD Nível 1 — Processos Principais

O DFD Nível 1 decompõe o sistema em quatro processos principais:

1. Autenticar Usuário 2. Gerenciar Itens 3. Controlar Empréstimos 4. Agendar Laboratórios 5. Gerar Relatórios Armazenamento D1 — Usuários D2 — Itens / Tipos D3 — Equipamentos D4 — Empréstimos D5 — Agendamentos D6 — Laboratórios D7 — Logs/Auditoria D8 — Relatórios
Figura 4 — DFD Nível 1: Processos principais e fluxos de dados

8. Diagrama de Contexto de Menu

A estrutura de navegação do sistema organiza-se hierarquicamente conforme o diagrama abaixo:

Painel Principal Autenticação Itens Empréstimos Agendamentos Login Logout Listar Cadastrar Editar Excluir Novo Listar Devolver Histórico Novo Calendário Relatórios Inventário Empréstimos Agendamentos Administração
Figura 5 — Diagrama de contexto de menu (estrutura de navegação)

9. Diagramas de Interface

9.1 Mapa de Navegação

O sistema possui as seguintes telas interligadas:

#TelaArquivoTipoAcessoDestinos
T-01Loginlogin/index.htmlProtótipoPúblico→ T-02
T-02Painel Principalsrc/index.phpProduçãoAutenticado→ T-03, T-06, T-09
T-03Listar Itenssrc/itens/listar.phpProduçãoAutenticado→ T-04, T-05
T-04Cadastrar Itemsrc/itens/cadastrar.phpProduçãoAdmin→ T-03
T-05Editar Itemsrc/itens/editar.phpProduçãoAdmin→ T-03
T-06Listar Usuáriosfontes_recebidas/prototipos/users_list.phpProtótipoAdmin→ T-07, T-08
T-07Cadastrar Usuáriofontes_recebidas/prototipos/users_create.phpProtótipoAdmin→ T-06
T-08Editar Usuáriofontes_recebidas/prototipos/users_edit.phpProtótipoAdmin→ T-06
T-09Relatóriosfontes_recebidas/prototipos/relatorios_list.phpProtótipoAdmin→ T-10
T-10Dashboardfontes_recebidas/prototipos/dashboard.phpProtótipoAutenticado→ T-02

Tabela 9.1 — Mapa de navegação com classificação de ambiente. Telas marcadas como "Protótipo" referem-se a arquivos de referência em fontes_recebidas/prototipos/ ou login/, não fazendo parte do runtime web atual.

9.2 Diagrama de Transição de Telas

T-01 Login T-02 Painel T-03 Listar Itens T-04 Cadastrar T-05 Editar T-09 Relatórios T-10 Dashboard T-06 Usuários login voltar CRUD
Figura 6 — Diagrama de transição entre telas do sistema

10. Protótipos de Tela

10.1 Tela de Login

Lab Hardware Sistema de Controle
Lab Hardware
Acesso ao Sistema
Digite seu usuário...
••••••••
Entrar
© 2026 Lab Hardware 2025
Figura 7 — Protótipo da tela de login

10.2 Painel Principal (Dashboard)

Nota de atualização (LIM-313): O dashboard em produção (src/index.php) agora exibe ícones SVG ilustrativos para cada módulo (painel-itens.svg, painel-emprestimos.svg, painel-agendamentos.svg) e o card de Agendamentos é exibido com estilo card-disabled (borda tracejada, opacidade reduzida) indicando "Em breve". Os arquivos SVG estão em assets/img/.

Lab Hardware
Itens Olá, admin Sair

Painel do Laboratório

📦
Itens / Equipamentos
Cadastrar, listar, editar e excluir itens
Gerenciar Itens
📋
Empréstimos
Listar, cadastrar, editar e atrasados
Gerenciar Empréstimos
📅
Agendamentos
Em desenvolvimento
Em breve
Figura 8 — Protótipo do painel principal (dashboard com 3 cards)

10.3 Listagem de Itens

Lab Hardware
ItensSair

Itens do Laboratório

+ Cadastrar Item
Buscar nome ou código...
Tipo: Todos
Status: Todos
Filtrar
CódigoNomeTipoStatusLocalizaçãoAções
PAT-001Kit Arduino UnoKit ArduinoDisponívelPrateleira A1Editar Excluir
PAT-002Multímetro DigitalInstrumentoEmprestadoBancada 3Editar Excluir
PAT-003ESP32 DevKitPlaca Desenv.DisponívelPrateleira B2Editar Excluir
PAT-004OsciloscópioInstrumentoManutençãoAssistênciaEditar Excluir
Figura 9 — Protótipo da tela de listagem de itens

10.4 Formulário de Cadastro de Item

Lab Hardware
ItensSair

Cadastrar Item

PAT-005
Raspberry Pi 4
Disponível ▼
Placa de Desenvolvimento ▼
Prateleira C1
Placa de desenvolvimento com 4GB RAM
Salvar Voltar
Figura 10 — Protótipo do formulário de cadastro de item

11. Banco de Dados e Dicionário de Dados

11.1 Visão Geral

O banco de dados lab_hardware utiliza MySQL 8.0 com charset UTF-8mb4. O schema está definido em docker/mysql/init.sql.

11.2 Diagrama Entidade-Relacionamento (DER)

usuarios PK id (INT) username (VARCHAR 50) senha (VARCHAR 255) tipo (ENUM) criado_em (TIMESTAMP) atualizado_em (TIMESTAMP) tipos_itens PK id (INT) nome (VARCHAR 100) descricao (TEXT) criado_em (TIMESTAMP) itens PK id (INT) codigo_patrimonio (VARCHAR 50) nome (VARCHAR 100) FK tipo_id (INT) → tipos_itens status (ENUM) localizacao (VARCHAR 100) laboratorios PK id (INT) codigo (VARCHAR 20) nome (VARCHAR 100) tipo (ENUM) tecnico_responsavel criado_em (TIMESTAMP) emprestimos PK id (INT) FK usuario_id → usuarios FK equipamento_id → equip. data_emprestimo (TS) data_devolucao (TS) status (ENUM) agendamentos PK id | FK usuario_id | FK laboratorio_id data_inicio | data_fim | finalidade | status 1:N 1:N 1:N 1:N 1:N
Figura 11 — Diagrama Entidade-Relacionamento (DER) simplificado

11.3 Dicionário de Dados Completo

Tabela: usuarios

CampoTipoNullDefaultDescrição
idINT AUTO_INCREMENTNOChave primária
usernameVARCHAR(50)NONome de usuário (único)
senhaVARCHAR(255)NOSenha hasheada (bcrypt)
tipoENUM('administrador','padrao')NO'padrao'Nível de acesso — coluna renomeada de role para tipo via migration (2026-05-21)
criado_emTIMESTAMPYESCURRENTData de criação
atualizado_emTIMESTAMPYESCURRENTÚltima atualização

Tabela: laboratorios

CampoTipoNullDefaultDescrição
idINT AUTO_INCREMENTNOChave primária
codigoVARCHAR(20)NOCódigo do laboratório (único)
lugarVARCHAR(100)NOLocalização física
nomeVARCHAR(100)NONome do laboratório
tipoENUM('redes','hardware','robotica','informatica_normal')NO'informatica_normal'Categoria
tecnico_responsavelVARCHAR(100)YESNULLTécnico responsável
informacao_adicionalTEXTYESNULLObservações
criado_emTIMESTAMPYESCURRENTData de criação
atualizado_emTIMESTAMPYESCURRENTÚltima atualização

Tabela: equipamentos

CampoTipoNullDefaultDescrição
idINT AUTO_INCREMENTNOChave primária
nomeVARCHAR(100)NONome do equipamento
descricaoTEXTYESNULLDescrição detalhada
quantidadeINTNO1Quantidade total
disponivelINTNO1Quantidade disponível
criado_emTIMESTAMPYESCURRENTData de criação
atualizado_emTIMESTAMPYESCURRENTÚltima atualização

Tabela: itens

CampoTipoNullDefaultDescrição
idINT AUTO_INCREMENTNOChave primária
codigo_patrimonioVARCHAR(50)NOCódigo patrimonial (único)
nomeVARCHAR(100)NONome do item
tipo_idINTYESNULLFK → tipos_itens.id
statusENUM('disponivel','emprestado','manutencao')NO'disponivel'Status atual
descricaoTEXTYESNULLDescrição do item
localizacaoVARCHAR(100)YESNULLLocalização física
criado_emTIMESTAMPYESCURRENTData de cadastro
atualizado_emTIMESTAMPYESCURRENTÚltima atualização

Tabela: tipos_itens

CampoTipoNullDefaultDescrição
idINT AUTO_INCREMENTNOChave primária
nomeVARCHAR(100)NONome do tipo (único)
descricaoTEXTYESNULLDescrição do tipo
criado_emTIMESTAMPYESCURRENTData de criação
atualizado_emTIMESTAMPYESCURRENTÚltima atualização

Tabela: emprestimos

CampoTipoNullDefaultDescrição
idINT AUTO_INCREMENTNOChave primária
usuario_idINTNOFK → usuarios.id (CASCADE)
equipamento_idINTNOFK → equipamentos.id (CASCADE)
data_emprestimoTIMESTAMPYESCURRENTData do empréstimo
data_devolucaoTIMESTAMPYESNULLData da devolução
statusENUM('pendente','devolvido','atrasado')NO'pendente'Status do empréstimo
observacaoTEXTYESNULLObservações
criado_emTIMESTAMPYESCURRENTData de registro
atualizado_emTIMESTAMPYESCURRENTÚltima atualização

Tabela: agendamentos

CampoTipoNullDefaultDescrição
idINT AUTO_INCREMENTNOChave primária
usuario_idINTNOFK → usuarios.id (CASCADE)
laboratorio_idINTNOFK → laboratorios.id (CASCADE)
data_inicioDATETIMENOInício do agendamento
data_fimDATETIMENOFim do agendamento
finalidadeVARCHAR(255)YESNULLFinalidade do uso
statusENUM('pendente','aprovado','cancelado','concluido')NO'pendente'Status do agendamento
criado_emTIMESTAMPYESCURRENTData de criação
atualizado_emTIMESTAMPYESCURRENTÚltima atualização

Tabela: login_attempts

CampoTipoNullDefaultDescrição
idINT AUTO_INCREMENTNOChave primária
ip_addressVARCHAR(45)NOEndereço IP da tentativa
usernameVARCHAR(50)NONome de usuário tentado
attempted_atTIMESTAMPNOCURRENT_TIMESTAMPData/hora da tentativa
successTINYINT(1)NO01 = sucesso, 0 = falha

Tabela auxiliar criada automaticamente pelo rate limiter. Fonte: docker/mysql/migrations/01_add_login_attempts.sql. Índices em ip_address+attempted_at, username e success.

12. Módulos Implementados

12.1 Módulo de Autenticação

Sistema de login com sessão PHP, senha hasheada em bcrypt e controle de tipo de usuário (administrador / padrão). Inclui página de login responsiva com validação client-side e server-side. A coluna tipo (renomeada de role via migration) controla o nível de acesso. Utilitários de sessão em src/utils/session.php gerenciam timeout de inatividade (30 min) e regeneração de ID de sessão para prevenção de fixation.

12.2 Módulo de Itens (CRUD Completo)

Gerencia o inventário com cadastro, listagem com filtros, edição e exclusão. Cada item possui código de patrimônio único, tipo, status e localização física.

12.3 Módulo de Empréstimos e Devoluções

Módulo implementado com CRUD completo. Inclui listagem de empréstimos ativos, cadastro de novos empréstimos com validação de disponibilidade, edição de registros, e página dedicada para visualização de empréstimos atrasados. Arquivos: src/emprestimos/listar.php, cadastrar.php, editar.php, atrasados.php.

12.4 Módulo de Agendamentos

Tabelas criadas no banco. Implementação do CRUD em desenvolvimento.

12.5 Módulo de Relatórios (Módulo 4)

Estrutura base de relatórios implementada (interface Bootstrap); funcionalidades avançadas — gráficos dinâmicos, exportação de dados e dashboard completo — pendentes de desenvolvimento.

12.6 Módulo de Fórum (Módulo 5)

Planejado com integração via Flarum (tema personalizado e suporte a pt-BR). Implementação pendente de desenvolvimento — ver item BL-10 do backlog.

12.7 Segurança e Correções

Correções de segurança aplicadas com base em auditoria defensiva (LIM-77, LIM-200, LIM-274):

Estudos técnicos disponíveis em docs/estudos/LIM-201-correcao-xss-flash.md, docs/estudos/LIM-248-csp-header.md e docs/estudos/LIM-202-testes-manuais.md.

13. Materiais Recebidos e Inventário

MaterialTipoOrigemStatus
documentacao-do-projeto.pdfPDF (~20MB)Documentação oficialReferenciado
lab_system.rarRAR (~21MB)Protótipo alunosExtraído
LAB HAD.docxDOCX (~2MB)Documento laboratórioReferenciado
Relatório lab system.pdfPDF (~19MB)Relatório sistemaReferenciado
Requisitos .docxDOCX (~312KB)Requisitos do sistemaReferenciado
Modulo_4_relatorios/PHP + ImagensGrupo 4Copiado
Modulo_5_forum/Flarum (PHP)Grupo 5Referenciado

14. Plano de Contingência

O plano de contingência identifica riscos potenciais e define ações preventivas e corretivas:

IDRiscoProb.ImpactoAção PreventivaAção Corretiva
RC-01Perda de dados do banco Média Alto Backup diário automatizado via Docker volume Restaurar último backup; reexecutar init.sql
RC-02Indisponibilidade do servidor Média Alto Monitoramento de saúde do container Reiniciar container; verificar logs
RC-03Acesso não autorizado Média Alto Senhas bcrypt; controle de sessão; HTTPS Invalidar sessões; reset de senhas; auditoria
RC-04Conflito de agendamento Baixa Médio Validação de sobreposição no backend Cancelar agendamento conflitante; notificar
RC-05Perda de equipamento Média Alto Controle patrimonial; registro de empréstimo Registro de ocorrência; substituição
RC-06Queda de energia Baixa Médio UPS no servidor; InnoDB com transações Verificar integridade do banco após retorno
RC-07Erro de deploy em produção Baixa Alto Testes em staging antes de produção Rollback para versão anterior estável
⚠ Procedimento de Emergência: Em caso de falha crítica, o procedimento padrão é: (1) Parar os containers com docker compose down; (2) Verificar integridade dos volumes; (3) Restaurar backup mais recente; (4) Recriar containers com docker compose up -d; (5) Validar acesso e dados.

15. Planejamento do Backlog — Gantt e Burndown

15.1 Gráfico de Gantt

Cronograma estimado do projeto (Maio 2026 – Abril 2027):

Tarefa
Mai
Jun
Jul
Ago
Set
Out
Nov
Dez
Jan
Fev
Mar
Abr
1. Análise e Requisitos
2. Modelagem (DFD/DER)
3. Protótipos de Tela
4. Infraestrutura Docker
5. Módulo Autenticação
6. CRUD Itens
7. Módulo Empréstimos
8. Módulo Agendamentos
9. Módulo Relatórios
10. Módulo Fórum
11. Módulo Auditoria
12. Testes
13. Deploy Produção

15.2 Gráfico Burndown

Projeção de trabalho restante ao longo das sprints (estimativa em story points):

120 100 80 60 40 0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 Ideal Burndown Chart — Story Points Restantes Story Points Sprint Ideal Real
Figura 12 — Gráfico Burndown projetado (120 story points em 11 sprints)

15.3 Backlog Detalhado

IDItem do BacklogSprintStory PointsStatusPrioridade
BL-01Análise de requisitos e documentaçãoS113ConcluídoAlta
BL-02Modelagem DFD, DER e dicionário de dadosS18ConcluídoAlta
BL-03Protótipos de tela (Figma/HTML)S28ConcluídoAlta
BL-04Infraestrutura Docker + MySQLS28ConcluídoAlta
BL-05Módulo de autenticação (login/logout)S313ConcluídoAlta
BL-06CRUD completo de itensS3-S413ConcluídoAlta
BL-07Módulo de empréstimos e devoluçõesS5-S621ConcluídoAlta
BL-08Módulo de agendamentosS7-S813PendenteMédia
BL-09Módulo de relatóriosS9-S108PendenteMédia
BL-10Integração com fórum FlarumS10-S118PendenteBaixa
BL-11Módulo de auditoria e logsS115PendenteMédia
BL-12Testes automatizadosS128PendenteAlta
BL-13Deploy em produçãoS135PendenteAlta

16. Análise do Backlog Priorizado

16.1 Contexto da Priorização

O backlog do projeto foi priorizado utilizando a Matriz de Impacto vs Esforço, metodologia clássica de gestão de produtos que classifica tarefas em quatro quadrantes: Quick Wins (alto impacto, baixo esforço), Major Projects (alto impacto, alto esforço), Fill-ins (baixo impacto, baixo esforço) e Time Sinks (baixo impacto, alto esforço). O documento BACKLOG_PRIORITIZACAO.md contém a priorização completa com 10 tarefas distribuídas entre esses quadrantes.

16.2 Distribuição das Tarefas

A distribuição quantitativa revela um backlog equilibrado, com predominância de tarefas de alto impacto (5 de 8 tarefas implementáveis, excluindo-se os 2 Time Sinks recomendados para reavaliação). O gráfico abaixo ilustra a proporção de cada categoria:

Distribuição do Backlog por Categoria Quick Wins (3) 37,5% Correção Root Path · Limpeza Issues · Keyword Abstract Major Projects (2) 25% Módulo Empréstimos · Segurança Fill-ins (3) 37,5% Documentação APIs · Performance · Dependências Time Sinks (2) 25% → Evitar Quick Win Major Project Fill-in Time Sink
Figura 13 — Distribuição do backlog por categoria de priorização (Matriz Impacto vs Esforço)

A Matriz de Impacto vs Esforço abaixo posiciona cada tarefa nos quadrantes correspondentes:

Impacto Alto → Alto → Baixo → Esforço QUICK WINS MAJOR PROJECTS FILL-INS TIME SINKS Root Path Limpeza Issues Keyword Abstract Módulo Empréstimos Segurança Doc. APIs Performance Dependências Refatoração CSS Func. Não-Solicitadas
Figura 14 — Matriz Impacto vs Esforço: posicionamento de cada tarefa do backlog

16.3 Análise Crítica por Categoria

Quick Wins (Alto Impacto, Baixo Esforço) — 3 tarefas

As Quick Wins representam 37,5% das tarefas e concentram correções de alto valor com esforço mínimo. A correção de Root Path em AGENTS.md previne execução em contexto incorreto; a limpeza de issues duplicadas (LIM-47, LIM-48, LIM-49 identificadas na auditoria LIM-71) reduz ruído no board; a atualização de keyword residual no abstract melhora a qualidade acadêmica do documento. A execução imediata destas tarefas na Sprint 1 é altamente recomendada.

Major Projects (Alto Impacto, Alto Esforço) — 2 tarefas

Os Major Projects concentram as funcionalidades críticas do sistema. O Módulo de Empréstimos, classificado como de maior prioridade, foi implementado e está operacional (commit 85f5e31). As melhorias de segurança, incluindo correções XSS em flash messages (LIM-201), validação CSRF e uso de bcrypt, já foram parcialmente aplicadas. O planejamento em fases (básico → avançado) para Sprints 2-3 é adequado.

Fill-ins (Baixo Impacto, Baixo Esforço) — 3 tarefas

As tarefas de preenchimento são apropriadas para intervalos entre sprints. A documentação de APIs internas é a mais relevante por contribuir para a manutenibilidade do sistema. A otimização de performance e atualização de dependências são tarefas de manutenção preventiva que podem ser distribuídas ao longo do projeto.

Time Sinks (Baixo Impacto, Alto Esforço) — 2 tarefas

A classificação como Time Sink está correta. A refatoração total do CSS/Layout não se justifica neste momento, pois o layout existente é funcional. A implementação de funcionalidades não-solicitadas representa risco de escopo creep e deve ser evitada. Recomenda-se criar labels específicas no board para identificar visualmente estas tarefas.

16.4 Recomendações Finais

  1. Manter a priorização atual, executando Quick Wins na Sprint 1
  2. Antecipar testes automatizados (BL-12, previsto para Sprint 12) para sprints iniciais
  3. Criar label "time-sink" no board para evitar priorização acidental
  4. Revisar a priorização a cada sprint planning conforme recomendação do backlog
  5. Adicionar validação automatizada de consistência como extensão da correção de Root Path

17. Implementação de QR Code

O módulo de QR Code foi implementado como parte da issue LIM-79 para permitir a identificação física de cada componente do laboratório através de etiquetas com código QR. Ao escanear a etiqueta com a câmera do celular, o usuário é direcionado para a página de detalhes do item sem necessidade de autenticação.

17.1 Fluxo Completo

EtapaAçãoArquivoDescrição
1Cadastrosrc/itens/cadastrar.phpAdministrador cadastra novo item no sistema
2Geração QRsrc/itens/qrcode.phpSistema gera QR Code com URL /itens/ver.php?id=X
3Impressãosrc/itens/qrcode.phpEtiqueta é pré-visualizada e impressa com CSS @media print
4FixaçãoEtiqueta é fixada fisicamente no componente
5LeituraCâmera do celularUsuário escaneia QR Code com app de câmera nativa
6Redirecionamentosrc/itens/ver.phpNavegador abre página de detalhes do item
7Visualizaçãosrc/itens/ver.phpUsuário consulta nome, patrimônio, tipo, status e localização
Tabela 17.1 — Fluxo completo de QR Code em 7 etapas

17.2 Arquivos Envolvidos

ArquivoTipoFunção
src/itens/ver.phpNovoPágina de detalhes do item (mobile-first, acessível via QR)
src/itens/qrcode.phpNovoGeração de QR Code, pré-visualização e impressão de etiqueta
src/itens/listar.phpModificadoColuna QR adicionada na tabela + nome do item linkado para ver.php
src/itens/cadastrar.phpModificadoMensagem de sucesso inclui link "Gerar QR Code"
src/itens/editar.phpModificadoBotão "QR Code" adicionado ao lado de Salvar
Tabela 17.2 — Arquivos criados e modificados para o módulo QR Code

17.3 Tecnologias e Regras de Negócio

O QR Code utiliza a biblioteca qrcodejs via CDN, sem dependência Composer. A URL codificada segue o formato http://{$_SERVER['HTTP_HOST']}/itens/ver.php?id={item_id}, garantindo funcionamento em rede local. A impressão é otimizada via CSS @media print para etiquetas físicas. A página ver.php não requer autenticação, permitindo leitura rápida por qualquer pessoa com smartphone. A documentação completa do fluxo está disponível em docs/fluxo-qrcode.html.

18. Portal de Documentação Auditável

Como parte do esforço contínuo de documentação, foi implementado um portal de documentação navegável e auditável na pasta docs/, acessível via navegador e servido pelo Apache/Docker. O portal permite rastrear a evolução do projeto com série histórica, vinculação a issues, commits e agentes responsáveis.

18.1 Estrutura do Portal

A estrutura organizacional do portal segue o padrão abaixo:

docs/
├── index.html              (Portal principal)
├── artigo.html             (Artigo acadêmico — este documento)
├── fluxo-qrcode.html       (Documentação do QR Code)
├── assets/
│   ├── css/main.css        (CSS unificado do portal)
│   ├── img/                (Imagens do projeto)
│   └── screenshots/        (Prints de tela)
├── auditoria/              (Histórico de auditoria)
│   └── index.html
├── banco/                  (Documentação do banco de dados)
│   └── index.html
├── estudos/                (Estudos técnicos)
│   └── index.html
└── telas/                  (Catálogo de telas)
    └── index.html

18.2 Série Histórica e Rastreabilidade

Cada página do portal segue um padrão de auditoria com: identificação da issue relacionada, data, agente responsável, tipo de documento e status. Revisões preservam o conteúdo original e exibem a versão corrigida em bloco próprio, mantendo rastreabilidade completa das alterações. O CSS unificado em docs/assets/css/main.css garante aparência profissional com layout responsivo, cards de resumo, badges de status e tabelas de revisão.

18.3 Manutenção e Padrão ABNT

O arquivo docs/artigo.html é mantido como a versão oficial e canônica do artigo acadêmico (conforme REVISAO_DOCUMENTAL.md), substituindo as cópias legadas em src/doc/artigo.html e src/doc/artigo1.html. A documentação segue as normas ABNT NBR 6023 (referências) e NBR 14724 (apresentação de trabalhos acadêmicos) sempre que aplicável.

19. Próximos Passos

  1. Módulo de Agendamentos — Calendário interativo com validação de conflitos
  2. Módulo de Relatórios — Dashboard com gráficos e exportação de dados
  3. Módulo de Auditoria — Log de todas as operações do sistema
  4. Fórum de Dúvidas — Integração com Flarum (planejado, pendente de implementação)
  5. Testes Automatizados — Cobertura de testes unitários e funcionais
  6. Deploy em Produção — Configuração de ambiente de produção com HTTPS e backup automatizado

20. Pendências e Notas de Divergência

⚠ Nota de Divergência — Arquivos de Referência: O arquivo BACKLOG_MOBILE_FIRST.md mencionado no planejamento original não está presente na raiz do repositório. O arquivo CHECKLIST_AUDITORIA.md foi criado e está disponível na raiz do workspace (verificado em Maio 2026); recomenda-se confirmar se encontra-se versionado no branch final antes da entrega. O arquivo BACKLOG_PRIORITIZACAO.md está presente na raiz e contém a priorização oficial do backlog utilizando a Matriz de Impacto vs Esforço (ver seção 16). O arquivo docs/planejamento/BACKLOG_ORGANIZADO_LIM-143.md também está disponível com a organização diária do backlog. Recomenda-se a criação do BACKLOG_MOBILE_FIRST.md para alinhamento completo com o planejamento original.
⚠ Documentos Legados Não Oficiais — Cópias em src/doc/: Os arquivos src/doc/artigo.html (v2.0) e src/doc/artigo1.html (v2.1) são cópias legadas não oficiais do artigo, mantidas apenas para referência histórica. A versão oficial e vigente é docs/artigo.html (v3.0 — este documento). Conteúdo divergente entre as versões deve ser resolvido pela atualização de docs/artigo.html. A partir da revisão LIM-344, estes legados foram verificados e registrados como consistentes com o artigo oficial; sua remoção é opcional e recomendada para limpeza futura do repositório.
ItemDescriçãoPrioridadeStatus
BACKLOG_MOBILE_FIRST.mdArquivo de referência para backlog com foco mobile-firstMédiaAusente
BACKLOG_PRIORITIZACAO.mdPriorização do backlog com Matriz Impacto vs Esforço (raiz)MédiaPresente
BACKLOG_ORGANIZADO_LIM-143.mdOrganização diária do backlog (docs/planejamento/)MédiaPresente
CHECKLIST_AUDITORIA.mdChecklist de auditoria técnica do projetoMédiaPresente
CRUD EmpréstimosImplementação completa do fluxo de empréstimos e devoluçõesAltaConcluído
CRUD AgendamentosMódulo de agendamentos com calendário e validação de conflitosAltaPendente
Relatórios AvançadosDashboard com gráficos dinâmicos e exportação de dadosMédiaPendente
Testes AutomatizadosCobertura de testes unitários e funcionais nos módulosAltaPendente
Deploy em ProduçãoConfiguração de HTTPS, backup e ambiente de produçãoAltaPendente

21. Conclusão

O desenvolvimento do Sistema de Gestão do Laboratório de Hardware demonstrou que a informatização dos processos de controle de equipamentos, empréstimos e agendamentos é viável e necessária para a realidade do IFF Bom Jesus do Itabapoana. A partir da análise de requisitos, modelagem conceitual e implementação dos módulos iniciais (autenticação e CRUD de itens), foi possível validar a arquitetura proposta e estabelecer uma base sólida para a continuidade do projeto.

Os resultados parciais indicam que a utilização de tecnologias acessíveis e de código aberto (PHP, MySQL, Bootstrap, Docker) permite criar uma solução robusta, escalável e de baixo custo de manutenção. O planejamento com metodologia ágil, evidenciado pelos gráficos de Gantt e Burndown, proporciona visibilidade clara do progresso e das etapas restantes.

Desde a versão anterior deste artigo, avanços significativos foram alcançados: o módulo de empréstimos foi implementado com CRUD completo e validações de negócio (RN-04, RN-05, RN-08, RN-09); o sistema de QR Code foi incorporado para identificação física de componentes, permitindo que qualquer pessoa com um smartphone obtenha detalhes do item instantaneamente; e a segurança do sistema foi substancialmente reforçada com rate limiting, CSP headers e tokens CSRF. Adicionalmente, o portal de documentação auditável foi estabelecido como fonte oficial de consulta e rastreabilidade do projeto.

Na presente revisão (LIM-344), foi realizada uma verificação final de consistência entre a versão oficial do artigo (docs/artigo.html) e seus legados (src/doc/artigo.html v2.0 e src/doc/artigo1.html v2.1), além da correção de caracteres e referências documentais. A série histórica e a rastreabilidade do projeto foram preservadas, garantindo a integridade acadêmica do documento.

Como trabalhos futuros, destacam-se a implementação dos módulos de agendamentos, relatórios, auditoria e fórum, além da realização de testes automatizados e do deploy em ambiente de produção. O sistema tem potencial para ser replicado em outros laboratórios da instituição, contribuindo para a modernização da gestão acadêmica.

22. Referências (ABNT NBR 6023)

O estudo de priorização pode ser consultado em LIM-134‑estudo.

INSTITUTO FEDERAL FLUMINENSE. Documentação do projeto: sistema de gestão do laboratório de hardware. Bom Jesus do Itabapoana: IFF, 2025. 89 p.

INSTITUTO FEDERAL FLUMINENSE. Requisitos do sistema: laboratório de hardware. Bom Jesus do Itabapoana: IFF, 2025. Documento técnico.

GRUPO 5 E 1. Relatório do sistema Lab System. Bom Jesus do Itabapoana: IFF, 2025. PDF.

GRUPO 4. Relatório técnico — Módulo 4: relatórios. Bom Jesus do Itabapoana: IFF, 2025.

GRUPO 5. Relatório final — Módulo 5: fórum de dúvidas. Bom Jesus do Itabapoana: IFF, 2025.

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6023: informação e documentação: referências: elaboração. Rio de Janeiro, 2018.

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 14724: informação e documentação: trabalhos acadêmicos: apresentação. Rio de Janeiro, 2011.

PHP: HYPERTEXT PREPROCESSOR. PHP: Hypertext Preprocessor. Versão 8.2. Disponível em: <https://www.php.net>. Acesso em: 19 maio 2026.

ORACLE. MySQL 8.0 Reference Manual. Disponível em: <https://dev.mysql.com/doc/>. Acesso em: 19 maio 2026.

BOOTSTRAP. Bootstrap 5.3 Documentation. Disponível em: <https://getbootstrap.com/docs/5.3/>. Acesso em: 19 maio 2026.

DOCKER INC. Docker Documentation. Disponível em: <https://docs.docker.com>. Acesso em: 19 maio 2026.

DEBIANLIMA. laboratorio_hardware_2025. Repositório GitHub. Disponível em: <https://github.com/debianlima/laboratorio_hardware_2025>. Acesso em: 21 maio 2026.

DAVIDSHIM. qrcodejs. Biblioteca JavaScript para geração de QR Code. Disponível em: <https://github.com/davidshimjs/qrcodejs>. Acesso em: 21 maio 2026.

OWASP FOUNDATION. Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet. Disponível em: <https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html>. Acesso em: 21 maio 2026.

OWASP FOUNDATION. Content Security Policy Cheat Sheet. Disponível em: <https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html>. Acesso em: 21 maio 2026.

MOZILLA DEVELOPER NETWORK. Content Security Policy (CSP). MDN Web Docs. Disponível em: <https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP>. Acesso em: 21 maio 2026.

MOZILLA DEVELOPER NETWORK. Rate Limiting HTTP. MDN Web Docs. Disponível em: <https://developer.mozilla.org/en-US/docs/Glossary/Rate_limit>. Acesso em: 21 maio 2026.