En el tema anterior vimos que un dominio grande puede dividirse en contextos delimitados. Pero esos contextos no quedan aislados: se relacionan, intercambian información, dependen unos de otros y muchas veces son mantenidos por equipos distintos. Para visualizar esas relaciones usamos un mapa de contexto.
Un mapa de contexto muestra cómo se conectan los modelos de distintas áreas del negocio. Ayuda a entender límites, dependencias, integraciones, traducciones de vocabulario y responsabilidades entre equipos.
Un mapa de contexto es una representación de los contextos delimitados y las relaciones entre ellos. No describe cada modelo interno con detalle, sino cómo esos modelos se conectan.
Por ejemplo, en una clínica podemos tener contextos de Turnos, Atención médica, Facturación, Notificaciones y Administración de pacientes. El mapa muestra cómo fluye la información entre ellos.
El mapa de contexto sirve para comprender el sistema completo sin mezclar todos los modelos. Permite ver qué áreas colaboran, qué modelos deben traducirse, qué dependencias existen y dónde pueden aparecer problemas de integración.
También ayuda a tomar decisiones organizacionales. Si dos equipos trabajan en contextos diferentes, el mapa permite acordar contratos, eventos, responsabilidades y límites de cambio.
Un contexto delimitado puede coincidir con un equipo, pero no siempre ocurre. A veces un equipo mantiene varios contextos pequeños. Otras veces un contexto grande requiere más de un equipo. Lo importante es que las responsabilidades estén claras.
Cuando los límites del modelo y los límites del equipo están muy desalineados, suelen aparecer problemas de comunicación. El mapa de contexto ayuda a hacer visibles esas tensiones.
Los contextos pueden relacionarse de muchas formas. Uno puede enviar eventos a otro, consultar información, publicar un contrato, consumir datos externos o traducir conceptos. Cada relación debe tener intención clara.
Por ejemplo, Turnos puede emitir el evento Turno atendido. Facturación puede consumir ese evento para generar una prestación facturable. Atención médica puede recibir información de agenda para asociar una consulta con un turno previo.
Cuando dos contextos se comunican, no siempre comparten los mismos significados. Una información recibida debe traducirse al lenguaje del contexto receptor. Esto evita que un modelo invada al otro.
Por ejemplo, en Turnos existe Turno como reserva de una franja. En Facturación puede transformarse en Prestación facturable. No conviene que Facturación dependa internamente de todas las reglas de agenda, ni que Turnos conozca todos los detalles de facturación.
En algunas relaciones, un contexto produce información y otro la consume. El proveedor define qué datos o eventos ofrece. El consumidor decide cómo interpretarlos dentro de su propio modelo.
Por ejemplo, el contexto de Turnos puede proveer eventos como Turno reservado, Turno cancelado o Turno atendido. El contexto de Notificaciones puede consumir esos eventos para enviar mensajes. El contexto de Facturación puede consumir Turno atendido para iniciar un proceso administrativo.
Cuando dos contextos se integran, necesitan contratos claros. Un contrato puede ser un evento, una API, un archivo, un mensaje o un acuerdo documental sobre datos compartidos. Lo importante es que ambas partes entiendan qué se intercambia y con qué significado.
Un contrato mal definido genera acoplamiento y ambigüedad. Si cambia el modelo interno de un contexto, no debería romper innecesariamente a todos los consumidores.
Una relación sincrónica ocurre cuando un contexto necesita respuesta inmediata de otro. Una relación asincrónica ocurre cuando un contexto publica un evento o mensaje y otro lo procesa después.
En el análisis de dominio, no siempre hace falta decidir el mecanismo técnico exacto, pero sí conviene entender si un proceso depende de una respuesta inmediata o si puede resolverse como consecuencia posterior.
Un mapa de contexto para una clínica podría incluir:
El mapa muestra cómo estos contextos intercambian eventos y datos sin mezclar sus modelos internos.
La siguiente tabla muestra relaciones posibles:
| Contexto origen | Contexto destino | Relación |
|---|---|---|
| Turnos | Notificaciones | Envía eventos para confirmar o recordar turnos. |
| Turnos | Facturación | Informa turnos atendidos como posibles prestaciones facturables. |
| Administración de pacientes | Turnos | Provee datos básicos de pacientes habilitados. |
| Atención médica | Facturación | Informa prestaciones realizadas que deben cobrarse. |
| Facturación | Administración | Comunica deudas, pagos y comprobantes. |
Un mapa de contexto no debe convertirse en un diagrama de clases gigante ni en un diagrama de infraestructura. No necesita mostrar todas las entidades, atributos, tablas, servicios técnicos o endpoints.
Su nivel de detalle debe permitir entender relaciones entre modelos. Si el mapa se llena de detalles técnicos, pierde su propósito estratégico.
Estas preguntas ayudan a construir un mapa de contexto:
Al trabajar con mapas de contexto, suelen aparecer estos errores:
Los mapas de contexto permiten ver el dominio desde una perspectiva más amplia. Muestran cómo se relacionan contextos delimitados, qué información intercambian y dónde existen dependencias entre áreas o equipos. Son especialmente útiles cuando un único modelo ya no alcanza para explicar todo el negocio.
En el próximo tema estudiaremos modelos anémicos y modelos expresivos, analizando dónde conviene ubicar responsabilidades dentro del dominio.