Requisito funcional

Em engenharia de software, um requisito funcional define uma função de um sistema de software ou seu componente. O requisito funcional representa o que o software faz, em termos de tarefas e serviços.[1] Uma função é descrita como um conjunto de entradas, seu comportamento e as saídas. Os requisitos funcionais podem ser cálculos, detalhes técnicos, manipulação de dados e de processamento e outras funcionalidades específicas que definem o que um sistema, idealmente, será capaz de realizar. Requisitos comportamentais, que descrevem todos os casos em que o sistema utiliza os requisitos funcionais, são extraídos dos casos de uso. Também, os requisitos funcionais são suportados por requisitos não funcionais (também conhecidos como requisitos de qualidade), que impõem restrições sobre o projeto ou execução (tais como requisitos de desempenho, segurança ou confiabilidade). O plano para a implementação dos requisitos funcionais é detalhado no projeto do sistema. Já o plano para a implementação de requisitos não funcionais é detalhado na arquitetura do sistema.

Tal como definido na engenharia de requisitos, os requisitos funcionais especificam resultados particulares de um sistema. Isto deve ser contrastado com requisitos não funcionais, os quais especificam características gerais, tais como custo e confiabilidade. Os requisitos funcionais fazem parte da arquitetura do aplicativo de um sistema, enquanto os requisitos não funcionais denotam a arquitetura técnica de um sistema.

Em alguns casos, um analista de requisitos gera casos de uso após a coleta e validação de um conjunto de requisitos funcionais. A hierarquia de requisitos funcionais é: usuário / pedido das partes interessadas - característica -> requisitos funcionais/requisitos não funcionais/regras de negócio -> caso de uso. Cada caso de uso ilustra cenários de comportamento através de um ou mais requisitos funcionais. Muitas vezes, porém, um analista começará por evocar um conjunto de casos de uso, a partir do qual o analista pode derivar os requisitos funcionais, que devem ser implementados para permitir que um usuário possa realizar cada caso de uso.

São qualidades dos requisitos funcionais:

  • Priority (Prioridade): No desenvolvimento ágil, é muito importante saber a prioridade do requisito, devido ela ser usada no plano de iterações. Em cada iteração, os requisitos abertos com maior prioridade são detalhados e desenvolvidos. Nesse sentido, o desenvolvimento ágil garante que o cliente receba o que ele mais precisa em um dado momento.
  • INVEST - Independent, Negotiable, Valuable, Estimable, Small and Testable: User stories devem ser Independentes, Negociáveis, Valoráveis, Estimáveis, Pequenos e Testáveis.
  • Understandability: Requisitos devem ser escritos na linguagem do cliente.
  • Forward traceable: Esse requisito garante a rastreabilidade entre código fonte e casos de testes. Assim, se alteramos um caso de teste, saberemos em qual código será refletido - e vice-versa.[2]


Referências editar

  • ROMAN, G.-C. A taxonomy of current issues in requirements engineering, Computer, Abril de 1985, volume: 18 Issue: 4 pp 14 - 23, ISSN: 0018-9162
  • R. T. YEH, Requirements Analysis- A Management Perspective, Proc. COMPSAC '82, Nov. 1982, pp. 410-416
  • PRESMMAN,R.S. Engenharia de Software 6a.edição, Editora McGraw-Hill,2006, ISBN: 8586804576
  • SOMMERVILLE,I. Engenharia de Software, 8a. Edição,Editora: Addison-Wesley,2007,ISBN: 9788588639287
  1. Vazquez, Carlos; Simões, Guilherme (2016). Engenharia de Requisitos: Software Orientado ao Negócio. [S.l.]: Brasport 
  2. «Critérios de Qualidade para Requisitos Ágeis». Cloud of Metrics. 5 de março de 2018. Consultado em 3 de Julho de 2019