Requisitos Funcionais em Engenharia de Software
Pontos principais
- Requisitos funcionais definem o comportamento do sistema entre entradas e saídas.
- Diferenciam-se dos requisitos não funcionais por focarem no 'o que' o sistema faz, em vez de 'como' ele opera (qualidade).
- A documentação de requisitos funcionais é essencial para a definição da arquitetura da aplicação e a criação de casos de uso.
Na engenharia de software e na engenharia de sistemas, um requisito funcional define a função de um sistema ou de um de seus componentes. Uma função é descrita como um resumo, especificação ou declaração do comportamento do sistema, estabelecendo a relação entre as entradas (inputs) e as saídas (outputs).
Definição e Escopo
Os requisitos funcionais detalham o que o sistema deve fazer para atender às necessidades do usuário. Eles podem envolver cálculos, manipulação e processamento de dados, detalhes técnicos e outras funcionalidades específicas que determinam os objetivos que o sistema deve alcançar. Enquanto os requisitos funcionais descrevem a funcionalidade, os requisitos comportamentais descrevem os cenários em que essas funções são utilizadas, sendo geralmente capturados por meio de casos de uso.
Diferença entre Requisitos Funcionais e Não Funcionais
É fundamental distinguir os requisitos funcionais dos requisitos não funcionais (também conhecidos como requisitos de qualidade). A principal diferença reside na natureza da especificação:
- Requisitos Funcionais: Especificam resultados particulares e comportamentos. Geralmente são expressos na forma: "o sistema deve fazer [requisito]". Eles orientam a arquitetura da aplicação.
- Requisitos Não Funcionais: Impõem restrições ao design ou à implementação, focando em características globais como desempenho, segurança, confiabilidade e custo. Geralmente são expressos na forma: "o sistema deve ser [requisito]". Eles orientam a arquitetura técnica do sistema.
Processo de Elicitação e Documentação
A coleta de requisitos funcionais geralmente segue um fluxo hierárquico: solicitação do usuário/stakeholder → análise → caso de uso → incorporação. Os stakeholders fazem solicitações, e os engenheiros de sistemas analisam essas demandas por meio de discussões e observações. Para validar esses requisitos, são construídos modelos como diagramas de entidade-relacionamento e casos de uso.
Em muitos fluxos de trabalho, o analista começa pela elicitação de casos de uso, derivando a partir deles os requisitos funcionais necessários para que o usuário complete cada tarefa. Cada caso de uso ilustra cenários comportamentais que são sustentados por um ou mais requisitos funcionais.
Estrutura de uma Especificação de Requisito
Uma especificação típica de um requisito funcional deve conter os seguintes elementos para garantir a rastreabilidade e a clareza:
- Identificador único: Nome e número para referência.
- Resumo: Uma descrição breve da funcionalidade.
- Justificativa (Rationale): A explicação do porquê aquele requisito é necessário.
- Descrição do comportamento: O detalhamento da função exigida, que deve ser claro e legível.
- Referências: Vínculos com casos de uso ou outros requisitos relacionados.
O comportamento descrito pode originar-se de regras de negócio organizacionais ou ser descoberto durante sessões de elicitação com usuários e especialistas. Caso um detalhe não esteja disponível no momento da documentação, o analista pode criar um requisito provisório (placeholder) para ser detalhado posteriormente.
Perguntas frequentes
O que é um requisito funcional?
É uma especificação que define uma função ou comportamento específico que o sistema deve executar, descrevendo a relação entre as entradas e as saídas.
Qual a diferença entre requisito funcional e não funcional?
O requisito funcional descreve o que o sistema deve fazer (funcionalidade), enquanto o requisito não funcional descreve como o sistema deve ser (características de qualidade, como desempenho e segurança).
Como os casos de uso se relacionam com os requisitos funcionais?
Casos de uso descrevem cenários de interação do usuário com o sistema, e cada caso de uso é composto por um ou mais requisitos funcionais que permitem a execução daquela tarefa.