¿Que es un Bounded Context?

Publicada en Publicada en Sin Categoria

Compartelo con tus amigos!

El concepto de “Bounded Context” (Contexto Delimitado) nace con DDD y es el patrón central del mismo. La idea es que cuando se tienen modelos grandes (alguna vez en una discusión se hablo sobre modelos con mas de 500 entidades) estas se dividan en contextos delimitados poniendo de forma explicita la relación entre ellos.

La idea detrás de un Bounded Context es conseguir un “Lenguaje Ubiquo” que sea único para el modelo y que el mismo no se preste a confusión, permitiendo así una mejor comunicación entre los desarrollos de software y los expertos de dominio.

Pongamos el ejemplo de una empresa comercial que compra unos bienes al por mayor, los almacena y los va vendiendo al por menor, vemos que se puede identificar 3 áreas: Compras, Almacen, Ventas (seguro que si analizamos mas encontraremos mas áreas, pero para el ejemplo con estas nos valen); entre estas 3 áreas de la organización existen conceptos que puede prestarse a confusiones por ejemplo “Orden de Compra” cuando hablas de orden de compra desde el área de Compras nos referimos a las solicitudes que la empresa emite hacia sus proveedores, mientras que si hablamos de una orden de compra desde el área de ventas te refieres a las solicitudes que nos hacen los clientes para que, como empresa, nosotros les vendamos los productos; como este concepto es diferente dependiendo del área es que es un buen ejemplo para dividir el modelo en bounded context, aunque este ejemplo es bastante “de libro” creo que explica claramente la idea principal de usar bounded context; y aunque acá partimos de una división por área de la organización no significa que esto sea siempre así (aunque puede servir como un punto de partida).

Otro ejemplo clásico es el concepto de “Cliente” en una organización grande por ejemplo mientras que para el área de ventas y el contable el cliente vienen a ser las personas que compran los productos, para el área de sistemas el “cliente” viene ser el área a quien esta dirigido el sistema que se esta desarrollando.

Los Bounded Context pueden tener conceptos compartidos como “Producto” (para el primer ejemplo de una empresa comercial) pero también puede tener conceptos que no existan en otros contextos. Cuando 2 o más contextos comparte un concepto este no siempre tendrá el mismo modelo, pero ejemplo mientras que para el área de Compras el producto solo necesite el Código y el Nombre (por poner un ejemplo) para el almacén se requerirían mayores datos como la categoría, el peso, el color, etc.

Existen muchos factores que pueden delimitar un contexto pero el factor principal siempre será la cultura humana ya que cada contexto debe tener un único lenguaje ubiquo que identifique el modelo; cuando el lenguaje cambia, también cambia el contexto.

 

Compartelo con tus amigos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *