ddd y lenguaje ubicuo

introducción

en domain-driven design (ddd), el lenguaje ubicuo es el vocabulario compartido entre negocio y devs que se usa en conversaciones, docs, código y datos. si el lenguaje cambia entre áreas, el software se aleja del dominio real.

el objetivo: un solo término → un solo significado dentro de cada contexto delimitado (bounded context). fuera de ese contexto, el término puede significar otra cosa y eso está bien —pero hay que nombrarlo.

idea clave: el lenguaje no es documentación decorativa: es el modelo del dominio. cambiamos el lenguaje → cambia el modelo → cambia el software.
Lenguaje = Modelado del dominio
regla mental — el lenguaje define el modelo.

alineación negocio ↔ dev

Cuando negocio y dev usan 'cliente' con significados distintos
anti-ejemplo — misma palabra, significados distintos ⇒ errores.
Un término, un significado: glosario compartido y modelo coherente
buen ejemplo — glosario compartido ⇒ modelo coherente.
Un término, dos significados: depende del contexto
un término puede variar entre contextos (bounded contexts).

lenguaje en todos los artefactos

el mismo término debe existir en conversaciones, documentación, esquemas y código. si el lenguaje no fluye a los artefactos, se rompe la coherencia del modelo.

Lenguaje ubicuo reflejado en conversación, documentación, base de datos, código y tests
del glosario al código: mismo concepto, mismos nombres.

dominios y contextos delimitados

divide el negocio en dominios y equipos con su propio lenguaje. dentro del contexto, las palabras tienen significado preciso; entre contextos, traduce explícitamente (anticorrupción, mapeos, contratos).

Ejemplo de dominios y bounded contexts (Cafetería)
visión — equipos por contexto y lenguaje ubicuo dentro de cada uno.

prácticas rápidas

  • glosario vivo por contexto (no uno “corporativo” para todo).
  • nombra entidades/atributos en código y datos igual que en el glosario.
  • revisa event storming para descubrir lenguaje y límites.
  • cuando dos equipos dicen lo mismo pero con matices → aclara o crea un anticorruption layer.
  • en PRs: verifica que nombres y invariantes respeten el lenguaje del contexto.