Bounded Context, O que é ?

Irei falar sobre Bounded Context, começando pela sua definição. Espero escrever outros posts que irão comentar sobre as vantagens de se trabalhar utilizando essa abordagem  e também  indo a fundo na implementação desse conceito.

Espero que ajude 🙂

Bounded Context (BC) ou Contextos delimitados, em português, é um tema muito importante quando estamos falando sobre DDD e um dos que eu acredito ser mais difíceis de se ter um bom entendimento.

O que é um Bounded Context? uma definição para ele seria: ” A Bounded context is a linguistic boundary . It isolates models to remove ambiguity within  UL (ubiquitous language)”

Hmm…meio confuso ainda né? Bem, eu pelo menos acho 😛

Então vamos explanar mais sobre isso.

Em uma aplicação complexa (que normalmente são as que estamos acostumados a trabalhar) você consegue encontrar vários modelos  para atender o negocio.

Imagine um e-commerce, ele possui vendas, pedidos, entrega dos produtos, controle desses produtos no estoque e etc. Você precisa de um modelo para tratar das vendas dos produtos, um para controlar a entrega dos produtos comprados e de um para controlar o seu estoque. Repare que cada modelo desse representa uma área distinta de um problema maior  que você terá que resolver.

É vital que você proteja, garanta a integridade e defina claramente os limites de responsabilidade de cada Modelo. Isso que é um Bounded Context. Um contexto significa ter uma responsabilidade especifica, logo, um BC define a responsabilidade que é imposta com um limite explicito.

Entendendo melhor tudo isso.

André e Maria trabalham na mesma empresa. Maria trabalha na área de Recursos Humanos. André trabalha na área de TI.

A TI é responsável por resolver todos os problemas referentes a Tecnologia. A TI é um Bounded Context. O  RH é responsável por resolver todos os problemas relacionados aos funcionários. O RH é outro Bounded Context.

Cada área tem suas próprias regras, seus próprios funcionários e etc. O André, não pode chegar no RH e demitir um funcionário ou alterar o salário de um funcionário, na verdade, o André nem sabe como fazer isso. Da mesma forma, a Maria não pode chegar na área de TI começar a mudar qualquer regra de negocio que existe no sistema que realiza o pagamento dos funcionários, isso não é a sua responsabilidade. Se um dos dois fizessem algo do tipo, ele estariam violando um limite. 

Se a Maria precisar mudar alguma regra de negocio do sistema de pagamento de funcionários, ou se ela identificar algum bug, ela não pode simplesmente chegar na mesa do André e pedir para ele realizar essa mudança, ela realizaria uma solicitação inválida. 

Para que Maria solicite uma mudança na regra de pagamento dos funcionários, é sabido que a solicitação é feita para o Fernando, que é gerente de TI. isso é uma regra.

Então se a área de TI é um BC, logo o André é parte desse modelo e o Fernando é  o Aggregate Root desse Aggregate (irei falar sobre aggregate e aggregate root posteriormente).

Espero que agora as coisas estejam mais claras para você 🙂

 

Referencias:

Explanando sobre BC

DDD

 

Anúncios
Postado em DDD

2 comentários sobre “Bounded Context, O que é ?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s