UML (Unified Modeling Language)
Este artículo es una explicación de conceptos sobre UML, incluyendo preguntas de examen, componentes clave y etiquetas.
En Pocas Palabras
UML es un lenguaje visual estandarizado para modelar software y sistemas. Ayuda a documentar requisitos, diseño y comunicación de manera consistente.
Descripción Técnica Compacta
UML separa estructura y comportamiento:
- Diagramas estructurales (ej. diagrama de clases, diagrama de paquetes, diagrama de componentes)
- Diagramas de comportamiento (ej. diagrama de actividades, diagrama de secuencias, diagrama de estados)
Relaciones:
- Asociación
- Agregación
- Composición
- Generalización
Las cardinalidades (multiplicidades) describen relaciones (ej. 1, 0..1, 0..*). Con OCL es posible formular restricciones de forma rigurosa (invariantes, precondiciones y postcondiciones), a partir de las cuales se pueden derivar pruebas.
Puntos Clave para el Examen
- Diagramas estructurales vs. diagramas de comportamiento: UML divide los diagramas en estas dos categorías principales. Los diagramas estructurales muestran la arquitectura estática (ej. diagrama de clases), los diagramas de comportamiento muestran la ejecución dinámica (ej. diagrama de secuencias).
- Distinguir correctamente las relaciones: Asociación, agregación, composición y generalización se notan de manera diferente y tienen semánticas distintas. La agregación y la composición se confunden frecuentemente en exámenes.
- Las cardinalidades son un punto típico en exámenes: Las multiplicidades como
1,0..1,1..*o*describen cuántos objetos intervienen en una relación. Las cardinalidades mal asignadas distorsionan el modelo. - Usar OCL para condiciones precisas: El Object Constraint Language formula restricciones rigurosas, precondiciones y postcondiciones. Los casos de prueba se derivan directamente de expresiones OCL.
- Modelar estados con guardias: Las guardias en diagramas de estados son condiciones que deben cumplirse para que ocurra una transición. Especifican con precisión el comportamiento de un sistema.
- Versionar, revisar y validar modelos: Los modelos UML son documentos vivos. Deben versionarse, revisarse regularmente y compararse con los requisitos para mantener su valor.
Componentes Clave
- Clase/Atributo/Operación + Visibilidad – Una clase modela un tipo de objeto. Los atributos describen datos, las operaciones el comportamiento. Las visibilidades como
+,-,#y~controlan el acceso (público, privado, protegido, paquete). - Relaciones (Asociación, Agregación, Composición) – La asociación es una conexión débil, la agregación es una relación “pertenece a” con dependencia de ciclo de vida débil, la composición expresa dependencia de ciclo de vida fuerte. En composición, las partes existen solo con el todo.
- Multiplicidades + Roles – Las multiplicidades indican cuántos objetos de una clase pueden vincularse con objetos de otra clase. Los roles nombran la función de una clase en una relación, ej. “Cliente” y “Pedido”.
- Paquetes/Espacios de Nombres – Los paquetes agrupan elementos de modelo relacionados y reducen la complejidad de modelos grandes. Ayudan a estructurar espacios de nombres y responsabilidades de manera clara.
- Componentes/Interfaces – Los diagramas de componentes muestran bloques de software y sus interfaces. Son especialmente relevantes para modelado de arquitectura y representación de dependencias.
- Actividad (Decisión, Paralelismo) – Los diagramas de actividades modelan procesos empresariales y flujos de trabajo. Las bifurcaciones, decisiones y paralelización con Fork/Join se representan aquí.
- Secuencia (Lifeline, Mensaje) – Los diagramas de secuencias muestran la interacción entre objetos a lo largo del tiempo. Las lifelines representan objetos, los mensajes la comunicación síncrona o asíncrona.
- Máquina de Estados (Guard, Entry/Exit) – Los diagramas de estados describen el comportamiento de un objeto mediante estados y transiciones. Las acciones Entry, Exit y las guardias especifican cuándo se entra, se sale o se cambian estados.
- Estereotipos/Perfiles – Los estereotipos extienden elementos UML con significados específicos del dominio. Los perfiles recopilan estereotipos y reglas para áreas de aplicación particulares, ej. sistemas de tiempo real.
- OCL + Derivación de Pruebas – OCL permite afirmaciones precisas y rigurosas sobre modelos. Las invariantes, precondiciones y postcondiciones pueden usarse directamente como base para pruebas automatizadas.
Ejemplo Práctico (Biblioteca)
Diagrama de clases:
Lector 1..* Préstamo
Medio 1..* Préstamo
Préstamo: fechaInicio, fechaFin
Invariante OCL:
fechaFin > fechaInicio
Ventajas y Desventajas
Ventajas
- Lenguaje común entre analistas y equipo técnico
- Detección más temprana de errores
- Mejor derivación de pruebas
- Documentación clara
Desventajas
- Esfuerzo de aprendizaje
- Riesgo de modelos excesivamente complejos
- Sin mantenimiento, pierde valor
Preguntas Típicas de Examen (con Respuesta Breve)
- ¿Categorías principales de diagramas UML? Diagramas estructurales y diagramas de comportamiento.
- ¿Agregación vs. Composición? Agregación débil; composición vincula el ciclo de vida.
- ¿Para qué se usa OCL? Restricciones rigurosas → pruebas.
Respuesta Abierta
Para el examen: usa pocos diagramas, pero hazlos correctos y consistentes. Las cardinalidades y relaciones deben alinearse con las reglas empresariales. Los modelos deben versionarse y vincularse con requisitos y casos de prueba.
Estrategia de Aprendizaje
- Inicio de comprensión: Compara un diagrama de clases concreto con un diagrama de secuencias para el mismo caso de uso.
- Método de profundización: Modela un pequeño proyecto en varios tipos de diagramas y verifica la consistencia.
- Entrenamiento enfocado en examen: Practica la distinción entre agregación y composición y las multiplicidades típicas.
- Prevención de errores: Mantén la nomenclatura, multiplicidades y relaciones consistentes en todos los diagramas.
Ejemplo de Ejercicio 1: Diagrama de Clases para una Biblioteca
Modela las clases Lector, Medio y Préstamo. Un Préstamo vincula lector y medio. Las multiplicidades son 1..* entre lector y préstamo, así como entre medio y préstamo, porque un lector puede tener varios préstamos y un medio puede estar en varios préstamos.
Ejemplo de Ejercicio 2: Reconocer Agregación vs. Composición
Una universidad tiene facultades (agregación: las facultades pueden existir independientemente). Un coche tiene un motor (composición: sin el coche el motor no existe en este contexto). La agregación es débil, la composición vincula el ciclo de vida.
Ejemplo de Ejercicio 3: Formular una Invariante OCL
Una transferencia bancaria tiene la invariante: monto > 0. En OCL: context Transferencia inv: self.monto > 0. De aquí se derivan casos de prueba que marcan montos negativos como inválidos.
Tarea de Ejercicio 1: Determinar el Tipo de Diagrama
¿Qué diagrama UML muestra el intercambio de mensajes entre objetos a lo largo del tiempo?
Solución: El diagrama de secuencias. Representa lifelines y mensajes en orden temporal.
Tarea de Ejercicio 2: Identificar la Relación
Una empresa consta de departamentos que se disuelven cuando la empresa se disuelve. ¿Qué relación existe?
Solución: Se trata de una composición. Los departamentos no pueden existir sin la empresa.
Ejercicio 3: Derivar un test de OCL
Una clase Buchung tiene un atributo datum. Formula una invariante OCL y un caso de prueba que se derive de ella.
Solución: Invariante: context Buchung inv: self.datum <= heute. Caso de prueba: Una reserva con una fecha futura se rechaza como inválida.
Análisis temático
- Núcleo técnico: Tipos de diagramas, relaciones y cardinalidades. UML proporciona una notación unificada para el diseño estructural y dinámico. Las relaciones y multiplicidades correctas son la base de un modelo válido.
- Desafíos de implementación: Consistencia entre diferentes diagramas. Un diagrama de clases debe coincidir con los mensajes en el diagrama de secuencia y con los estados en el diagrama de estados. Las inconsistencias generan malentendidos e implementación defectuosa.
- Implicaciones de seguridad: Invariantes OCL como validación temprana. Las restricciones formales ayudan a detectar estados inválidos en una fase inicial y pueden convertirse en tests automatizados.
- Obligaciones de documentación: Versionar modelos y vincularlos con requisitos. Los diagramas UML forman parte de la documentación del proyecto. Deben ser comprensibles, versionados y estar vinculados con requisitos y casos de prueba.
- Evaluación económica: Esfuerzo de modelado frente a ahorro en costos de errores. UML requiere tiempo y capacitación, pero evita errores costosos mediante mejor comunicación y planificación en etapas tempranas.
Fuentes principales
FAQ: Fundamentos de UML, tipos de diagramas y notación
1. ¿Qué es UML?
2. ¿Cuáles son las categorías principales de diagramas UML?
3. ¿Qué es un diagrama de clases?
4. ¿Qué es un diagrama de secuencia?
5. ¿Qué es un diagrama de actividades?
6. ¿Qué es un diagrama de estados?
7. ¿Qué es una asociación?
8. ¿Qué es una agregación?
9. ¿Qué es una composición?
10. ¿Qué es una generalización?
11. ¿Qué significan las cardinalidades?
1, 0..1, 1..* y *.12. ¿Qué es OCL?
13. ¿Para qué se utilizan las invariantes OCL?
14. ¿Qué es un diagrama de paquetes?
15. ¿Qué es un diagrama de componentes?
16. ¿Qué es un diagrama de casos de uso?
17. ¿Qué es una línea de vida?
18. ¿Qué es una guardia?
[betrag > 0].19. ¿Qué es un estereotipo?
<<interface>> o <<abstract>>.20. ¿Cuál es la diferencia entre un mensaje síncrono y uno asíncrono?
21. ¿Qué es un diagrama estructural?
22. ¿Qué es un diagrama de comportamiento?
23. ¿Qué significa la visibilidad en UML?
+ indica public, - private, # protected y ~ package. Influye en la encapsulación y reutilizabilidad.24. ¿Por qué deben versionarse los modelos UML?
25. ¿Cómo se pueden derivar pruebas a partir de modelos UML?
Continúa en la ruta de aprendizaje de UML
El siguiente artículo en la ruta de aprendizaje de UML cubre Diagrama de clases: clases, atributos, métodos, herencia, asociación, agregación, composición — los detalles sobre diagramas de clases y sus relaciones.



