post-requisito-funcional-regra-de-negocio-qual-a-diferenca-coco-praia

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

Compartilhe este conteúdo!

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.

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.

Engenharia de Software - Engenharia de Requisitos - Curso Online

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.

Engenharia de Software - Engenharia de Requisitos - Curso Online

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

Engenharia de Software - Engenharia de Requisitos - Curso OnlineVimos 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

Grande abraço!