7. Requisitos de Software
7.1 Lista de Requisitos Funcionais (Especificação Suplementar)
Os requisitos funcionais estabelecem um consenso que fomenta a implementação dos objetivos planejados para o app Nativo. A seguir, é apresentado o escopo atualizado do sistema, totalizando 50 requisitos funcionais organizados de acordo com as Características do Produto (CPs) e os Objetivos Estratégicos (OEs) do projeto.
(OE1) Aumentar a retenção e o engajamento na plataforma
CP1 - Criação de Mecanismos interativos de aprendizagem e engajamento
| ID | Nome do requisito | Descrição |
|---|---|---|
| RF01 | Criar atividade educacional | Permitir que professores criem atividades para os usuários resolverem. |
| RF02 | Listar atividades educacionais para gerenciamento | Permitir que usuários autorizados visualizem as atividades educacionais cadastradas. |
| RF03 | Responder atividade educacional | Permitir que os usuários submetam respostas às atividades publicadas. |
| RF04 | Visualizar resultado da atividade | Permitir que os usuários visualizem a correção e a pontuação obtida após responderem a uma atividade. |
| RF05 | Editar atividade educacional | Permitir que professores, administradores e moderadores editem o conteúdo de uma atividade. |
| RF06 | Excluir atividade educacional | Permitir que professores, administradores e moderadores excluam uma atividade. |
| RF07 | Criar insígnia | Permitir que administradores, professores e moderadores criem insígnias de engajamento. |
| RF08 | Editar insígnia | Permitir que administradores e moderadores alterem o nome, arte ou regras de uma insígnia. |
| RF09 | Excluir insígnias | Permitir que administradores e moderadores removam insígnias do sistema. |
| RF50 | Listar atividades disponíveis para resolução | Permitir que usuários comuns visualizem as atividades educacionais disponíveis para resolução. |
CP2 - Criação de Feed Social Comunitário
| ID | Nome do requisito | Descrição |
|---|---|---|
| RF10 | Criar publicação | Permitir que todos os usuários publiquem conteúdos na área de feed. |
| RF11 | Editar publicação | Permitir que os usuários editem suas próprias publicações no feed. |
| RF12 | Listar publicações | Permitir que os usuários visualizem o histórico de postagens no feed comunitário. |
| RF13 | Excluir publicação | Permitir que o autor da publicação e moderadores excluam uma postagem. |
| RF14 | Interagir com a publicação | Permitir que todos os usuários interajam (ex: curtir/comentar) com as publicações postadas. |
| RF15 | Criar eventos | Permitir que usuários criem eventos da comunidade na plataforma. |
| RF16 | Editar eventos | Permitir que os criadores de um evento alterem suas informações e datas. |
| RF17 | Listar eventos | Permitir que os usuários visualizem a agenda de eventos da comunidade. |
| RF18 | Excluir eventos | Permitir que o criador do evento e moderadores excluam o evento do sistema. |
| RF19 | Compartilhar eventos | Permitir que o usuário compartilhe eventos da comunidade para outras redes ou usuários. |
(OE2) Assegurar a integridade e segurança do acervo cultural
CP3 - Controle de usuário
| ID | Nome do requisito | Descrição |
|---|---|---|
| RF20 | Banir usuário | Permitir que administradores banam usuários infratores da aplicação. |
| RF21 | Atribuir cargos de usuário | Permitir que administradores atribuam permissões específicas (ex: professor, moderador) aos usuários. |
| RF22 | Editar cargos de usuário | Permitir que administradores modifiquem os níveis de acesso de um usuário existente. |
| RF23 | Listar cargos de usuário | Permitir que administradores visualizem os cargos disponíveis e quem os ocupa. |
| RF24 | Desatribuir cargos de usuário | Permitir que administradores removam um cargo atribuído a um usuário. |
| RF25 | Candidatar-se a professor | Permitir que usuários solicitem oficialmente o papel de professor no sistema. |
| RF26 | Recuperar senha | Permitir que o usuário recupere o acesso à sua conta via redefinição de senha por e-mail. |
CP4 - Sistema de denúncias
| ID | Nome do requisito | Descrição |
|---|---|---|
| RF27 | Criar denúncia | Permitir que os usuários relatem publicações, comportamentos indevidos ou traduções incorretas. |
| RF28 | Atualizar status de denúncia | Permitir que moderadores e administradores alterem o status (ex: em análise, resolvida) de uma denúncia. |
| RF29 | Listar denúncias | Permitir que moderadores e administradores visualizem todas as denúncias realizadas na aplicação. |
| RF30 | Criar categoria de denúncia | Permitir que administradores criem novas classificações para organizar os tipos de denúncia. |
| RF31 | Editar categoria de denúncia | Permitir que administradores alterem o título ou descrição de uma categoria existente. |
| RF32 | Listar categorias de denúncia | Permitir que o sistema exiba as categorias disponíveis no momento do preenchimento de uma denúncia. |
| RF33 | Excluir categoria de denúncia | Permitir que administradores removam categorias de denúncias obsoletas. |
(OE3) Enriquecer a experiência do usuário na aplicação
CP5 - Suporte a Multimídia nas Traduções
| ID | Nome do requisito | Descrição |
|---|---|---|
| RF34 | Cadastrar vídeo | Permitir o cadastro de vídeos, pelos administradores e moderadores, ao sistema. |
| RF35 | Exibir vídeo | Permitir que os usuários visualizem os vídeos vinculados a uma tradução. |
| RF36 | Excluir vídeo | Permitir que os moderadores apaguem definitivamente um vídeo da base de dados. |
| RF37 | Associar vídeo | Permitir que administradores e moderadores vinculem vídeos cadastrados a uma tradução específica. |
| RF38 | Desassociar vídeo | Permitir que administradores e moderadores removam a vinculação entre um vídeo e uma tradução. |
| RF39 | Cadastrar áudio | Permitir o cadastro de arquivos de áudio, pelos administradores e moderadores, no sistema. |
| RF40 | Reproduzir áudio | Permitir que os usuários reproduzam os áudios vinculados às traduções. |
| RF41 | Excluir áudio | Permitir que os moderadores apaguem definitivamente um arquivo de áudio da base de dados. |
| RF42 | Associar áudio | Permitir que administradores e moderadores vinculem áudios cadastrados a uma tradução específica. |
| RF43 | Desassociar áudio | Permitir que administradores e moderadores removam a vinculação entre um áudio e uma tradução. |
CP6 - Perfil de Usuário
| ID | Nome do requisito | Descrição |
|---|---|---|
| RF44 | Editar usuário | Permitir que os usuários editem as informações pessoais de seus perfis. |
| RF45 | Listar histórico de traduções | Permitir que os usuários visualizem o histórico de traduções realizadas, com data e resultado. |
| RF46 | Favoritar tradução | Permitir que o usuário marque traduções específicas como favoritas. |
| RF47 | Listar traduções favoritadas | Permitir que o usuário visualize rapidamente a lista de suas traduções marcadas como favoritas. |
| RF48 | Listar insígnias | Permitir que os usuários visualizem as insígnias conquistadas em seus perfis. |
CP7 - Sincronização e Acesso Offline de Traduções
| ID | Nome do requisito | Descrição |
|---|---|---|
| RF49 | Baixar traduções | Permitir que os usuários façam o download das traduções textuais e auditivas para acesso offline. |
7.2 Lista de Requisitos Não Funcionais (Especificação Suplementar)
Os requisitos não funcionais definem critérios de qualidade do sistema Nativo. A tabela a seguir apresenta os RNFs com sua categoria segundo a sigla URPS (Usabilidade, Confiabilidade, Desempenho, Segurança).
RNF01
- Nome: Tempo de busca de tradução
- Descrição: O sistema deve apresentar o resultado de uma tradução em até 2 segundos para 95% das requisições realizadas com conexão mínima de 5 Mbps.
- Categoria URPS: Desempenho
Visualizar Evidências

Resultado do Teste: A imagem acima demonstra um teste de requisição realizado pelo Postman na rota de busca de traduções (
/api/discurso/buscar). Como é possível observar nos dados da resposta da requisição, o servidor processou e retornou a tradução em apenas 596 ms (milissegundos), o que atende com folga ao requisito estipulado de tempo máximo de 2 segundos.
RNF02
- Nome: Navegação da tradução
- Descrição: O usuário deve conseguir acessar a funcionalidade de tradução em no máximo 2 interações a partir da tela inicial.
- Categoria URPS: Usabilidade
Visualizar Evidências
Tela Inicial
Interação 1: Inserção
Interação 2: Botão
Resultado do Teste: As capturas de tela demonstram o fluxo principal de uso a partir da tela inicial do aplicativo, que por padrão já carrega a aba de traduções. Para obter o resultado, o fluxo exige exatamente duas interações: (1) Um toque no campo de entrada de texto "Discurso" para acionar o teclado e inserir a palavra; (2) Um toque no botão "Traduzir". A terceira imagem comprova que a tradução e a mídia correspondente são exibidas logo após esse segundo clique, atendendo perfeitamente à métrica de usabilidade exigida.
RNF03
- Nome: Navegação da rede social
- Descrição: O usuário deve conseguir acessar publicações da comunidade em no máximo 3 cliques a partir da tela inicial.
- Categoria URPS: Usabilidade
- Fora do escopo
RNF04
- Nome: Suporte simultâneo geral
- Descrição: O sistema deve suportar no mínimo 100 usuários simultâneos nas funcionalidades assíncronas mantendo tempo médio de resposta de até 5 segundos.
- Categoria URPS: Desempenho
Visualizar Evidências

Resultado do Teste: A captura de tela acima apresenta um teste de estresse (load test) realizado utilizando a ferramenta Locust. O painel superior e os logs do terminal confirmam a simulação exata de 100 usuários simultâneos (
Users: 100) realizando requisições na rota de busca (/api/discurso/buscar). Conforme indicado na coluna "Average (ms)", o tempo médio de resposta do servidor para sustentar essa carga foi de 2180.81 ms (aproximadamente 2,18 segundos), cumprindo com sucesso a exigência de manter a média inferior a 5 segundos.
RNF05
- Nome: Tempo de carregamento
- Descrição: Todas as telas do aplicativo devem carregar em até 4 segundos em dispositivos Android a partir da versão 10 .
- Categoria URPS: Desempenho
Visualizar Evidências
Tela de Tradução 
Tela de Atividades 
Tela de Perfil 
Resultado do Teste: As imagens acima apresentam o profiling de desempenho e renderização das telas principais do aplicativo (Tradução, Atividade e Perfil, respectivamente). Conforme destacado na aba "Commit information" (métrica Committed at no painel direito), os tempos totais de carregamento e montagem das telas foram de 2.7s, 3.3s e 1.8s. Todos os resultados demonstram o cumprimento do requisito, mantendo o carregamento inferior ao teto exigido de 4 segundos.
RNF06
- Nome: Funcionamento offline
- Descrição: O aplicativo deve permitir acesso às traduções previamente salvas mesmo sem conexão com a internet.
- Categoria URPS: Confiabilidade
RNF07
- Nome: Backup de dados
- Descrição: O sistema deve realizar backup automático da base de dados ao menos uma vez a cada 7 dias.
- Categoria URPS: Confiabilidade
Visualizar Evidências

Resultado do Teste: As imagens exibem as configurações de BACKUP do banco de dados (Cloud Firestore) acessadas tanto pelo painel do Google Cloud quanto pelo console do Firebase. A seção "Backups programados" comprova que a rotina de backups semanais está ativada, configurada para ser executada automaticamente toda segunda-feira (com retenção de 14 dias).
RNF08
- Nome: Compatibilidade Android
- Descrição: O aplicativo deve ser compatível com dispositivos Android a partir da versão 10.0.
- Categoria URPS: Confiabilidade
Visualizar Evidências

Resultado do Teste: As capturas de tela acima evidenciam testes de execução realizados no Android Studio. A primeira imagem demonstra as configurações do emulador rodando sob a API 29, que corresponde à versão exata do Android 10. A segunda imagem comprova o aplicativo compilado, instalado e executando suas interfaces (tela de "Atividades") perfeitamente dentro desse mesmo ambiente, atestando a compatibilidade mínima exigida pelo requisito.
RNF09
- Nome: Escalabilidade de mídia
- Descrição: O sistema deve suportar upload de arquivos de mídia de até 30 MB.
- Categoria URPS: Desempenho
Visualizar Evidências

Resultado do Teste: A imagem acima exibe o painel de regras de segurança do Firebase Storage configurado para o ambiente do aplicativo. A condição inserida na linha 6 do código (
allow read, write: if request.resource.size < 30 * 1024 * 1024;) parametriza o servidor para aceitar operações de gravação (upload) estritamente se o tamanho do arquivo for inferior a 30 MB (calculado em bytes).
7.3 Lista de Regras de Negócio
As regras de negócio consolidam restrições, condições e políticas do domínio que orientam a execução dos requisitos e dos casos de uso.
| ID | Regra de negócio |
|---|---|
| RN01 | Apenas usuários com perfil de Professor criam atividades educacionais, as visualizam, editam e excluem. |
| RN02 | A criação de atividade exige título e no mínimo uma questão estruturada com enunciado, no mínimo duas alternativas e exatamente uma alternativa correta vinculada às opções. |
| RN03 | Atividades sem questões válidas são inativadas para listagem e resolução. |
| RN04 | A alternativa correta é ocultada da interface. |
| RN05 | O processamento da pontuação das atividades é realizado após a submissão de todas as questões obrigatórias. |
| RN06 | O registro de entidades exige preenchimento de campos obrigatórios: nome, objetivo e imagem para insígnias; título, data futura, horário, local e descrição para eventos; e texto ou mídia para publicações. |
| RN07 | As insígnias referentes à taxa de acertos de uma atividade possuem dependência direta, devendo ser excluídas caso a respectiva atividade seja removida do sistema. |
| RN08 | A edição e exclusão de publicações no feed e de eventos são permitidas ao usuário autor do registro e ao moderador. |
| RN09 | O sistema aplica o marcador textual Editado em publicações que sofreram alteração após o envio original. |
| RN10 | A ordenação exibe publicações e históricos de tradução em ordem cronológica decrescente, e eventos comunitários em ordem cronológica crescente. |
| RN11 | A alteração de nível de acesso entra em vigor imediatamente nas regras de sessão, e o banimento inativa as credenciais do usuário, o que é reversível. |
| RN12 | O sistema bloqueia a autoexclusão ou o autobanimento de um Administrador caso não exista outro perfil de mesma permissão ativo na plataforma. |
| RN13 | A recuperação de senha exibe mensagens genéricas para evitar enumeração de contas, exige intervalo de 3 minutos para reenvio e invalida códigos anteriores associados ao usuário. |
| RN14 | A alteração de perfil restringe-se aos dados da própria conta e exige correspondência exata nos caracteres dos campos de nova senha e confirmação. |
| RN15 | A denúncia exige a seleção de categoria existente, inicia com status Aberta, e sua alteração para Resolvida ou Improcedente é exclusiva de Administradores. |
| RN16 | O sistema aborta o registro da denúncia se o conteúdo alvo for excluído da plataforma antes da confirmação da submissão. |
| RN17 | Apenas Administradores gerenciam categorias de denúncia. |
| RN18 | Apenas Administradores e Professores gerenciam mídias de vídeo e áudio. |
| RN19 | O upload restringe vídeos a formatos MP4, MOV, AVI até 30MB, e áudios a formatos MP3, WAV, OGG até 10MB. |
| RN20 | O cadastro de mídias exige vinculação a uma tradução existente; a desassociação remove apenas esse vínculo, mantendo o arquivo preservado no acervo. |
| RN21 | O sistema bloqueia a inclusão duplicada na lista de favoritos e oculta traduções inativadas ou removidas da base de dados. |
| RN22 | O pacote de sincronização offline omite as mídias audiovisuais e exige armazenamento livre no dispositivo. |
| RN23 | A candidatura a Professor exige justificativa, é restrita a usuários sem este perfil e registrada com status Pendente, bloqueando novos envios do mesmo usuário simultaneamente. |
| RN24 | A alteração de status da solicitação de candidatura para aprovação ou rejeição é de execução exclusiva dos Administradores. |