🛠️ Atividades

📋 Atividade 03: Engenharia de Requisitos

Bem-vindo a mais uma etapa da sua jornada no curso de Gestão de TI / Desenvolvimento de Sistemas. Hoje vamos mergulhar em conceitos que conectam a teoria técnica diretamente com o padrão de excelência da indústria, aprendendo a redigir o contrato técnico que guiará todos os programadores. 🛡️🧩

🎯 Objetivo da Aula

Ao final desta atividade, você será capaz de:

  • Diferenciar Requisitos Funcionais (RF) (O que o sistema faz) de Requisitos Não-Funcionais (RNF) (Como o sistema se comporta).
  • Redigir requisitos com alto rigor técnico utilizando o padrão de escrita: "O sistema deve...".
  • Aplicar uma matriz de priorização de requisitos (Essencial, Importante, Desejável).

🏢 O Cenário Prático (Seu Desafio)

Na TecProExpress, após o seu time decidir utilizar a metodologia ágil (Atividade 02), a diretoria começou a bombardear a equipe com ideias para o novo App de Rastreamento. O diretor de Vendas quer que o App tenha "um mapa bem bonito e rápido". O diretor de Logística quer "um botão de pânico para o motorista".

Ouvindo essas demandas soltas, os desenvolvedores não sabem o que programar primeiro, nem como medir se o mapa é "bonito e rápido" o suficiente.

"Seu desafio é atuar como Engenheiro de Requisitos. Você deve traduzir as falas confusas e abstratas da diretoria em Requisitos Funcionais e Não-Funcionais matemáticos, testáveis e priorizados, criando a lista mestra que o time de desenvolvimento vai usar para trabalhar."


🧠 Fundamentos: A Teoria Traduzida

A Engenharia de Requisitos é a arte de extrair a verdade. Se o requisito for mal escrito, o programador criará o código errado.

Funcional vs Não-Funcional

  • Funcional (RF): É uma ação. É um botão que você clica, uma tela que abre, um cálculo que é feito. (Ex: "O sistema deve calcular o frete").
  • Não-Funcional (RNF): É a infraestrutura, a performance, a segurança. Você não clica num RNF, você o sente. (Ex: "O cálculo do frete deve ser respondido em menos de 2 segundos").

📊 Visualizando a Lógica

Dica: Use sempre o padrão "O sistema deve AÇÃO quando CONDIÇÃO". Nunca use adjetivos (bonito, rápido, seguro), use métricas exatas!

📖 Exemplo Guiado

Abaixo, veja como categorizar e escrever requisitos de forma profissional.

PassoFala do ClienteTradução da Engenharia
01"Quero cadastrar meus clientes."RF01: O sistema deve permitir o cadastro de clientes contendo Nome, CPF e Endereço.
02"O mapa tem que carregar rápido."RNF01: O mapa de rastreio deve ser renderizado em no máximo 3 segundos após o clique.
03"Tem que rodar no celular de todo mundo."RNF02: O sistema deve ser responsivo e suportar os sistemas Android 10+ e iOS 14+.

📊 Priorização MoSCoW dos Requisitos da TecProExpress

🛠️ Estrutura de Documentação de Requisitos

# Lista de Requisitos (App Rastreio Express)

## Requisitos Funcionais (RF)
| ID | Descrição | Prioridade |
| :--- | :--- | :--- |
| RF01 | O sistema deve permitir que o motorista faça login via CPF e Senha. | Essencial |
| RF02 | O sistema deve listar as entregas do dia em ordem de distância. | Importante |
| RF03 | O sistema deve emitir um som quando um novo pacote for atribuído. | Desejável |

## Requisitos Não-Funcionais (RNF)
| ID | Categoria | Descrição |
| :--- | :--- | :--- |
| RNF01 | Performance | A listagem de entregas deve carregar em < 2 segundos. |
| RNF02 | Segurança | As senhas devem ser criptografadas em BCrypt no banco. |

🔍 Detalhamento da Documentação:

  • A Prioridade salva projetos. Se o prazo apertar, o time corta os requisitos "Desejáveis" para garantir que o "Essencial" suba para produção.
  • Categorias de RNF: Podem ser de Performance, Segurança, Usabilidade ou Tecnológicas.

🛠️ Prática Obrigatória 1: A Lista de Requisitos

Cenário: O projeto semestral da sua equipe (criado na Atividade 01).

  1. Crie uma tabela com pelo menos 10 Requisitos Funcionais (RF).
  2. Crie uma tabela com pelo menos 5 Requisitos Não-Funcionais (RNF).
  3. Utilize estritamente a nomenclatura formal (RF01, RNF01) e o padrão de escrita "O sistema deve".
  4. Para os Funcionais, indique se a prioridade é: Essencial, Importante ou Desejável.

🏁 Resultado Esperado (Para sua Referência)

Duas tabelas organizadas e limpas, sem ambiguidades, onde qualquer programador saberia exatamente o que fazer ao lê-las.


📤 Instruções de Entrega (Microsoft Teams)

Após validar suas documentações técnicas:

  1. Salve o arquivo de documentação com o nome Atividade_03.md na pasta es-atv-03-requisitos/ do seu repositório GitHub.
  2. Certifique-se de fazer o commit e push para o repositório público.
  3. Submeta o link do seu repositório no Microsoft Teams para avaliação do professor.

💡 Checkpoint de Lógica

Importante:Reflexão Profissional: Imagine que você escreveu o seguinte requisito: "RF04: O sistema deve ter uma tela de relatórios legais". Durante a entrega, o cliente recusou o sistema dizendo que o relatório não era "legal" o suficiente. Como engenheiro, onde esteve o erro e como você reescreveria esse requisito para se proteger de recusas futuras? 🧠🛡️

📊 Rubrica Formativa de Avaliação

Critério de Avaliação Insuficiente (0% - 40%) Regular (41% - 70%) Excelente (71% - 100%)
Requisitos Funcionais (RF) Menos de 10 RFs ou formulados de maneira ambígua. 10 RFs formulados mas com falhas na padronização 'O sistema deve'. Pelo menos 10 RFs perfeitamente numerados (RF01..RF10) com priorização (Essencial/Importante/Desejável).
Requisitos Não-Funcionais (RNF) Menos de 5 RNFs ou sem distinção entre qualidade/desempenho. 5 RNFs definidos com medição subjetiva. Pelo menos 5 RNFs numerados (RNF01..RNF05) abrangendo Performance, Segurança e Usabilidade.
Entrega no GitHub Entrega fora da pasta ou repositório inacessível. Arquivo entregue mas sem tabela Markdown adequada. `Atividade_03.md` em `es-atv-03-requisitos/` com Markdown impecável.
Copyright © 2026