Comprender el como funciona el negocio es un requisito fundamental para crear soluciones de software exitosas. Como programadores e ingenieros de software, debemos comprender cómo operan las empresas dentro de su negocio. Al analizar el dominio empresarial, podemos destilar los diferentes subdominios. Esto nos ayudará a diseñar buenos sistemas que estén alineados con los objetivos del negocio y, en consecuencia, asegurará el éxito del negocio.
Modelar nuestros programas usando DDD (Domain-Driven Design) nos ayuda a trasladar la terminología, conceptos e ideas del dominio de nuestro negocio al software que estamos desarrollando. Los Agregados y las Entidades son elementos básicos a la hora de aplicar DDD. Uno de los conceptos más incomprendidos pero fundamentales en DDD son los agregados. Definirlos erróneamente puede traer consecuencias desastrosas para nuestros programas.
Un aspecto crítico a la hora de implementar DDD es la correcta definición de los Bounded Context (Contextos Acotados en español). Esto nos permitirá, a su vez, definir los agregados y demás elementos de nuestro sistema. El Lenguaje Ubicuo juega un papel decisivo a la hora de definir cada uno de nuestros bounded context.
Una de las primeras cosas que se oye cuando se habla de DDD es el termino "Lenguaje Ubicuo". Es la base de todo en DDD, usando este lenguaje podremos definir todos los conceptos de nuestro negocio, nos ayudará a comunicarnos correctamente y ante todo, nos facilitará la tarea de modelar correctamente el dominio de nuestra solución.
Los Value Objects (VO) son una pieza fundamental del diseño dirigido por dominio (Domain-Driven-Design o DDD) y de la programación orientada a objetos. Describen un concepto de nuestra capa de dominio.