🚀 Capítulo 04: Engenharia de Requisitos (Tema: Sherlock Holmes)
NOTE
Este capítulo utiliza a temática de Sherlock Holmes para explicar a Engenharia de Requisitos. Investigue o que o cliente diz para descobrir o que ele realmente precisa!
1. 🎯 Objetivo da Aula
Compreender o conceito de Engenharia de Requisitos, aprendendo a diferenciar Requisitos Funcionais de Requisitos Não-Funcionais e a importância de validar as necessidades do cliente.
2. 🏢 O Cenário Prático (Seu Desafio)
O detetive Sherlock Holmes é contratado por um cliente desesperado que diz: “Alguém roubou meu diamante de dentro do cofre trancado!“.
- Sherlock não aceita a primeira história como verdade absoluta. Ele investiga a cena, faz perguntas capciosas e descobre que o cliente, na verdade, tinha esquecido o diamante no bolso do casaco! O cliente achava que sabia o que tinha acontecido, mas estava errado.
Na Engenharia de Software, os clientes agem exatamente assim. Eles chegam dizendo: “Quero um sistema igual ao Facebook”. Se você simplesmente fizer o que eles pedem, vai entregar um produto errado e caro. Você precisa agir como o Sherlock Holmes! Precisa investigar o negócio do cliente, fazer perguntas e descobrir os Requisitos reais do sistema. Seu desafio é desvendar o mistério do que o cliente realmente precisa!
🧠 Fundamentos: A Teoria Traduzida
Um Requisito é uma condição ou capacidade que o sistema deve atender. Nós os dividimos em dois grandes grupos:
⚙️ 1. Requisitos Funcionais (O que o sistema FAZ):
Descrevem as funções e ações que o sistema deve ser capaz de realizar.
- Exemplo: “O sistema deve permitir que o usuário recupere a senha por e-mail”.
- Exemplo: “O sistema deve emitir um relatório de vendas em PDF”.
🛡️ 2. Requisitos Não-Funcionais (Como o sistema É):
Descrevem as qualidades, restrições e características do sistema. Não são ações, mas como o sistema se comporta.
- Exemplo (Desempenho): “O sistema deve carregar as páginas em menos de 2 segundos”.
- Exemplo (Segurança): “As senhas dos usuários devem ser guardadas com criptografia”.
- Exemplo (Disponibilidade): “O sistema deve ficar no ar 24 horas por dia, 7 dias por semana”.
4. 📖 Exemplo Guiado: Elicitação de Requisitos
Como o “Sherlock Engenheiro” descobre os requisitos? Usando técnicas de Elicitação (extração):
- Entrevistas: Conversar diretamente com quem vai usar o sistema.
- Brainstorming: Reunião de chuva de ideias com a equipe e o cliente.
- Observação: Ir até a empresa do cliente e ver como eles trabalham hoje no papel para entender o fluxo.
5. 🛠️ Prática Obrigatória 1: Funcional ou Não-Funcional?
Classifique os requisitos abaixo como Funcional ou Não-Funcional:
- O aplicativo deve rodar tanto em celulares Android quanto em iPhones.
- O usuário deve conseguir cancelar a sua assinatura com apenas dois cliques.
- O sistema deve fazer o backup de todos os dados automaticamente todos os dias às 2h da manhã.
- O sistema deve permitir o pagamento usando cartão de crédito e PIX.
6. 🛠️ Prática Obrigatória 2: O Cliente Confuso
Um cliente pede para você construir um site de vendas e diz: “Eu quero que o site seja muito rápido!“.
- Isso é um requisito funcional ou não-funcional?
- Dizer apenas “muito rápido” é uma boa descrição de requisito para um engenheiro? Como você reescreveria esse requisito de forma que pudesse ser testado depois? (Dica: Use números).
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 04 EngSoftware) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
extra_engenharia_de_software/
├── capitulos/
│ ├── capitulo_04_requisitos.md
│ └── codigos/
│ └── cap04/
│ └── lista_requisitos.txt💡 Checkpoint de Lógica
Um erro em um requisito descoberto no início do projeto custa barato para consertar. O mesmo erro descoberto depois que o sistema está pronto pode custar o cancelamento de todo o contrato!
10. 🔥 Desafio de Fixação
Pesquise o que significa a sigla SRS (Software Requirements Specification) ou Especificação de Requisitos de Software.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Não-Funcional (Portabilidade/Compatibilidade).
- Funcional (Ação de cancelar assinatura).
- Não-Funcional (Confiabilidade/Backup).
- Funcional (Ação de pagar). Gabarito da Prática 2:
- É um requisito Não-Funcional (Desempenho).
- Não. “Muito rápido” é algo subjetivo (o que é rápido para mim pode ser lento para você). O ideal é usar métricas claras.
- Sugestão de reescrita: “O sistema deve processar a finalização da compra e exibir a tela de confirmação em no máximo 3 segundos sob carga normal”.