Engenharia de Requisitos
Engenharia de requisitos é a disciplina de descobrir, analisar, documentar, validar e gerenciar o que um sistema de software deve fazer e as restrições sob as quais ele deve operar.
Definition
Engenharia de requisitos é o processo sistemático de elicitar, analisar, especificar, validar e gerenciar os serviços que um sistema de software deve fornecer e as restrições em sua operação e desenvolvimento.
Scope
Esta área abrange a elicitação das necessidades das partes interessadas; a análise e negociação de objetivos conflitantes; a distinção entre requisitos funcionais e não funcionais (qualidade); técnicas de especificação que variam de declarações em linguagem natural a modelos formais; validação por meio de revisão e prototipagem; e o gerenciamento de mudanças de requisitos e rastreabilidade ao longo do ciclo de vida.
Sub-topics
Core questions
- Como as necessidades reais das partes interessadas são descobertas e disambiguadas?
- Como os requisitos funcionais e não funcionais devem ser especificados de forma precisa, mas compreensível?
- Como os requisitos conflitantes são detectados, negociados e resolvidos?
- Como os requisitos são validados e mantidos consistentes à medida que mudam?
Key theories
- Requisitos funcionais versus não funcionais
- Os requisitos são divididos em declarações funcionais do que o sistema deve fazer e restrições não funcionais (qualidade), como desempenho, segurança e usabilidade, que frequentemente abrangem todo o sistema e impulsionam a arquitetura.
- Engenharia de requisitos orientada a objetivos
- Os sistemas são analisados em termos de objetivos das partes interessadas que são refinados em sub-objetivos e operacionalizados em requisitos, fornecendo justificativa, detecção de conflitos e rastreabilidade desde a intenção de alto nível até as funções do sistema.
Clinical relevance
Erros de requisitos estão entre os defeitos mais caros porque se propagam para o projeto e o código; a engenharia de requisitos rigorosa reduz o retrabalho, alinha o software entregue com as necessidades das partes interessadas e fornece a base para testes de aceitação e acordo contratual.
Evidence & guidelines
A ISO/IEC/IEEE 29148 especifica os processos de engenharia de requisitos e o conteúdo das especificações de requisitos, e a área de conhecimento de Requisitos de Software do SWEBOK fornece uma referência de consenso.
History
A engenharia de requisitos evoluiu dos métodos de análise estruturada da década de 1970 para uma subdisciplina reconhecida na década de 1990, marcada por conferências (RE) e periódicos dedicados, o surgimento da modelagem baseada em objetivos e cenários, e uma crescente atenção aos requisitos não funcionais e à negociação com as partes interessadas.
Debates
- Requisitos antecipados versus emergentes
- A prática orientada a planos favorece a especificação completa dos requisitos antes da construção, enquanto a prática ágil trata os requisitos como emergentes e refinados por meio de iteração; a troca depende da volatilidade, das restrições contratuais e do custo da mudança tardia.
Key figures
- Axel van Lamsweerde
- Bashar Nuseibeh
- Steve Easterbrook
- Michael Jackson
Related topics
Seminal works
- vanlamsweerde2009
- nuseibeh2000
- sommerville2015
Frequently asked questions
- Por que os erros de requisitos são tão caros?
- Um requisito mal compreendido ou ausente é frequentemente descoberto apenas tardiamente, depois que o projeto e o código foram construídos sobre ele, então corrigi-lo exige desfazer o trabalho subsequente; estudos empíricos mostram consistentemente que o custo de corrigir um defeito aumenta drasticamente quanto mais tarde ele é encontrado.
- Projetos ágeis fazem engenharia de requisitos?
- Sim, mas de forma diferente. Projetos ágeis elicita, analisam e validam requisitos continuamente por meio de histórias de usuários, refinamento de backlog e feedback frequente, em vez de produzir um grande documento de especificação antecipadamente.