Requisitos Não Funcionais (RNF)
Tags: requisito, software, softwareeng
Published: 2022-03-04 11:56:17

Durante o desenvolvimento do software nos deparamos com a necessidade de garantir a qualidade do sistema.  Ao chegar nesta fase é importante é focar nas propriedades que contribuem para o bom funcionamento do Software.
Requisitos Não Funcionais, também são chamados de Atributos de Qualidade do Sistema, definem como o software será entregue em termos de usabilidade, confiabilidade, segurança, disponibilidade, manutenção e tecnologias envolvidas.


## Qual a origem dos Requisitos Não Funcionais?

Os RNF surgem das necessidades dos usuários e na maioria das vezes são difíceis de atingir.  Inicialmente os desenvolvedores podem encontrar dificuldades ao garantir a implementação de todos os RNF, porque muitos dos problemas com os requisitos são descobertos na fase implantação do software.
Na medida que software cresce em termos de usuários e de funcionalidades cresce torna-se mais difícil atingir a perfeição desses requisitos.


## Como analisar os Requisitos Não Funcionais?

Há várias perguntas que os RNF devem responder de modo a confrontar as funcionalidades do Software, tais como:
- É Rápido?
- Fácil de usar, tem uma interface clara?
- Quanto tempo demora a para exceutar uma operação?
- Como os dados dos usuários são protegidos?
- É possível integrar com outros sitemas?
- Quantos MB consome a memória RAM?
- Em quais sistemas operacionais pode ser implantado?
- Funciona em todos os navegadores?
- Como performa quando o nº de usuários crescer(ex: 1000 usuários)?
- O que acontece quando tem vários acessos simultâneos?


**Observação:** Os RNF são críticos porque a ausência deles podem dificultar a utilização do sistema. Exemplo de situações:
- Se um sistema bancário não cumprir seus requisitos de confiabilidade, o banco pode perder clientes; 
- Se o chat (em tempo real) de umarede social não atender aos requisitos de desempenho perderá usuários; 
- Se um jogo destinado a crianças não tiver boa interface gráfica com funcionalidades acessíveis, facilmente será descartado.


## Como Garantir a implementação dos RNF?

Para cada software os requisitos não funcionais podem ser pensados de formas diferentes.
A implementação ser garantida em vários níveis, nas quais podemos destacar:
- A nível da Arquitectura do Software: Organização dos componentes, Arquitectura em camadas, monolítica, microserviços, servidor de busca, serviços de logs; 
- A nível da implementação (codificação): Mecanismo de autenticação de usuários, desenho da interface gráfica, o Banco de Dados, linguagem de programação  escolhido.
- A nível da implantação (deployment): Servidores, Containers, Sistemas Operativos, links de redundância, integração com outros sistemas ou recuperação de dados.

Exemplo: Neste exemplo vamos descrever aleatoriamente alguns requisitos não funcionais presentes em muitos sitemas e vamos descrever detalhamente a autenticação de usuários.


**Estrutura dos Requisitos**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ee6lp9lzcg7h7fgulcj.jpg)

**Tabela de Requisitos 1**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wkg9730xy50gmucwtc8k.jpg)

**Tabela de Requisitos 2**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/680211uq4z8j2lf8zskj.jpg)

**Descrição da Autenticação**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/43lck6c32a81i67srcy6.jpg)