🚀 Engenharia de Software
Engenharia de Requisitos (Aula Estendida)
(Descobrindo o que o cliente realmente quer no mundo real)
👨🏫 Professor: Ricardo Pires
📚 Unidade II
🎯 A Arte da Engenharia de Requisitos
A programação é a parte fácil. Descobrir o que programar é o verdadeiro desafio da computação. Requisitos estabelecem o que o sistema deve fazer (funções) e quais as suas limitações (restrições legais, temporais ou de hardware).
Na prática diária, o Engenheiro de Requisitos atua como um tradutor alienígena, e precisa:
- 🕵️ Descobrir/Elicitar: Sentar com o cliente e arrancar verdades não ditas.
- 🧠 Analisar & Negociar: Filtrar pedidos impossíveis.
- ✍️ Especificar: Colocar o caos humano num documento técnico rigoroso.
- ✅ Validar: Provar que o que foi escrito bate com o desejo final.
🥲 O Abismo da Comunicação
O telefone sem fio é o pior inimigo da Engenharia. O custo de um requisito compreendido de forma errada na primeira semana pode falir a empresa no lançamento do semestre que vem.
[ Cliente ] -> "Quero um controle de clientes seguro"
│
[ Analista ] -> "O sistema precisa de criptografia RSA 4096"
│
[ Dev Front ] -> "Vou colocar uma tela de Loading com cadeado piscando"
│
[ Dev DB ] -> "Salvarei a senha do usuário em TEXTO PURO no banco SQL"- O analista sofisticou demais.
- O front-end mentiu pro usuário.
- O back-end quebrou a lei e ignorou a segurança pedida (Falha trágica!).
🏗️ Níveis de Profundidade: Do Terno ao Terminal
Documentar bem significa adaptar a linguagem de acordo com quem está lendo na corporação:
- 👤 Nível Usuário / Executivo: Linguagem natural. Usado para o CEO aprovar a verba e pagar a fatura. Ex: “O App deve ter compras em 1 clique.”
- ⚙️ Nível Sistema / Técnico: O dicionário do Dev. Define regras, tipos de dados e limites exatos da API que será engolida pelo programador.
- 📐 Nível de Projeto: Diagramas estruturais da UML mostrando onde o clique vira corrente elétrica.
📚 Exemplo: A Tradução dos Níveis
Vamos ver na prática como a mesma ordem soa em níveis diferentes:
👤 A Ordem do Diretor Médico (Requisito de Usuário): “A minha clínica precisa de um relatório todo fim de mês que some quanto nós gastamos com Dipirona e avise se estiver acabando.”
⚙️ O Documento do Computador (Requisito de Sistema Técnico):
- Toda sexta-feira última do mês corrente (CRON Job às 23:59), o microserviço de BI executará a rotina “Soma_Custo_Medicacao”.
- Um Payload JSON com
total_gastodeverá ser enviado via AWS SES para a diretoria caso a tabela deEstoqueacusequantidade < 50unidades para oID_100 (Dipirona).
🗣️ QUIZ VERBAL: O Perigo da Ambiguidade
Pergunta: O dono do supermercado pediu que o novo sistema de caixas tivesse “Telas amigáveis” para os caixas idosos. O Desenvolvedor construiu uma interface hiper-minimalista igual ao “Modo Escuro (Dark Mode)” do Instagram para iPhone. Ao colocar no supermercado iluminado por neon, os idosos não enxergaram nada.
Quem está errado nessa catástrofe?
✅ RESPOSTA DO QUIZ
Ambos, mas a falha técnica primária é do Analista de Requisitos! ❌
Explicação: O termo “Telas amigáveis” é um adjetivo abstrato e inútil na Engenharia de Software. O que é amigável para você, é hostil para o seu avô. Requisitos não podem dar margem à interpretação ou filosofia artística do programador. O Analista deveria ter traduzido para: “O sistema deverá utilizar fonte Tahoma, tamanho mínimo 24px, contrastando em fundo branco com botões em cor sólida primária (WCAG AAA).” (MENSURÁVEL!)
🧩 Os 3 Pilares: RF, RNF e RD
Todo software na Terra obedece a essa equação imutável de categorias:
[Entradas] -> [Processamento/Leis] -> [Saídas] = Qualidade.
- 🛠️ Requisitos Funcionais (RF): A ação nua e crua. O verbo que executa algo.
- 🛡️ Requisitos Não Funcionais (RNF): A barreira protetora e os limites de qualidade onde o sistema roda.
- 💼 Requisitos de Domínio (RD): As leis inegociáveis do Universo ou Governo onde o App está sendo lançado.
Vamos mergulhá-los em código!
🛠️ 1. Requisitos Funcionais (RF) na Veia
São os comportamentos. As “Funcionalidades”. Se pedissem para descrevê-los para o app do MercadoLivre:
[RF001]O Sistema deverá permitir o Cadastro do Vendedor com CNPJ (Entrada).[RF002]O Sistema deverá calcular o valor total do carrinho (Processamento/Soma).[RF003]O Sistema deverá emitir o Cupom Fiscal Eletrônico ao término (Saída).[RF004]O Comprador deverá conseguir excluir um item (Ação).
🛡️ 2. Requisitos Não Funcionais (RNF)
O cliente não liga pra isso fisicamente… Até o momento que dá errado! Eles garantem Performance, Segurança e Regulamentos de Hardware.
O “Ótimo RNF” contém MÉTTRICAS, NÚMEROS e TEMPO.
[RNF-Segurança]A senha deve ser hasheada (escondida) usando Bcrypt antes de ir ao banco.[RNF-Desempenho]A listagem de 10.000 produtos deve demorar menos de 3.5 segundos via rede 4G.[RNF-Legislação]O banco de dados primário deve estar fisicamente em servidores localizados Dentro do Território Brasileiro (Exigência de compliance do BCB).
🗣️ QUIZ VERBAL: O Caçador de Elementos
Pergunta: Leia a frase do escopo assinada pelo cliente abaixo: “O novo App do Uber Eats deve permitir que o usuário chame um Entregador Motorizado. Porém, essa chamada NUNCA pode ficar fora do ar por mais de 5 curtos minutos por ano.”
Desafie-se a separar as categorias: Identifique exatamente qual pedaço de texto é Funcional (RF) e qual é Não Funcional (RNF).
✅ RESPOSTA DO QUIZ
🎯 RF (O Verbo): “O App deve permitir chamar um Entregador…” (A funcionalidade pura de requisitar).
⚡ RNF (A Qualidade Crítica): “…NUNCA ficar fora do ar por mais de 5 minutos por ano” (Isso é uma métrica absurda e agressiva de Disponibilidade de Servidor que forçará o arquiteto a comprar 5 servidores espelhos milionários na AWS para garantir que não vai cair!).
💼 3. Requisitos de Domínio (RD)
Estão acima dos desenvolvedores e da vontade da diretoria. Vêm do ambiente (Leis Fiscais, Regras Químicas, Física do Avião, Leis Trabalhistas).
Exemplos Intransponíveis (Leis da Natureza ou Governo):
[RD-Medicina]A dose letal de adrenalina jamais deverá ser permitida, o sistema deve travar o cálculo em0.5mg/kg(Regra Médica Imutável).[RD-Bancário]O cálculo de juros de cheque especial usará a fórmula Base360 com Spread capitalizado (Regra BACEN Financeira).
Se a empresa errar o RNF, fica lenta. Se errar o RD, o dono vai preso!
📝 BDD: Como a Gestão Ágil descreve isso hoje?
Em ambientes Ágeis modernos (Scrum/XP), abandonamos o Documento do Word chato e escrevemos Requisitos de forma fluida usando Histórias de Usuário e Gherkin (BDD - Behavior-Driven Development):
CENÁRIO: Cliente realiza saque com sucesso
DADO QUE: O cliente 'João' tem R$ 500 na conta (Contexto)
E: Ele inseriu o cartão corretamente (Pré-condição)
QUANDO: Ele solicitar o saque de R$ 100 reais (A Ação/Requisito Funcional)
ENTÃO: O sistema deve entregar R$ 100 reais (A Saída Esperada)
E: O novo saldo de 'João' deve virar R$ 400 reais (Regra de Domínio)(Lemos como humanos, e os testes lá no Java conseguem “Engolir” esse texto acima para testar automaticamente os algoritmos! Espetacular).
📐 Matemática do RNF: SLA e Disponibilidade
Lembre do quiz anterior: “NUNCA fora do ar por mais de 5 minutos por ano”. Em contratos enterprise, isso é formalizado como SLA (Service Level Agreement). Veja os noves famosos:
| SLA | Downtime/Ano | Custo de Infra | |-----||| | | ~87 horas | Barato | | | ~8,7 horas | Moderado | | | ~52 minutos | Caro (Multi-AZ) | | | ~5 minutos | Altíssimo (NASA) |
A fórmula do downtime máximo permitido por ano:
Para :
🎯 Síntese da Aula 04
No fim do dia, o sucesso ou a falência colossal (milhões perdidos na fogueira) de um projeto de software se resume primeiramente a: “Conseguimos entender exatamente a intenção de quem pediu?”
- Nunca presuma que o cliente entende os jargões.
- Divida os requisitos entre as ações visíveis e as regras matemáticas/tecnológicas ocultas do mundo real.
- Não fuja para o código antes de consolidar essas bases. O Código resolve o Requisito, não o contrário.