📋 Requisitos de Software (Conceitos Básicos)
Descobrir e documentar o que deve ser construído é a essência da Engenharia de Requisitos.
Sommerville (2011) nota que o termo "requisito" pode variar de uma declaração abstrata de alto nível (uma ideia do cliente num guardanapo) até uma definição técnica formal. Para evitar confusão, separamos o entendimento em duas visões corporativas:
🏛️ Diferentes Perspectivas de Requisitos
| Nível / Perspectiva | Descrição e Aplicação |
|---|---|
| Usuário (Product Owner) | Declarações do negócio. O que a plataforma precisa entregar aos clientes finais. Tradicionais User Stories, sem mencionar tecnologia. Ex: "O aluno deve se matricular na disciplina." |
| Sistema (Desenvolvedores) | Descrições detalhadas da parte técnica. Regras matemáticas, modelos de bancos de dados. Geralmente mapeado no Swagger/OpenAPI em projetos baseados em Nuvem. Ex: "O endpoint /enrollments recebe um JSON e precisa inserir no PostgreSQL." |
[!WARNING] 💡 O Dilema da Codificação: "A parte mais difícil ao construir um sistema de software é decidir o que construir. Nenhuma parte do trabalho afeta tanto o sistema resultante se for feita a coisa errada. Nenhuma outra parte é mais difícil de consertar depois." — Frederick Phillips Brooks Jr. Codificar em Java um requisito mal formulado é o mesmo que dirigir em altíssima velocidade para o precipício errado. Em vez de consertar lógica, no final o time terá que jogar o repositório inteiro fora.