Requisitos funcionais
Um requisito fundamental define uma função de um software
ou parte dele. Ele é o conjunto de entradas, seu comportamento e sua
saída, ou seja, envolve cálculos, lógicas de trabalho, manipulação e
processamento de dados, entre outros. Dentro dos requisitos funcionais
também encontram-se a arquitetura do aplicativo, diferentemente da
arquitetura técnica, que pertence aos requisitos não funcionais.
Muitos autores ainda dividem os requisitos funcionais em
três: evidente, escondida e friso. Requisitos evidentes é quando o
usuário final do sistema está ciente do que está sendo executado.
Escondida é quando uma função está sendo feita, mas é invisível ao
usuário. Além das duas, ainda há a do tipo friso, quando a execução da
funcionalidade não afeta outras funções do software.
Registrar a venda de produtos em lojas virtuais, calcular o
total de uma venda, capturar a informação de um formulário, fazer o
login com uma identificação e senha e exibir a descrição e preço de um
item são exemplos de requisitos funcionais evidentes. Já dar baixa em um
item, manter um log de vendas feitas e prover a integração com outros
sistemas são requisitos escondidos.
Requisitos não funcionais
Requisitos não funcionais são relacionados ao uso da
aplicação em termos de desempenho, usabilidade, confiabilidade,
disponibilidade, segurança e tecnologias envolvidas. Muitas vezes, os
requisitos não funcionais acabam gerando restrições aos funcionais.
Com o crescente número de usuários vindos de dispositivos
móveis, requisitos não funcionais como portabilidade e mobilidade
tornam-se fundamentais em praticamente todos os sistemas web. Além
deles, a preocupação com interoperabilidade, localização geográfica e
alta disponibilidade também fazem parte do mapeamento e desenvolvimento
de requisitos não funcionais.
Entender profundamente os tipos de requisitos no momento de
definir seu software pode decidir o futuro dele. Por outro lado, também
é preciso ter em mente que o software pode ser beneficiado se houver um
pouco de flexibilidade no seu desenvolvimento. Assim, unindo os
conceitos, é possível ter um sistema de qualidade sem um alto custo de
aquisição. Esse tipo de mapeamento também facilita e otimiza a
manutenção e correção de erros, além de prover uma visão clara do
serviço que está sendo implementado. Não apenas do lado do cliente, mas
também da empresa que está vendendo o software.
fonte: