Un mismo sistema puede representarse con distintos niveles de abstracción. Un diagrama puede mostrar conceptos del problema sin hablar de tecnología, puede representar el comportamiento esperado desde el análisis o puede describir decisiones concretas de diseño cercanas a la implementación.
Comprender los niveles de abstracción evita mezclar ideas incompatibles. No es lo mismo modelar qué significa un Turno para el negocio que diseñar qué clases, servicios y repositorios se usarán para implementarlo. Ambas vistas pueden ser útiles, pero responden preguntas diferentes.
Abstraer significa seleccionar lo importante para un propósito y dejar fuera detalles que no aportan en ese momento. Un diagrama no debe representar toda la realidad; debe representar la parte de la realidad que se necesita comprender, comunicar o diseñar.
Un nivel alto de abstracción muestra ideas generales. Un nivel bajo de abstracción muestra detalles más concretos. La calidad del modelo depende de elegir el nivel adecuado para la pregunta que se quiere responder.
En UML es frecuente distinguir diagramas conceptuales, diagramas de análisis y diagramas de diseño. Los conceptuales ayudan a entender el dominio. Los de análisis describen requisitos, comportamiento esperado y responsabilidades generales. Los de diseño representan decisiones más cercanas a la solución técnica.
El nivel conceptual se concentra en conceptos del problema. Evita detalles de implementación y busca representar el vocabulario del dominio. En este nivel aparecen términos que las personas del área pueden reconocer: Cliente, Pedido, Producto, Turno, Profesional, Agenda, Factura.
Un diagrama conceptual ayuda a aclarar qué cosas existen en el dominio, cómo se relacionan y qué reglas generales se deben comprender antes de diseñar la solución.
En un sistema de turnos médicos, un diagrama conceptual puede mostrar Paciente, Profesional, Especialidad, Agenda y Turno. También puede indicar que un Profesional tiene una Agenda y que un Turno se asigna a un Paciente.
En este nivel no hace falta mostrar ControladorTurnos, RepositorioTurnos, tablas, frameworks ni endpoints. Esos elementos pertenecen a niveles más cercanos al diseño o la implementación.
El nivel de análisis se enfoca en comprender qué debe hacer el sistema y cómo se comporta desde el punto de vista de requisitos. Puede incluir casos de uso, actividades, estados, secuencias conceptuales y clases de análisis.
En este nivel se busca aclarar funcionalidades, reglas, escenarios, alternativas, responsabilidades generales y restricciones importantes, sin comprometer todavía todos los detalles técnicos de la solución.
Para Solicitar turno, un diagrama de actividades de análisis puede mostrar pasos como seleccionar especialidad, consultar disponibilidad, elegir horario, confirmar reserva y recibir comprobante. También puede incluir caminos alternativos si no hay disponibilidad o si el paciente cancela la operación.
El diagrama explica el comportamiento esperado, pero no necesariamente decide qué clases o servicios exactos implementarán cada paso.
El nivel de diseño representa decisiones de solución. Aquí pueden aparecer clases de diseño, servicios, controladores, repositorios, interfaces, componentes, dependencias, patrones y artefactos cercanos a la implementación.
Este nivel responde cómo se organizará el software para cumplir los requisitos. No se limita al dominio del problema; incluye elementos técnicos necesarios para construir la solución.
Para implementar la reserva de turnos, un diagrama de diseño puede incluir InterfazTurnos, ControladorTurnos, ServicioTurnos, RepositorioTurnos, ValidadorDisponibilidad y ServicioNotificaciones. Un diagrama de secuencia puede mostrar mensajes entre esos participantes.
Este modelo ya está más cerca del código. Puede orientar implementación, pruebas técnicas y distribución de responsabilidades internas.
El dominio describe el problema. La solución describe cómo se resolverá con software. Confundir ambos niveles puede producir modelos difíciles de entender. Por ejemplo, Paciente y Turno pertenecen al dominio; ControladorTurnos y RepositorioTurnos pertenecen a una solución técnica.
No está mal que ambos aparezcan en el curso o en el proyecto, pero conviene no mezclarlos sin aclarar el nivel del diagrama.
Un mismo tipo de diagrama puede usarse en distintos niveles. Un diagrama de clases puede ser conceptual o de diseño. Un diagrama de secuencia puede mostrar interacción entre actor y sistema o mensajes técnicos entre servicios. Un diagrama de componentes puede ser una vista general o una vista técnica detallada.
Por eso no alcanza con decir "diagrama de clases". También conviene aclarar si se trata de un modelo conceptual, de análisis o de diseño.
| Nivel | Pregunta principal | Elementos típicos |
|---|---|---|
| Conceptual | ¿Qué conceptos importantes existen en el dominio? | Entidades del negocio, relaciones, reglas generales. |
| Análisis | ¿Qué debe hacer el sistema y qué comportamiento se espera? | Casos de uso, actividades, estados, escenarios, reglas. |
| Diseño | ¿Cómo se organizará la solución de software? | Servicios, controladores, repositorios, interfaces, componentes. |
El nivel adecuado depende de la conversación. Si se está validando vocabulario del negocio, conviene un nivel conceptual. Si se están revisando requisitos y flujos, conviene análisis. Si se está preparando implementación, conviene diseño.
Elegir mal el nivel puede bloquear la comunicación. Un diagrama técnico puede confundir una conversación de requisitos. Un diagrama demasiado conceptual puede ser insuficiente para guiar desarrollo.
A veces se pueden combinar niveles, pero debe hacerse con intención. Por ejemplo, un diagrama de secuencia puede mostrar al actor, la interfaz y algunos servicios internos. Esa mezcla puede ser útil para explicar cómo una acción del usuario llega a la lógica de aplicación.
El problema aparece cuando la mezcla no está controlada. Si se agregan conceptos del dominio, tablas, clases técnicas, servicios externos y pantallas sin criterio, el diagrama se vuelve confuso.
Los nombres deben acompañar el nivel de abstracción. En un modelo conceptual, nombres como Pedido, Cliente y Producto son adecuados. En diseño, pueden aparecer ServicioPedidos, ControladorPedidos y RepositorioProductos.
Si un nombre técnico aparece en un diagrama conceptual, debe haber una razón. Si un concepto del negocio aparece en un diagrama de diseño, debe quedar claro si representa una entidad, un objeto de dominio o una estructura técnica.
Una forma simple de evitar confusión es indicar el propósito del diagrama. Por ejemplo: "Modelo conceptual de turnos", "Flujo de análisis para solicitar turno" o "Secuencia de diseño para registrar reserva".
Ese título orienta la lectura y ayuda a interpretar qué nivel de detalle se espera.
Al inicio del proyecto suelen predominar diagramas conceptuales y de análisis. A medida que se toman decisiones de solución, aparecen diagramas de diseño, componentes y despliegue. Sin embargo, esto no es una regla rígida.
En proyectos iterativos, los niveles pueden convivir. Una funcionalidad nueva puede estar en análisis mientras otra ya está en diseño o implementación.
Los niveles de abstracción permiten usar UML de manera más precisa. Un diagrama conceptual, uno de análisis y uno de diseño pueden representar el mismo sistema, pero con preguntas y detalles diferentes. Elegir el nivel adecuado mejora la comunicación y evita modelos confusos.
En el próximo tema veremos errores frecuentes al modelar con UML y cómo evitarlos.