O que é um requisito de software? Como podemos realizar a identificação dos requisitos do sistema?
O que é um requisito de software? Como podemos realizar a identificação dos requisitos do sistema?

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

Na engenharia de software, mais precisamente na engenharia de requisitos, podemos definir como um requisito de software toda solicitação (chamado também de “visão macro do requisito” ou simplesmente “requisitos macro”), necessidade, funcionalidade ou característica de um sistema.

O processo de levantamento de requisitos de software é responsável por identificar todas essas necessidades e demandas, detalhar os requisitos de software necessários para atender tais solicitações, e documentar tecnicamente (utilizando um documento de especificação de requisitos, um grupo cards ou através de diagramas de casos de uso, dependendo da metodologia de desenvolvimento utilizada ) os requisitos identificados..

[divider style=”dashed” top=”20″ bottom=”20″]

Aprenda mais sobre levantamento de requisitos de software e análise de negócios.

Está querendo mais detalhes sobre a definição de requisitos de software? Ou então quer conhecer melhor as técnicas de levantamento de requisitos?

[tie_list type=”lightbulb”]

[/tie_list]

[divider style=”dashed” top=”20″ bottom=”20″]

Agora que você já sabe o que são requisitos de software e quais são as melhores técnicas para levantá-los, precisamos esclarecer que existem dois tipos de requisitos: “Requisitos Funcionais” e “Requisitos Não Funcionais“.

Ambos os tipos expressam em grande linha uma necessidade, característica ou funcionalidade de um software, porém em dois universos diferentes. Vamos entender melhor a diferença entre um requisito funcional e um requisito não funcional.

O que é um Requisito funcional?

Requisitos funcionais são todas as necessidades, características ou funcionalidades esperadas em um processo que podem ser atendidos pelo software.

De forma geral, um requisito funcional expressa uma ação que deve ser realizada através do sistema, ou seja, um requisito funcional é “o que sistema DEVE fazer.

Tabela para entender o que é um requisito funcional.
Tabela para entender o que é um requisito funcional.

Um clássico e simples exemplo de requisito funcional é a funcionalidade “MANTER USUÁRIO” (o verbo “manter” é utilizado na documentação de software para referir-se à uma funcionalidade de cadastro, que contempla a inclusão de um novo item, a alteração de um item, a exclusão de um item além de da leitura de suas informações).

O requisito que detalha a funcionalidade “MANTER USUÁRIO” engloba uma série de outros requisitos menores, por vezes chamados de “features“, como no exemplo abaixo:

Detalhamento descritivo estrutural de um requisito funcional. Durante a documentação de um requisito funcional de software, suas características devem ser detalhadas individualmente.
Detalhamento descritivo estrutural de um requisito funcional. Durante a documentação de um requisito funcional de software, suas características devem ser detalhadas individualmente

O requisito principal “manter usuário” é responsável por toda a manutenção do cadastro usuários, por isso a utilização do verbo “manter.

Dentro desta funcionalidade macro, são incluídas as funcionalidades de cadastro de usuário, alteração de usuário e deleção de usuário.

Esses três requisitos são requisitos NÃO FUNCIONAIS, e compõem o requisito principal de manutenção de usuário.

Quais as características de um requisito funcional?

Mas afinal, por que eles são chamados de requisitos funcionais? A categorização dos requisitos citados como requisitos funcionais se deve ao fato de que todos eles são funcionalidades atendidas através de uma ação do software ou comportamento específico so sistema.

Podemos dizer que é considerado um requisito funcional, todo cenário onde o usuário informa um dado, ou um sistema terceiro realiza uma solicitação qualquer durante uma interação com o sistema, que então, responde com determinada ação correspondente..

Principais tipos de requisitos não funcionais: desempenho, segurança, disponibilidade, interoperabilidade.
Principais tipos de requisitos não funcionais: desempenho, segurança, disponibilidade, interoperabilidade.

Ainda como requisitos funcionais, podemos citar algumas funcionalidades muito comuns durante o processo de análise e levantamento de requisitos em um projeto de software:

Exemplo de requisitos funcionais comuns em software ERP e de gestão contábil. O detalhamento e divisão dos requisitos por grupo de pertinência é uma técnica muito comum durante esta fase.
Exemplo de requisitos funcionais comuns em software ERP e de gestão contábil. O detalhamento e divisão dos requisitos por grupo de pertinência é uma técnica muito comum durante esta fase.
Exemplo de requisitos funcionais comuns em software ERP e de gestão contábil. O detalhamento e divisão dos requisitos por grupo de pertinência é uma técnica muito comum durante esta fase.

Esses cinco requisitos que citamos acima são muito comuns em sistemas de controle financeiro, fiscal ou contábil. Todos eles representam uma funcionalidade que o sistema deve executar em decorrência de uma solicitação ou ação do usuário, assim podemos facilmente identificá-los como requisitos funcionais.

Devemos porém lembrar, de que um requisito funcional pode também ser executado como sequência da execução de um requisito anterior, que incluí tal requisito em sua execução.

Quando o sistema executa um requisito funcional?

Para ficar claro esta característica dos requisitos funcionais basta pegar como exemplo o caso de um sistema de vendas online.

Imagine que um sistema possua um requisito chamado “FECHAR VENDA”, durante sua execução ele inclui outros dois requisitos funcionais – ou features: “EMITIR NF-C” e “ATUALIZAR ESTOQUE”.

Requisitos de software estão diretamente ligados e relacionados com as regras de negócio. Existem dois tipos de requisitos de software: os requisito funcionais e os requisitos não funcionais.
Requisitos de software estão diretamente ligados e relacionados com as regras de negócio. Existem dois tipos de requisitos de software: os requisito funcionais e os requisitos não funcionais.

A inclusão dos requisitos “emitir nf-c” e “atualizar estoque” significa que durante o a finalização processo (ou execução, segundo as características do requisito) descrito pelo requisito funcional “FECHAR VENDA”.

É obrigatória, ou seja, ao executar o “fechar venda”, o próprio sistema solicita a execução do “emitir nfc-e” e “atualizar estoque”. Este relacionamento entre requisitos é chamado de inclusãoinclude, em inglês, e é muito comum em diagramas de caso de uso UML.

O que é um requisito não funcional?

Os requisitos funcionais por definição, e conforme explicamos, é uma característica, funcionalidade ou necessidade que o sistema deve contemplar, ou seja, um requisito funcional é, ‘tudo aquilo que o sistema “DEVE FAZER”.

Exemplos de requisitos funcionais de um software e de requisitos não funcionais.
Exemplos de requisitos funcionais de um software e de requisitos não funcionais.

Já um requisito NÃO FUNCIONAL, por sua vez pode ser definido como “de qual maneira” o sistema deve fazer. Por outro lado pode parecer muito vago e com pouco sentido, mas é muito simples assimilar o conceito. Uma forma simples de entender o que é um requisito funcional é ter por base que todo requisito não funcional deve expressar uma premissa ou restrição do sistema.

Dessa forma, requisitos não funcionais devem sempre ser mensuráveis, ou seja, deve ser possível verificar se ele está ou não sendo atendido pelo software.

Exemplos de um requisito não funcional.

Vamos dar alguns clássicos e básicos exemplos de requisitos não funcionais de software, que são comuns durante o levantamento de requisitos de projeto de desenvolvimento:

[tie_list type=”lightbulb”]

  • O sistema deve ser multiplataforma – Windows, Linux e macOS
  • O desenvolvimento deve ser em linguagem C++;
  • O programa deve funcionar offline;
  • O sistema deve respeitar o tempo máximo de 160 segundos durante processamentos;

[/tie_list]

Os quatro requisitos acima citados, são requisitos NÃO FUNCIONAIS, pois eles indicam condições ou então características de COMO será executada determinada ação pelo sistema.

De forma simples para esclarecermos sem deixar dúvidas para trás, a diferença entre um requisito funcional e um não funcional:

Um REQUISITO FUNCIONAL é “O QUE” o sistema deve fazer
Um REQUISITO NÃO FUNCIONAL é “COMO” o sistema deve fazer. Chico Alff

[divider style=”dashed” top=”20″ bottom=”20″]

O que NÃO é um requisito não funcional?

Pelo fato da distinção entre requisitos funcionais e não funcionais parecer subjetiva, é comum encontrar documentos de levantamento de requisitos de software onde o analista indicou de forma equivocada como requisito não funcional uma condição não mensurável ou não verificável.

Tinha de Dilbert: A definição e o entendimento do escopo de negócio e dos requisitos de software nem sempre são entendidos ou respeitados
Tirinha de Dilbert: A definição e o entendimento do escopo de negócio e dos requisitos de software nem sempre são entendidos ou respeitados

Logo, deve-se tomar muito cuidado ao descrever requisitos não funcionais, e realizar sua categorização. É necessário lembrar que um requisito não funcional deve ser SEMPRE verificável, caso contrário ele não pode ser interpretado como tal.

Exemplos que NÃO SÃO requisitos não funcionais.

Esses três requisitos abaixo, NÃO podem ser considerados como requisitos não funcionais. O motivo é  simples, visto que nenhum deles é passível de verificação.  Nenhum desses requisitos podem ser medidos, aferidos ou mensurados para verificar sua conformidade.

[tie_list type=”checklist”]

  • O sistema deve ser rápido;
  • Não deve corromper dados;
  • O programa deve ser seguro;

[/tie_list]

Durante o processo de levantamento de requisitos e sua documentação, o analista deve sempre questionar a coerência dos atributos dos requisitos não funcionais, como no caso acima, as perguntas a serem feitas para garantir a qualidade dos requisitos seriam:

[tie_list type=”checklist”]

  • O que significa ser rápido, o que é um sistema rápido? A velocidade de um sistema é medida com qual “régua”, com a do desenvolvedor ou com a do testador?
  • Como pode ser verificada a integridade de seus dados, como verificar essa capacidade do sistema antes mesmo da ocorrência de um incidente com os dados aconteça?
  • O que define se o sistema é seguro, quais são os critérios de segurança, e se existirem tais critérios, de quem são?

[/tie_list]

As duas perguntas que todo analista deve fazer sobre cada requisito não funcional.

Para não errar nunca na hora de categorizar um requisito como funcional ou não funcional basta responder suas perguntas obrigatórias para garantir a coerência da da categorização dos requisitos

  1. A característica é sobre O QUE o sistema fará, ou COMO o sistema fará?
  2. É possível verificar se requisito não funcional está sendo atendido ou respeitado?

São duas perguntas muito simples, mas à primeira vista, pode ser que que pareça idiota, porém mas acredite, não são. Muitos analistas de requisitos comentem erros fundamentais durante o levantamento e especificação dos requisitos de um sistema.

Está querendo mais detalhes sobre o processo de levantamento de requisitos de software, conhecer melhor as técnicas de levantamento de requisitos? Então você precisa ler os artigos especiais sobre o assunto:

[divider style=”dashed” top=”20″ bottom=”20″]

[box type=”success” align=”alignleft” class=”” width=””]

Está querendo mais detalhes sobre o processo de levantamento de requisitos de software, conhecer melhor as técnicas de levantamento de requisitos, então você precisa ler os artigos especiais sobre o assunto:

[tie_list type=”lightbulb”]

[/tie_list]

[/box]

Chico Alff é o nome da persona de batalha de Francilvio Roberto Alff. Paranaense apaixonado por São Paulo, possui formação em Engenharia de Software, Análise e Desenvolvimento de Sistemas para Internet, iniciou também uma jornada acadêmica em História e Língua italiana, aventura essa que não foi concluída - ainda! Atualmente é acadêmico do curso de Engenharia Civil - Como é possível combinar a paixão por Computadores com a Divina Comédia e principalmente tijolos... por TIJOLOS!!! Frequentou os bancos acadêmicos tanto no Brasil quando na Itália, precisamente na Università degli Studi di Verona. Trabalha com desenvolvimento de software desde 2010, tendo lançado âncora no mar da Análise de Requisitos, Análise de Negócios e Gerenciamento de Projetos, com experiência em projetos para a administração pública, sistemas de ERP, contábil e fiscal. Da mesma forma como um malabarista, tenta milagrosamente manter o portal www.AnálisedeRequisotos.com.br como prova de sua paixão pelo mundo da engenharia de software.

1 COMENTÁRIO

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui