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.