Diferença de Requisito Funcional e Regra de Negócio

Diferença de Requisito Funcional e Regra de Negócio - Maça e Banana

Diferença de Requisito Funcional e Regra de Negócio é algo comum na cabeça de vários Analistas de sistemas.

Eu imagino que antes do lançamento do microcomputador, o termo “Regra de Negócio” era algo interpretado totalmente isolado dos softwares empresariais, ou talvez nem fosse um termo conhecido pelas pessoas.

Nos tempos atuais é difícil encontrar alguém que entende Regra de Negócio como algo isolado do software.

Quando se fala “Regra de Negócio”, praticamente sempre é no contexto de um sistema.

Estes dois conceitos  (requisito funcional e Regra de Negócio) se encontram (se cruzam) a toda hora na modelagem de um sistema, mas são coisas diferentes.

É possível uma empresa mais arcaica viver sem software, mas mesmo uma empresa arcaica não consegue viver sem regras de negócio.

As regras de negócio são restrições/premissas necessárias para o negócio “acontecer”.

E estão em todo lugar, inclusive no nosso corpo. Neste post, mais à frente, vamos ver dois exemplos superficiais de regras de negócio contidas em nosso corpo, e de requisitos funcionais relacionados.

/* nosso corpo não é bem uma empresa, mas pode ser encarado desta forma. Somos o único responsável por administrá-lo, e se cuidarmos dele como um bom empresário cuida de seu negócio, provavelmente teremos excelentes lucros em termos de saúde, qualidade de vida e prosperidade. */

Por agora, vamos pensar num negócio mais palpável. Vamos pensar num negócio de venda de coco na praia, executado e administrado por um vendedor, que é uma pessoa física.

Este vendedor pode controlar suas vendas num aplicativo de seu smartphone; sim, pode.

Diferença de Requisito Funcional e Regra de Negócio - eBook sobre Requisitos de Software

Mas pode também manter seu negócio sem isso (sem automatizar seu controle através de um aplicativo num smartphone). Mas ele não conseguirá trabalhar sem ter suas regras de negócio, mesmo que ele não saiba o que é uma Regra de Negócio.

Diferença de Requisito Funcional e Regra de Negócio - Coco de Praia

Exemplo num negócio real

Vejamos abaixo algumas regras de negócio inerentes ao negócio de “vender coco na praia”:

– O coco somente será entregue ao cliente que realizar o pagamento.

– Somente serão aceitos pagamentos em dinheiro vivo. Não serão aceitos cartões de crédito, cartão de débito ou cheque.

– Clientes que comprarem 4 cocos ganharão um coco de graça. Esta promoção não terá data para término.

– Quando a caixa de isopor (onde ficam os cocos) ficar sem gelo o vendedor deverá parar, abastecer a caixa com gelo e somente aí continuar a vender.

– O vendedor deverá portar ferramenta que permita furar o buraco no coco para que o cliente possa bebê-lo. Esta ferramenta não pode ser cortante nem serrilhada nas bordas.

– O vendedor deverá portar canudinho e fornecê-lo ao cliente ao entregar-lhe o coco, para que o cliente possa bebê-lo. Sempre deverá oferecer o canudinho, mas deverá abri-lo após o cliente aceitar recebe-lo, pois se o cliente não quiser, uma vez não aberto o canudinho (não tirado o plástico), não haverá desperdício deste material.

Poderíamos elencar dezenas de outras regras de negócio do contexto apresentado, mas com as descritas já fica claro que Regra de Negócio existe sem sistema, e que uma empresa não existe sem regras de negócio.

/* Sistemas não existem sem regras de negócio e nem todas as regras de negócio são automatizadas através de um sistema.  Pode ate ter um sistema sem regras de negócio, apenas com requisitos funcionais por exemplo, mas seria um sistema que permitiria fazer muita coisa de qualquer jeito, e até hoje acho que ninguém fez isso pois seria algo muito caótico. E nem toda Regra de Negócio é realizada por um sistema. Existem procedimentos (por exemplo – pegar café no escritório sempre que ficar com sono após o almoço) que geralmente não são automatizados via software. */

Se o vendedor de coco contratar um profissional para implementar um software para ajudá-lo nas vendas, parte destas estas regras deverão ser atendidas no sistema. Mas não serão requisitos funcionais, serão regras de negócio.

Diferença de Requisito Funcional e Regra de Negócio

A diferença entre requisito funcional e regra de negócio, conceitualmente falando, é que o requisito funcional refere-se à o que o sistema deverá fazer, enquanto a Regra de Negócio refere-se a como o sistema deverá fazer. Do ponto de vista do negócio (negócio do cliente para o qual o sistema está sendo feito), ambos são necessidades (requisito funcional e Regra de Negócio), mas cada uma com um foco diferente.

/* Uma boa dica para saber o que é Regra de Negócio é perceber quando há condições: “somente, quando, requer, se, obrigatório, sempre”. Requisitos não possuem condições, regras “são” condições. Requisitos são ações objetivas, desejo, solicitação. */

Mais sobre a venda de Coco

Ainda no exemplo do vendedor de coco, teríamos requisitos funcionais como:

– Processar venda de coco.

– Aplicar promoções vigentes na realização da venda.

– Calcular quantidade de gelo conforme o tamanho da caixa de isopor.

– Calcular quantidade de canudinhos para a quantidade de cocos contidas na caixa de isopor.

– Incluir desconto padrão na venda de cocos.

/* Vemos acima que os requisitos funcionais são de fato “o que” o sistema deverá fazer, tratando das necessidades, desejos, solicitações a serem materializadas no sistema. Como isso será feito, no que diz respeito às restrições de negócio, as regras dirão. */

No dia a dia, o Analista de Sistemas tende a confundir as duas coisas, e isso gera uma séria de prejuízos ao projeto. Dois bem sérios são:

– Impossibilidade de se fazer reuso de Regras de Negócio – vários requisitos frequentemente realizam regras de negócio comuns. As regras de negócio são associadas a requisitos, que as realizam. Não havendo reuso, é fatal que haverá mais de uma Regra de Negócio com o mesmo escopo (regras repetidas). E provavelmente, isso será codificado mais de uma vez no software, uma vez que o norte do desenvolvimento são os requisitos.

/* No escopo/projeto de um sistema, nada deve ser repetido, isso deve ser mantra para um profissional da área. Essa boa prática, essa premissa, é uma das mais importantes, pois se uma mesma coisa está em dois lugares, uma mesma coisa foi feita duas vezes e gerou custo dobrado para isso; são dois pontos de bug em potencial, são dois pontos para manutenção de uma mesma coisa etc. */

– Violação do princípio da responsabilidade única (princípio que se aplica a qualquer artefato de produção de um software, não somente a modelos de código fonte). Uma Regra de Negócio tem a responsabilidade de restringir algo, baseado na condição que é considerada em seu escopo. Um requisito funcional é um objetivo que o sistema deverá alcançar, uma função que o sistema deverá realizar. Misturar isso faz com que um requisito assuma a responsabilidade de uma regra, e vice-versa. Essa “mistura” gera alto acoplamento em nível de especificação (pois se não se separa um do outro, naturalmente que o escopo ficará misturado também), o que dificulta separar as responsabilidades dos requisitos e regras adequadamente, favorecendo assim que na construção seja gerado um sistema com forte acoplamento e baixa coesão (pois a especificação é insumo para construção).

Dezenas de problemas poderiam ser descritos, mas os citados acima (acho) já dão uma ideia do prejuízo causado por esta confusão.

No final, são conceitos simples (requisito funcional = o que o sistema fará | Regra de Negócio = como o sistema fará), que se bem entendidos favorecem muito o sucesso do projeto. Pode parecer um pouco complicado no início, mas a partir da prática vai ficando mais claro, menos abstrato.

Exemplos no corpo humano

Diferença de Requisito Funcional e Regra de Negócio - Corpo Humano

Nosso corpo é uma máquina perfeita. Através da observação podemos aprender tudo analisando o corpo, de análise de sistemas à artes.

Temos o sistema digestivo. É comum associarmos isso ao estômago, principalmente.

Nosso estômago tem como função principal digerir os alimentos.

 

E sabemos que, quando nosso estômago está cheio (cheio mesmo, no limite), se enviarmos mais alimento para digestão, este alimento não conseguirá ficar armazenado, então, deverá ser colocado para fora (isso acontece pelo famoso vômito).

Temos então, a grosso modo, um Requisito Funcional e uma Regra de Negócio.

Requisito Funcional

Digerir os alimentos inseridos através da boca e transportados pelo tubo digestivo.

Regra de Negócio

Expelir alimentos pelo tubo digestivo quando houver o preenchimento de 100 por cento do espaço do estômago.

Consideremos ainda outro contexto presente no corpo humano, ainda no mundo do “comer”. Quando engolimos o alimento de maneira “errada”, ou tentamos engolir algo que não passa pela traqueia, ocorre o engasgo. Vejamos um requisito funcional e uma Regra de Negócio neste contexto.

Requisito Funcional

Absorver ar pelas vias aéreas a partir de inalação pelo nariz.

Regra de Negócio

Viabilizar um engasgo quando houver bloqueio das vias áreas por entupimento.

Um exemplo no software, para fechar

Vejamos o programa ping, existente em qualquer sistema operacional. Este programa serve para verificar se há conectividade entre o host “local” e um host qualquer. Essa conectividade é verificada através do envio de pacotes ICMP para o host destino, e se este host receber o pacote envia um retorno que o programa entende e interprete.

Supondo que estamos especificando o programa PING – logo este é o nosso escopo – podemos então identificar (com base nas imagens a seguir – o programa faz mais coisas além do que descrevi) os seguintes Requisitos Funcionais:

Requisito Funcional

Enviar pacotes ICMP para o host destino e monitorar o retorno do envio.

Requisito Funcional

Exibir estatísticas do envio dos pacotes ICMP ao término da execução do programa.

E, para cada contexto representado pelas imagens, algumas regras de negócio também.

Diferença de Requisito Funcional e Regra de Negócio - Ping - TTL esgotado

Nesta imagem, temos um retrato da execução de um ping do meu host para o host do meu blog. O teste não foi bem sucedido, pois os pacotes ICMP expiraram (TTL estourou).

Regra de Negócio

O envio dos pacotes ICMP deverá se repetido quatro vezes por cada execução do programa. Mesmo que o TTL dos pacotes ICMP do primeiro envie esgote, as três tentativas de envio restantes deverão ser executadas.

Diferença de Requisito Funcional e Regra de Negócio - Ping - Não Resolveu DNS

Nesta imagem, não foi possível sequer realizar a resolução do nome (traduzir o nome do domínio em IP [DNS]).

Regra de Negócio

Interromper execução quando não for possível realizar a tradução do nome do domínio para um endereço IP.

Diferença de Requisito Funcional e Regra de Negócio - Ping bem sucedido

E nesta imagem, a execução foi bem sucedida, o programa conseguiu realizar a tradução do nome para o domínio, enviou os pacotes ICMP, e obteve o retorno no tempo limite.

Regra de Negócio

Interromper a execução quando o tempo de vida (TTL) dos pacotes ICMP enviados expirar.

Concluindo

Vimos que os dois conceitos citados são coisas diferentes, e não sutilmente bem diferentes, são muito diferentes.

Para saber diferenciar ambos com maior segurança, nada melhor que entender melhor o que é um Requisito Funcional e o que é uma Regra de negócio. Abaixo seguem dois links para dois posts aqui do blog que explicam cada um dos conceitos em detalhes:

O que é Requisito Funcional
O que é Regra de Negócio

Se você quiser tornar-se um Expert em Engenharia de Requisitos e sair na frente no mercado, conheça nosso curso on-line super diferenciado!

Diferença entre Requisitos Funcionais e Regras de Negócio - Curso e Engenharia de Requisitosa

Grande abraço!

Diferença de Requisito Funcional e Regra de Negócio

  • Ricardo S. Guimarães

    Existem alguns temas que não são tão atrativos, acredito que este é um deles, tenho vários amigos que trabalham com desenvolvimento de software e acredite poucos se interessam pelo mesmo, mas o valor destes tópicos são inegáveis. Gostei do contraste que fez sobre regras de negócio e requisitos funcionais, na minha opnião foi o ponto alto do texto.

  • plinio.ventura

    Oi Ricardo,

    Obrigado pela visita. Sem dúvida, ha uma cultura no campo do desenvolvimento de software em que menospreza-se a importância dos Requisitos Funcionais e Regras de Negócio. A confusão entre eles, num processo de desenvolvimento que contemple a confecção destes dois artefatos, gera significativos prejuízos (de ordens diversas) nas etapas posteriores (análise, projeto, construção, testes).

    Att.
    Plínio Ventura

  • Welington

    Parabéns não li algo mais claro…

    Obrigado pela ajuda.

    • Plínio Ventura

      Oi Welington!

      Obrigado pela visita. Que bom que o conteúdo lhe foi útil. Cadastra-se em nossa newsletter, para receber nossos posts periódicos!

      Abraço!
      Plínio Ventura

  • Pingback: Priorização de Requisitos | Até o Momento()

  • Milena Leite

    Ola
    Um duvida, escuto muito falar tudo que começa com frase ” A solução deve ser capaz de …” é requisito. Isso é verdadeiro? Posso usar isso como um parametro para separar quando o pedido do usuário é uma regra ou um requisito? outra pergunta, é correto afirmar que todo pedido do usuário sempre é regra de negocio e necessariamente temos que transfomar isso em requisito ?

    Obrigada
    Abs

    • Plínio Ventura

      Olá, Milena!

      Desculpa o atraso na resposta, só agora vi seu comentário no painel do Disqus. Vamos lá.

      Sobre “a solução deve ser capaz de”: considerando a interpretação que fiz do escreveu, acho que pode ser um “leve indício” de que por trás desta frase, deverão existir um ou mais requisitos. Talvez seja melhor entender tal frase como a apresentação de uma necessidade pertinente à solução, que se estiver no contexto de funcionalidades, se desdobrará em um ou mais Requisitos Funcionais, e se não, em um ou mais Requisitos Não Funcionais. Atrelado a tais Requisitos Funcionais poderão haver Regras de Negócio.

      Um grave problema que temos na área de Análise é a falta de cuidado com os detalhes. Um requisito tem sempre que ser atômico, e por trás de uma frase como esta que citou geralmente existem “muitos poréns”. É muito comum vemos requisitos do tipo “Fazer pagamento de vendas de produtos”, que na realidade é algo que se desdobra em dezenas de requisitos, mas que foi definido como somente uma coisa, com tempo subestimado, e custo idem.

      Sobre isso, então, considerando minha interpretação, acho que não se aplica, tratando-se apenas de um necessidade, que deve ser criteriosamente analisada.

      Sobre a segunda questão – “todo pedido do usuário sempre é regra de negócio e transformar isso em requisito” – não vejo nexo nesta afirmativa. Requisitos de Software contemplam tanto Requisitos Funcionais como Regras de Negócio, mas ambos são coisas muito diferentes, cada um com propósitos e estruturas diferentes.

      Depois dê uma olhada em nosso curso de Engenharia de Requisitos, acredito que pode ser muito útil a você: http://www.indtech.com.br/lpCursoEngenhariaRequisitosListaPreLancamento.aspx

      Qualquer comentário adicional estou à disposição!

      Abraço!

  • Plínio Ventura

    Milena,

    A certificação que conheço para Analista de Requisitos é a CPRE, do IBQTS (http://ibqts.com.br/conteudo/show/id/53). O nosso curso não é um preparatório para esta certificação, mas aborda em muita profundidade muitos conceitos exigidos no exame.

    Nosso curso aborda muito da teoria, mas apresenta-se como um conteúdo voltado para o mercado, mais “aplicável” na prática.

    Qualquer dúvida estamos à disposição!

    Abraço!

  • Eduardo Carron Rigamontte

    Prezado, boa noite.

    Poderia me dizer se existe diferença entre REQUISITOS FUNCINAIS e ESPECIFICAÇÃO FUNCIONAL?

    Obrigado

    • Plínio Ventura

      Como vai, Eduardo!

      Uma Especificação Funcional de um software deve conter “dentro dela” todos os requisitos especificados, ou seja, a especificação de todos os requisitos compõe o documento chamado Especificação Funcional.

      Mas neste documento, dependendo do processo de desenvolvimento adotado pela empresa, pode conter outros artefatos também, além dos próprios requisitos de software.

      Qualquer dúvida estamos à disposição!

      Abraço!