Engenharia de Requisitos

O que são requisitos funcionais e requisitos não funcionais?

Qual a diferença, e o que são Requisitos funcionais e Requisitos Não funcionais?

Na engenhariade software, maisprecisamente na engenharia de requisitos, podemos definir como um requisito toda solicitação (visão macro do requisito ou simplesmente requisitos macro), necessidade, funcionalidade ou característica de um sistema.

O processo de levantamento de requisitos de software é responsável por identificar todas essas necessidades e funcionalidades, além de documentá-las.


Está querendo mais detalhes sobre a definição de requisitos de software? Ou então quer conhecer melhor as técnicas de levantamento de requisitos?

Agora que você já sabe o que são requisitos de software e quais são as melhores técnicas para levantá-los, precisamos esclarecer que existem dois tipos de requisitos: “Requisitos Funcionais” e “Requisitos Não Funcionais”.


Ambos os tipos expressam em grande linha uma necessidade, característica ou funcionalidade de um software, porém em dois universos diferentes. Vamos entender melhor a diferença entre um requisito funcional e um requisito não funcional.

O que é um Requisito funcional?

Os requisitos funcionais são todas as necessidades, características ou funcionalidades esperadas em um processo que podem ser atendidos pelo software.De forma geral, um requisito funcional expressa uma ação que deve ser realizada através do sistema.

Um exemplo clássico e simples de requisito funcional é a funcionalidade de “MANTER USUÁRIO”. O requisito que detalha a funcionalidade “manter usuário” engloba uma série de outros requisitos menores, por vezes chamados de “features“, como no exemplo abaixo:

Detalhamento descritivo estrutural de um requisito funcional. Durante a documentação de um requisito funcional de software, suas características devem ser detalhadas individualmente.
Detalhamento descritivo estrutural de um requisito funcional. Durante a documentação de um requisito funcional de software, suas características devem ser detalhadas individualmente.

O requisito principal “manter usuário” é responsável por toda a manutenção do cadastro usuários, por isso a utilização do verbo “manter.

Dentro desta funcionalidade macro, são incluídas as funcionalidades de cadastro de usuário, alteração de usuário e deleção de usuário.

Esses três requisitos são requisitos NÃO FUNCIONAIS, e compõem o requisito principal de manutenção de usuário.

Características de um Requisito funcional

Mas por que eles são requisitos funcionais? A categorização dos requisitos citados como requisitos funcionais se deve ao fato de que todos eles são funcionalidades atendidas através de uma ação do software ou pelo software, ou seja, o usuário insere informação a respeito da ação que deseja tomar, e o software executa tal ação.

Principais tipos de requisitos não funcionais: desempenho, segurança, disponibilidade, interoperabilidade.
Principais tipos de requisitos não funcionais: desempenho, segurança, disponibilidade, interoperabilidade.

Ainda como requisitos funcionais, podemos citar algumas funcionalidades muito comuns durante o processo de análise e levantamento de requisitos em um projeto de software:

Exemplo de requisitos funcionais comuns em software ERP e de gestão contábil. O detalhamento e divisão dos requisitos por grupo de pertinência é uma técnica muito comum durante esta fase.
Exemplos de requisitos funcionais.
Exemplo de requisitos funcionais comuns em software ERP e de gestão contábil. O detalhamento e divisão dos requisitos por grupo de pertinência é uma técnica muito comum durante esta fase.

Esses cinco requisitos que citamos acima são muito comuns em qualquer software financeiro, fiscal ou contábil.

Todos eles expressão uma funcionalidade que o sistema deve executar em decorrência de uma solicitação ou ação do usuário, assim podemos facilmente identificá-los como requisitos funcionais.

Devemos porém lembrar, de que um requisito funcional pode também ser executado como sequência da execução de um requisito anterior, que incluí tal requisito em sua execução.

QUANDO o sistema executa um requisito funcional?

Para ficar claro esta característica dos requisitos funcionais basta pegar como exemplo o caso de um sistema de vendas online.

Imagine que tal sistema possui um requisito chamado “FECHAR VENDA”, durante sua execução ele inclui outros dois requisitos funcionais – ou features: “EMITIR NF-C” e “ATUALIZAR ESTOQUE”.

requisitos de sistema grafico tipos funcional nao funcional 1
requisitos de sistema gráfico tipos funcional não funcional

A inclusão dos requisitos “emitir nf-c” e “atualizar estoque” significa que durante o a finalização processo (ou execução, segundo as características do requisito) descrito pelo requisito funcional “FECHAR VENDA”.

É obrigatória, ou seja, ao executar o “fechar venda”, o próprio sistema solicita a execução do “emitir nfc-e” e “atualizar estoque”. Este relacionamento entre requisitos é chamado de inclusão – include, em inglês, e é muito comum em diagramas de caso de uso UML.

O que é um REQUISITO NÃO FUNCIONAL?

Os requisitos funcionais por definição, e conforme explicamos, é uma característica, funcionalidade ou necessidade que o sistema deve contemplar, ou seja, um requisito funcional é, ”tudo aquilo que o sistema DEVE fazer”.

Exemplos de requisitos funcionais de um software e de requisitos não funcionais.

Já um requisito NÃO funcional, por sua vez pode ser definido como “de qual maneira” o sistema deve fazer. Por outro lado pode parecer muito vago e com pouco sentido, mas é muito simples assimilar o conceito. Uma forma simples de entender o que é um requisito funcional é ter por base que todo requisito não funcional deve expressar uma premissa ou restrição do sistema.

Dessa forma, requisitos não funcionais devem sempre ser mensuráveis, ou seja, deve ser possível verificar se ele está ou não sendo atendido pelo software.

Exemplo de um REQUISITO NÃO FUNCIONAL

Vamos dar alguns clássicos e básicos exemplos de requisitos NÃO funcionais de software, que são comuns durante o levantamento de requisitos de projeto de desenvolvimento:

    • O sistema deve ser multiplataforma – Windows, Linux e macOS
    • O desenvolvimento deve ser em linguagem C++;
    • O programa deve funcionar offline;
    • O sistema deve respeitar o tempo máximo de 160 segundos durante processamentos;

Os quatro requisitos acima citados, são requisitos NÃO FUNCIONAIS, pois eles indicam condições ou então características de COMO será executada determinada ação pelo sistema.

De forma simples para esclarecermos sem deixar dúvidas para trás, a diferença entre um requisito funcional e um não funcional:

Um requisito funcional é “O QUE” o sistema deve fazer
um requisito não funcional é “COMO” o sistema deve fazer.

Tinha de Dilbert: A definição e o entendimento do escopo de negócio e dos requisitos de software nem sempre são entendidos ou respeitados
Tinha de Dilbert: A definição e o entendimento do escopo de negócio e dos requisitos de software nem sempre são entendidos ou respeitados
O que NÃO é um REQUISITO NÃO FUNCIONAL!

Pelo fato da distinção entre requisitos funcionais e não funcionais parecer subjetiva, é comum encontrar documentos de levantamento de requisitos de software onde o analista indicou de forma equivocada como requisito não funcional uma condição não mensurável ou não verificável.

Logo, deve-se tomar muito cuidado ao descrever requisitos não funcionais, lembre-se sempre que um requisito não funcional deve ser SEMPRE verificável, caso contrário ele não pode ser interpretado como tal.

Exemplo: NÃO SÃO “requisitos não funcionais”:

    • O sistema deve ser rápido;
    • Não deve corromper dados;
    • O programa deve ser seguro;

Esses três requisitos citados acima, NÃO podem ser considerados como requisitos não funcionais. O motivo é o simples, visto que nenhum deles é passível de verificação, ou seja, nenhum desses requisitos podem ser medidos, atestados ou mensurados para verificar sua conformidade.

  • Mas, o que significa ser rápido, o que é um sistema rápido? A velocidade de um sistema é medida com qual “régua”, com a do desenvolvedor ou com a do testador?
  • Afinal o que define se o sistema é seguro, quais são os critérios de segurança, e se existirem tais critérios, de quem são?
  • Em síntese, como pode um sistema atestar que ele não permite a corrupção de seus dados, como seria possível verificar essa capacidade do sistema antes mesmo que um incidente com os dados aconteça?

Para não errar nunca na hora de categorizar um requisito como funcional ou não funcional basta responder a duas perguntas simples:

  1. A característica é sobre O QUE o sistema fará, ou COMO o sistema fará?
  2. Posso verificar se este requisito não funcional está sendo atendido ou respeitado?

São duas perguntas muito simples. Mas à primeira vista, pode ser que que pareça idiota, porém mas acredite, não são. Muitos analistas de requisitos comentem erros fundamentais durante o levantamento e especificação dos requisitos de um sistema.

Está querendo mais detalhes sobre a definição de requisitos de software? Ou então quer conhecer melhor as técnicas de levantamento de requisitos?

Francilvio Alff

Chico Alff é o nome da persona de batalha de Francilvio Roberto Alff. Paranaense apaixonado por São Paulo, possui formação em Engenharia de Software, Análise e Desenvolvimento de Sistemas para Internet, iniciou também uma jornada acadêmica em História e Língua italiana, aventura essa que não foi concluída - ainda! Atualmente é acadêmico do curso de Engenharia Civil - Como é possível combinar a paixão por Computadores com a Divina Comédia e principalmente tijolos... por TIJOLOS!!! Frequentou os bancos acadêmicos tanto no Brasil quando na Itália, precisamente na Università degli Studi di Verona. Trabalha com  desenvolvimento de software desde 2010, tendo lançado âncora no mar da Análise de Requisitos, Análise de Negócios e Gerenciamento de Projetos, com experiência em projetos para a administração pública, sistemas de ERP, contábil e fiscal. Da mesma forma como um malabarista, tenta milagrosamente manter o portal www.AnálisedeRequisotos.com.br como prova de sua paixão pelo mundo da engenharia de software.

Artigos relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Botão Voltar ao topo
Fechar