O que é realmente a “lógica de negócios”?

99

Estou trabalhando com desenvolvimento web desde 2009, quando comecei com PHP. Quando mudei para o ASP.NET, ouvi muito sobre DDD e OOAD, onde muito foco é dado a essa "lógica de negócios" e "regras de negócios". O ponto é que todos os aplicativos que desenvolvi até agora eram todos sobre operações CRUD e nunca vi essas coisas na prática.

Eu simplesmente não consigo imaginar o que essas coisas podem realmente ser na prática. Então, o que é realmente essa lógica de negócios e como isso se encaixa em um aplicativo? Eu sei que estes são implementados como métodos em modelos de domínio, mas o que esses métodos poderiam ser, e onde na aplicação eles poderiam possivelmente usados?

    
por user1620696 31.03.2014 / 01:34
fonte

6 respostas

92

CRUD é um acrônimo que significa Criar, Ler, Atualizar e Excluir. Essas são as quatro operações básicas que você pode executar em uma tupla de banco de dados . Mas sempre há mais para aplicativos de negócios do que criar, ler, atualizar e excluir registros de banco de dados.

Comecemos com algumas definições básicas e, em seguida, veja alguns exemplos e veja como essas definições mapeiam os exemplos e como eles mapeiam o software real.

Lógica comercial ou lógica do domínio é essa parte do programa que codifica as regras de negócios do mundo real que determinam como os dados podem ser criados, exibidos, armazenados e alterados. Ele prescreve como os objetos de negócios interagem entre si e impõe as rotas e os métodos pelos quais os objetos de negócios são acessados e atualizados.

Regras de Negócios descrevem as operações, definições e restrições que se aplicam a uma organização. As operações coletivamente formam um processo; todas as empresas usam esses processos para formar sistemas que realizam as coisas.

Agora, vamos trabalhar com alguns exemplos.

Transferência de dinheiro de uma conta corrente para outra

Primeiro, quais são as coisas que você precisa saber (entrada)?

  • A identidade da pessoa que faz a transferência
  • A quantia de dinheiro a ser transferida
  • O número da conta corrente de origem
  • O número da conta bancária de destino

Quais são algumas das "regras de negócios" que devem ser aplicadas?

  • A pessoa que faz a solicitação deve ter autoridade para fazê-lo.
  • A transação deve ser atômica .
  • A transação pode ter requisitos de relatório para o governo, se exceder um determinado valor

Por "atômico", quero dizer que a transação deve ser completamente bem-sucedida ou deve falhar completamente. Você não pode ter transações de contas em que o dinheiro é retirado de uma conta sem chegar ao outro (o dinheiro desaparece) ou o dinheiro é depositado em uma conta, mas não debitado de outra conta (o dinheiro aparece magicamente do nada). >

Encomendar algo da Amazon.

O que você precisa saber?

  • A identidade da pessoa que faz o pedido
  • Informações de envio
  • Informações de faturamento
  • Método de pagamento
  • Quantidade e quantidade de cada item a ser enviado
  • Como enviar (durante a noite, barco lento ou super poupança)
  • Taxa de imposto estadual

O que acontece depois que o pedido é feito?

  • Os itens são retirados do estoque
  • Quantidades em mãos são debitadas
  • Os itens são empacotados para envio
  • Itens fora de estoque estão com pedido em falta
  • Itens abaixo de quantidades mínimas são pedidos
  • Uma remessa ou duas?
  • Uma fatura / lista de envio é impressa e colocada com o pedido

    .. etc.

por 31.03.2014 / 02:04
fonte
24

CRUD é simplesmente o Create, Read, Update, Delete que uma aplicação faz.

Até certo ponto, um rastreador de bugs também é um aplicativo CRUD. Crie bugs, leia (exiba) os bugs, atualize os bugs e, talvez, apague-os.

No entanto, há mais em um rastreador de bugs do que apenas CRUD.

  • Um desenvolvedor não pode marcar o bug verificado ou fechado - isso é parte do trabalho do controle de qualidade. E assim, alguns códigos estão lá para garantir que alguém que não tenha o papel de controle de qualidade não possa marcar um bug como fechado ou verificado.
  • Ninguém além de um gerente de projeto pode realmente excluir um bug.
  • Para que um bug seja marcado como "teste-me", deve haver pelo menos uma confirmação de código contra o bug.
  • Apenas um bug que está no estado 'fechado' pode ser movido para o estado 'reabrir'
  • O desenvolvedor atribuído ao bug não pode movê-lo de "revisão de código" para "revisão de código completa"
  • O Controle de qualidade e os desenvolvedores podem ver apenas bugs em projetos aos quais estão atribuídos.

O código que implementa o acima é a lógica de negócios do aplicativo.

A restrição de fluxos de trabalho, ou quem pode fazer as várias operações no CRUD. Estes são o que separa um aplicativo CRUD do outro. Eles são as partes em que você precisa fazer com que o negócio realmente diga como o aplicativo funciona. Quão lógico é ... bem, isso é melhor discutido com uma cerveja fora do alcance da voz do gerente do projeto. Mas isso é o que é lógica comercial.

Claro, é possível escrever um aplicativo CRUD 'puro' onde não há papéis, tudo pode ser modificado e visualizado - mas estas são a exceção e não a regra.

A lógica comercial é a lógica que você está gravando no seu programa para lidar com as regras comerciais que você recebe.

Quando você começa a entrar nas regras de negócios, isso tende a estar em um nível mais alto do que a própria lógica de negócio ou a lógica de negócio. Isso tende a ser as coisas que você recebe de um analista de negócios que está trabalhando com o negócio.

Considere, neste exemplo, um programa que determina como lidar com o retorno de um item em uma mesa de devoluções em uma loja.

  • Se o recibo for igual ou maior que 90 dias, somente o crédito na loja poderá ser fornecido
  • Se o recibo tiver menos de 90 dias, credite a proposta com a qual o recibo foi usado (o crédito volta no cartão de crédito, o dinheiro volta ao numerário, o crédito na loja é creditado na loja). a menos que fosse um cheque, nesse caso use dinheiro.

Essas são algumas regras de negócios. Eles não falam com a parte do aplicativo CRUD.

Ao trabalhar com regras de negócios, você pode encontrar esses documentos com frequência em um mecanismo de regras (por exemplo, Mecanismo de regras do Windows Workflow Foundation ) em vez de gravar o código bruto em seu sistema.

Perceba que a distinção entre lógica e regras é de terminologia e pode ser discutida durante toda a noite (melhor com cerveja novamente). Embora isso não seja uma distinção incomum, embora os dois possam se misturar.

    
por 31.03.2014 / 01:53
fonte
13

Outras respostas estão corretas. Um pensamento adicional ...

A lógica de negócios é portátil

Se você fosse reimplemente um projeto de software em uma linguagem de programação diferente, por exemplo, mudar de Turbo Pascal para Java , lógica de negócios & As regras de negócios são o que os antigos e os novos projetos teriam em comum .

A linguagem de programação seria diferente. O código-fonte seria totalmente diferente. As ferramentas ( IDE s, compiladores e outros) podem ser totalmente diferentes. A interface do usuário pode ser totalmente reorganizada ou ter um look-and-feel . A documentação provavelmente seria diferente. Mas o propósito dos dois projetos, os resultados finais do trabalho realizado / metas cumpridas, seria o mesmo.

    
por 31.03.2014 / 23:38
fonte
8

A lógica de negócios consiste basicamente em duas categorias amplas: validação e fluxo. A lógica de negócios diz que qty 1 deve ser maior ou igual a qty 2 - por exemplo, o número de itens a serem comprados deve ser menor ou igual ao número de itens em estoque.

Em um aplicativo, o pessoal de negócios dirá que essa é uma regra de negócios e, portanto, você escreve o código para impor essa lógica de negócios (validação). Outra aplicação dirá que, se o número de itens pedidos for maior que o número de itens em estoque, para aceitar o pedido e depois colocar seu próprio pedido para a diferença mais 20%, você escreverá essa lógica de negócios (fluxo) .

O CRUD está simplesmente obtendo armazenamento de entrada e saída de dados e alterando-o. A lógica de negócios determina o que você faz com esses dados e quais transformações você tem permissão para fazer. Seu cliente nasceu no futuro, com menos de 5 anos, de uma determinada área geográfica (descontos para moradores / visitantes). CRUD é simples, sabendo que você pode obter um crédito de imposto de criança apenas se a criança viveu com você por mais da metade do tempo que estava vivo no ano civil, não apenas mais de 6 meses, é mais complexo.

    
por 31.03.2014 / 09:33
fonte
7

Lógica ou regras de negócios são qualquer coisa que não pertence à mecânica da interface do usuário (as "coisas de programação"). Eles são as coisas que você ainda teria que aplicar se estivesse fazendo essa transação ou o que quer que seja 100 anos atrás (manualmente). Por exemplo, quando aplicar o imposto sobre vendas a uma compra.

    
por 31.03.2014 / 17:48
fonte
1

A "lógica de negócios" de um programa ou aplicativo é a parte do código que realmente faz coisas com entrada (do usuário, do sistema operacional e etc). As "regras de negócios" de um aplicativo geralmente são os parâmetros definidos do próprio programa (por exemplo, como manipular entradas). Pelo menos, é assim que ouvi falar de muitas pessoas. Eles são termos muito semelhantes para descrever partes do código.

    
por 31.03.2014 / 02:26
fonte