Você está visualizando atualmente Requisitos Funcionais e Não Funcionais

Requisitos Funcionais e Não Funcionais

Os requisitos funcionais e não funcionais podem ser seu melhor aliado ou seu pior inimigo ao desenvolver um software. Cada requisito representa um desejo do dono do software (Product Owner) e que precisa ser codificado, testado e mantido em funcionamento. 

Nesse artigo você vai compreender o que são requisitos de um software e como diferenciá-los. Você irá aprender quais são as principais características de cada um deles (funcionais e não-funcionais) e também entender qual a importância deles para o seu projeto de software. 

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

De acordo com a norma IEEE-90, requisitos são:

1. Uma capacidade que um usuário necessita para resolver um problema ou atingir um objetivo;

2. Uma capacidade que deve ser atendida ou possuída por um sistema ou componente de um sistema para satisfazer um contrato, padrão, especificação ou outro documento formalmente imposto;

3. O conjunto de todos os requisitos que formam a base para o desenvolvimento subsequente de um software ou componentes de um software.

Resumindo, escrever os requisitos é traduzir tudo que seu cliente deseja em artefatos palpáveis, para que posteriormente possam ser apresentados ao time de desenvolvimento. Por exemplo, quando um dono de confeitaria deseja ter um sistema para controlar suas vendas e estoque, o engenheiro de software deve entrevistá-lo e compreender quais são suas reais necessidades e traduzir tudo isso em requisitos. 

 A pergunta é: isso é uma tarefa simples?

A resposta é: NÃO.

Podemos afirmar com tranquilidade que não é uma tarefa simples pelo simples fato de estarmos lidando com seres humanos, portanto, tudo pode ser muito subjetivo e incerto. Um simples padeiro pode não compreender nada sobre gestão de estoque, compras, vendas, informática, porém, esse mesmo padeiro sabe muito sobre como fazer pães. Portanto, cabe aos engenheiros de software capturar as reais necessidades do cliente e produzir requisitos que irão realmente satisfazê-lo.

Requisitos funcionais

Nada mais é, como o próprio nome já diz, as funcionalidades do sistema, são as funções que o sistema/aplicativo devem possuir para atender o negócio e suas regras. Esses requisitos são os mais palpáveis dentro do desenvolvimento de software e geralmente representam grande parte dos requisitos de software.

Veja alguns exemplos:

  • Requisito Funcional RF01 – Validar campo de e-mail;
  • Requisito Funcional RF02 – Abrir a página inicial do usuário após o login.
 

Requisitos não-funcionais

Os requisitos não funcionais (RNF) são aqueles que não interferem diretamente no desenvolvimento do sistema propriamente dito. Portanto, os RNFs não são requisitos que possuem regras de negócios, em vez disso, os RNFs são requisitos que estabelecem como o sistema se comportará em determinadas situações. Em outras palavras, apesar de não interferirem em suas funcionalidades básicas, são necessidades que podem impactar no objetivo final do software se não forem contempladas em tempo de análise e desenvolvimento do projeto. Sendo assim, são requisitos que se relacionam com a qualidade do software.
 
 
 
 
Imagine, por exemplo, bilhões de usuários consumindo o serviço do WhatsApp, quando repentinamente, ele para de funcionar por alguns dias. Isso já aconteceu algumas vezes e geralmente se torna até notícia na internet. Pense um pouco: manter o serviço em funcionamento no mundo todo é um requisito funcional ou não-funcional?
 
Geralmente as coisas que você não vê o software fazendo, são requisitos não funcionais. Por exemplo: ser de fácil utilização, possuir um fluxo de interfaces agradável, possuir cores sugestivas etc. 
 
 

Conclusão

Como desenvolvedores de software, geralmente temos a tendência de nos atentar mais aos requisitos funcionais. Isso é perfeitamente natural, no entanto, é preciso atenção ao capturar todos os requisitos, visto que um pequeno deslize pode ser o ponto chave para o sucesso ou fracasso de seu software.

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e a forma com que ela pode transformar vidas!

Deixe um comentário

13 − 2 =