Los diagramas de clases conceptuales de UML son una de las formas más usadas para representar modelos de dominio. Permiten mostrar conceptos importantes, atributos relevantes, asociaciones, roles, multiplicidades y algunas restricciones del negocio.
La palabra "conceptual" es clave. En este contexto, una clase no representa necesariamente una clase de programación. Representa un concepto del dominio, como Paciente, Turno, Agenda, Profesional o Especialidad. El objetivo es comprender el negocio, no diseñar todavía la estructura exacta del código.
Un diagrama conceptual sirve para visualizar la estructura del dominio. Muestra qué conceptos existen y cómo se relacionan. Ayuda a validar vocabulario, encontrar ambigüedades, discutir multiplicidades y detectar reglas que todavía no están claras.
También facilita la conversación con expertos del negocio, siempre que el diagrama se mantenga simple y use nombres comprensibles. Si el diagrama se llena de detalles técnicos, pierde su valor como herramienta de análisis.
Una clase conceptual representa un concepto relevante del dominio. Puede ser una entidad, un objeto de valor, una relación con información propia, un catálogo o una estructura importante para el negocio.
Por ejemplo, en un sistema de turnos pueden aparecer Paciente, Profesional, Especialidad, Agenda, Franja horaria, Turno, Reserva y Cancelación. Cada uno debe estar en el diagrama solo si aporta significado al análisis.
Los atributos representan datos relevantes del dominio. No es necesario incluir todos los campos posibles. Conviene mostrar solo aquellos que ayudan a comprender reglas, identidad, estados o diferencias importantes.
Por ejemplo, en Turno puede ser útil mostrar fecha, estado o duración. En Paciente puede ser útil mostrar documento o historia clínica. Pero no hace falta incluir detalles de interfaz, campos técnicos, marcas internas o información irrelevante para el objetivo del diagrama.
Las asociaciones muestran vínculos entre conceptos. Deben poder leerse como frases del dominio: Paciente reserva Turno, Profesional posee Agenda, Agenda contiene Franja horaria, Profesional atiende Especialidad.
Nombrar asociaciones ayuda a evitar líneas ambiguas. Si no sabemos qué significa una relación, probablemente necesitamos conversar más con expertos del dominio.
Las multiplicidades indican cuántas instancias pueden participar en una asociación. Por ejemplo, un Paciente puede tener 0..* Turnos, mientras que un Turno reservado puede tener 1 Paciente. Una Agenda puede contener 1..* Franjas horarias si está publicada.
Las multiplicidades deben expresar reglas reales, no suposiciones del modelador. Cuando no se conocen, conviene marcar la duda y validarla.
Los roles aclaran qué papel cumple un concepto dentro de una asociación. La dirección de lectura ayuda a interpretar el nombre de la relación. Por ejemplo, Paciente reserva Turno se lee desde Paciente hacia Turno.
Esto no significa que en el código una clase deba tener referencia directa a la otra. En análisis conceptual, la dirección de lectura es una ayuda para comunicar significado.
UML permite representar generalización y especialización. Puede ser útil cuando un concepto general y sus variantes tienen significado claro en el dominio. Por ejemplo, Persona podría generalizar Paciente y Profesional si el negocio reconoce esa abstracción.
No conviene usar herencia conceptual solo para evitar repetir atributos. Debe representar una diferencia real y validada del dominio.
UML también permite representar relaciones todo-parte con agregación y composición. En diagramas conceptuales deben usarse con criterio, explicando qué significa la pertenencia en el negocio.
Por ejemplo, Pedido puede estar compuesto por Ítems de pedido. Agenda puede contener Franjas horarias si estas no tienen sentido fuera de esa agenda. Pero no debemos usar composición solo porque algo aparece visualmente dentro de otra cosa.
Algunas reglas no se expresan cómodamente con clases y asociaciones. UML permite agregar notas o restricciones textuales. Por ejemplo: "Las franjas de una misma agenda no pueden superponerse" o "Un turno atendido no puede cancelarse".
Estas notas son muy útiles porque evitan que el diagrama oculte reglas importantes. No todo debe convertirse en símbolo.
Un diagrama conceptual inicial podría incluir:
Luego se agregan multiplicidades y reglas según lo que se valide con expertos.
En un diagrama conceptual conviene evitar:
Un diagrama conceptual representa el dominio. Un diagrama de diseño representa decisiones técnicas del software. En diseño pueden aparecer clases de servicio, repositorios, controladores, interfaces, patrones de implementación y métodos concretos.
Ambos diagramas pueden usar notación UML, pero tienen objetivos distintos. Mezclarlos demasiado pronto produce confusión.
La siguiente tabla resume elementos habituales:
| Elemento UML | Uso conceptual | Ejemplo |
|---|---|---|
| Clase | Concepto del dominio. | Turno, Paciente, Agenda. |
| Atributo | Dato relevante del dominio. | estado, fecha, duración. |
| Asociación | Vínculo significativo. | Paciente reserva Turno. |
| Multiplicidad | Restricción de cantidad. | Agenda 1..* Franjas. |
| Nota | Regla o aclaración. | Las franjas no se superponen. |
Estas preguntas ayudan a revisar un diagrama conceptual:
Al representar modelos con diagramas conceptuales, suelen aparecer estos errores:
Los diagramas de clases conceptuales de UML son una herramienta valiosa para representar modelos de dominio. Permiten visualizar conceptos, relaciones y restricciones, siempre que se mantenga claro el objetivo: comprender el negocio y validar significados.
En el próximo tema veremos cómo complementar esta representación con diagramas de estados, actividades y objetos.