quinta-feira, 6 de agosto de 2015

Requisitos funcionas e não funcionais

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: