Fundamentos de UML: tipos de diagramas, diagrama de clases, diagrama de secuencia y OCL
Este artículo es una explicación de conceptos sobre UML, incluidas preguntas de examen y etiquetas.
En pocas palabras
UML es un lenguaje visual estandarizado para modelar software y sistemas, que ofrece diagramas estructurados y orientados al comportamiento para documentar requisitos, diseño y comunicación de manera consistente.
Descripción técnica compacta
UML separa estructura de comportamiento. Los diagramas estructurales como el diagrama de clases y el diagrama de paquetes describen elementos estáticos, mientras que los diagramas orientados al comportamiento como el diagrama de actividades, diagrama de secuencia y diagrama de estados muestran procesos y reacciones. Las relaciones centrales son asociación, agregación, composición y generalización, complementadas por dependencias y realización. Las visibilidades controlan el acceso, las multiplicidades describen cardinalidades, los estereotipos y perfiles permiten adaptación a dominios específicos. Las restricciones textuales se formulan con OCL, por ejemplo invariantes, precondiciones y postcondiciones.
Puntos clave relevantes para exámenes
- Diagramas estructurales como clases, objetos, paquetes, componentes, distribución
- Diagramas de comportamiento como actividad, secuencia, comunicación, estados, casos de uso
- Comprender relaciones: asociación, agregación, composición, generalización, realización, dependencia
- Anotar cardinalidades correctamente y alinearlas con reglas de negocio
- Usar OCL para condiciones precisas, derivar criterios de aceptación y pruebas
- Modelar estados con condiciones de guardia y acciones, verificar transiciones relevantes para seguridad
- Rentabilidad mediante detección temprana de errores y mejor comunicación
- Versionar, revisar y aprobar modelos, documentar vinculación con requisitos y casos de prueba
Componentes clave
- Elementos de notación: clase, atributo, operación con visibilidad
- Relaciones: asociación, agregación, composición, generalización
- Multiplicidades y designaciones de rol en las aristas
- Paquetes, espacios de nombres, importación y reglas de visibilidad
- Componentes e interfaces con realización
- Elementos de actividad: acción, decisión, fusión, bifurcación, sincronización
- Elementos de interacción: línea de vida, mensaje, activación en el modelo de secuencia
- Máquina de estados con estados, transiciones, guardia, entrada y salida
- Perfiles, estereotipos, valores etiquetados para adaptaciones específicas del dominio
- OCL para invariantes, precondiciones, postcondiciones y casos de prueba derivados
Ejemplo práctico
Dominio: Préstamo en biblioteca
Diagrama de clases:
Clases: Lector, Medio, Préstamo
Relaciones: Lector a Préstamo (1 a *), Medio a Préstamo (1 a *)
Préstamo tiene atributos: fechaInicio, fechaFin, esExtendido
Operación: extender() con regla: fechaFin = fechaFin + 14 días si el medio es extensible
Secuencia: "Tomar medio prestado"
Actores: Lector, Sistema, Catálogo, ServicioPréstamo
Flujo:
1. Lector envía "Tomar medio prestado" al Sistema
2. Sistema consulta Catálogo sobre disponibilidad
3. Catálogo responde "disponible"
4. Sistema invoca ServicioPréstamo: crear Préstamo con Lector y Medio
5. ServicioPréstamo crea Préstamo y confirma, Sistema reporta éxito
Ejemplo OCL:
Context Préstamo::inv FechaDevolucionValida: self.fechaFin > self.fechaInicio
Ventajas y desventajas
Ventajas
- Lenguaje común para negocio y tecnología
- Mejor análisis y calidad de diseño
- Derivación de pruebas más rápida
- Documentación clara, mejor mantenibilidad
Desventajas
- Esfuerzo de aprendizaje
- Riesgo de modelos excesivos
- Falta de obligatoriedad sin proceso y mantenimiento
- Posibles malentendidos con notación inconsistente
Preguntas típicas de examen (con respuesta breve)
- ¿Categorías principales de diagramas UML? Diagramas estructurales (clases, paquetes, componentes) y diagramas de comportamiento (actividad, secuencia, estados, casos de uso).
- ¿Diferencia entre agregación y composición? Agregación = relación todo-parte débil sin vinculación del ciclo de vida, composición = relación fuerte con duración compartida.
- ¿Usar OCL en UML? Para restricciones formales precisas como invariantes, precondiciones y postcondiciones, que se pueden convertir fácilmente en pruebas.
- *¿Cardinalidades 1, , 0..1? 1 = exactamente un elemento, * = cero a muchos elementos, 0..1 = elemento único opcional.
- ¿Delimitar sistemas en UML? A través de límites del sistema en el diagrama de casos de uso e interfaces de paquetes y componentes.
- ¿Derivar casos de prueba de UML? A partir de escenarios en diagramas de secuencia/actividades y condiciones OCL.
- ¿Usar generalización? Cuando se extraen propiedades comunes en una clase base, las especializaciones extienden u anulan.
- ¿Diagrama de clases correcto para IHK? Clases con nombres significativos, atributos con tipos y visibilidad, operaciones, relaciones con cardinalidades, roles.
Fuentes más importantes
- https://www.omg.org/spec/UML
- https://martinfowler.com/books/uml.html
- https://de.wikipedia.org/wiki/Unified_Modeling_Language



