Un modelo de dominio no es correcto solo porque esté bien dibujado o use nombres elegantes. Debe representar adecuadamente el negocio. Para comprobarlo, necesitamos validarlo con escenarios, ejemplos y contraejemplos.
La validación consiste en probar el modelo contra situaciones concretas. Si el modelo explica correctamente los casos normales, los casos límite y las excepciones importantes, aumenta nuestra confianza. Si falla, el modelo debe corregirse antes de usarlo como base para diseño, pruebas o documentación.
Durante el análisis es normal trabajar con información incompleta. Los expertos pueden omitir reglas porque les parecen obvias. Los documentos pueden estar desactualizados. Los casos de uso pueden no cubrir excepciones. Los diagramas pueden ocultar ambigüedades.
Validar el modelo permite detectar esos problemas. Un escenario concreto obliga a aplicar conceptos, relaciones, multiplicidades, estados y reglas. Si algo no encaja, aparece una pregunta útil.
Un escenario describe una situación o secuencia de eventos dentro del dominio. Puede estar relacionado con un caso de uso, una regla de negocio, un proceso o una excepción.
Por ejemplo: "Un paciente reserva un turno con un profesional para el próximo lunes, luego cancela con 48 horas de anticipación y la franja vuelve a estar disponible". Este escenario permite validar conceptos como Paciente, Turno, Profesional, Franja horaria, Cancelación y Disponibilidad.
Un ejemplo es una instancia concreta del modelo. Usa datos específicos para mostrar cómo se comporta el dominio. Por ejemplo, "Ana Pérez reserva un turno con el Dr. Gómez el 12 de junio a las 10:00".
Los ejemplos ayudan a revisar multiplicidades, atributos, asociaciones y estados. También hacen que el modelo sea más comprensible para personas no técnicas.
Un contraejemplo es una situación que desafía una regla o una interpretación del modelo. Sirve para probar si el modelo es demasiado amplio, demasiado rígido o ambiguo.
Por ejemplo, si el modelo dice que un paciente no puede tener dos turnos pendientes, un contraejemplo podría ser: "¿Qué ocurre si los turnos son para especialidades distintas?". Si esa situación es válida para el negocio, la regla debe ajustarse.
Los ejemplos ayudan a comprobar si los conceptos son correctos. Si un escenario menciona "sobreturno" y el modelo no tiene forma de representarlo, quizá falta un concepto o una regla. Si el modelo contiene "Reserva" pero los expertos hablan siempre de "Turno confirmado", debemos revisar el vocabulario.
Validar conceptos implica preguntar si cada término existe realmente en el negocio, si su significado es claro y si se diferencia de otros conceptos parecidos.
Los escenarios concretos permiten revisar relaciones. Si decimos que un Profesional tiene una Agenda, debemos probar casos: ¿qué ocurre si atiende en dos sedes?, ¿puede tener agenda por especialidad?, ¿existen agendas históricas?, ¿una agenda puede existir sin profesional?
Los contraejemplos son especialmente útiles para multiplicidades. Si encontramos un caso válido que contradice 1, 0..1 o 1..*, la multiplicidad debe revisarse.
Una regla debe probarse con casos donde se cumple, casos donde falla y casos límite. Por ejemplo, si la regla dice que una cancelación debe realizarse con 24 horas de anticipación, debemos preguntar: ¿qué ocurre exactamente a las 24 horas?, ¿se cuentan días hábiles?, ¿qué pasa con feriados?, ¿qué zona horaria se usa?
Estas preguntas evitan reglas vagas que luego generan errores en la implementación.
Los escenarios ayudan a comprobar si los estados y transiciones son correctos. Por ejemplo, un turno confirmado puede pasar a atendido, cancelado o ausente. Pero ¿puede volver a reservado?, ¿puede reprogramarse?, ¿qué ocurre si el profesional cancela?, ¿qué pasa si el paciente llega tarde?
Cada respuesta puede agregar una transición, una regla o un evento de dominio.
Los agregados deben validarse con operaciones que intenten romper sus invariantes. Si Agenda debe evitar franjas superpuestas, debemos probar agregar una franja que se cruza con otra. Si Pedido no puede confirmarse vacío, debemos probar ese caso.
Los contraejemplos muestran si el agregado protege correctamente sus reglas o si el límite de consistencia está mal definido.
Para validar bien, no alcanza con escenarios felices. Conviene revisar:
Una tabla simple puede ayudar a organizar la validación:
| Elemento a validar | Ejemplo | Pregunta de revisión |
|---|---|---|
| Concepto Turno | Ana reserva turno con Dr. Gómez. | ¿Turno y Reserva son lo mismo o conceptos distintos? |
| Multiplicidad Profesional-Agenda | Profesional atiende en dos sedes. | ¿Puede tener más de una agenda? |
| Regla de cancelación | Cancelación exactamente 24 horas antes. | ¿Se permite o se considera fuera de término? |
| Estado Turno atendido | Se intenta cancelar un turno ya atendido. | ¿Debe rechazarse, anularse o registrarse otro evento? |
| Invariante de Agenda | Dos franjas se superponen cinco minutos. | ¿La agenda debe impedirlo siempre? |
La validación debe involucrar expertos del dominio. El equipo técnico puede detectar inconsistencias formales, pero los expertos son quienes saben si el modelo representa correctamente el negocio.
Una buena práctica es revisar escenarios con lenguaje simple, sin obligar a los expertos a interpretar detalles técnicos. Los diagramas, tablas y ejemplos deben servir para conversar, no para impresionar.
Los escenarios, ejemplos y contraejemplos pueden convertirse en casos de prueba. Una regla bien validada puede transformarse luego en pruebas automatizadas o casos de aceptación.
Por ejemplo: "Dado un turno confirmado, cuando se intenta cancelarlo después de haber sido atendido, entonces la cancelación debe rechazarse". Esta formulación conecta modelo de dominio, regla y verificación.
Estas preguntas ayudan a organizar una sesión de validación:
Al validar modelos, suelen aparecer estos errores:
Validar el modelo con escenarios, ejemplos y contraejemplos es una práctica esencial. Permite descubrir reglas ocultas, corregir multiplicidades, ajustar estados y mejorar el vocabulario. Un modelo que resiste casos concretos es mucho más útil que un diagrama que solo parece correcto en abstracto.
En el próximo tema veremos cómo mantener trazabilidad entre modelo de dominio, requerimientos y casos de uso.