Skip to content
IRC-CodingIRC-Coding
UMLDiagrama de ClasesDiagrama de SecuenciaDiagrama de ActividadOCLCardinalidades

UML Fundamentos: Diagramas, Relaciones y Cardinalidades

Aprende UML: diagramas estructurales y de comportamiento, relaciones, cardinalidades, OCL, derivación de pruebas y preguntas de examen.

S

schutzgeist

10 min read
UML Fundamentos: Diagramas, Relaciones y Cardinalidades

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

  1. 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).
  2. 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.
  3. 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”.
  4. 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.
  5. 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.
  6. 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í.
  7. 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.
  8. 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.
  9. 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.
  10. 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)

  1. ¿Categorías principales de diagramas UML? Diagramas estructurales y diagramas de comportamiento.
  2. ¿Agregación vs. Composición? Agregación débil; composición vincula el ciclo de vida.
  3. ¿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

  1. Inicio de comprensión: Compara un diagrama de clases concreto con un diagrama de secuencias para el mismo caso de uso.
  2. Método de profundización: Modela un pequeño proyecto en varios tipos de diagramas y verifica la consistencia.
  3. Entrenamiento enfocado en examen: Practica la distinción entre agregación y composición y las multiplicidades típicas.
  4. 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

  1. https://www.omg.org/spec/UML
  2. https://martinfowler.com/books/uml.html

FAQ: Fundamentos de UML, tipos de diagramas y notación

1. ¿Qué es UML?

UML es el acrónimo de Unified Modeling Language. Es un lenguaje de modelado gráfico estandarizado para describir, planificar y documentar sistemas de software y procesos empresariales.

2. ¿Cuáles son las categorías principales de diagramas UML?

Los diagramas UML se dividen en diagramas estructurales y diagramas de comportamiento. Los diagramas estructurales muestran la composición estática, mientras que los de comportamiento representan el flujo dinámico.

3. ¿Qué es un diagrama de clases?

Un diagrama de clases es un diagrama estructural que representa clases, sus atributos, operaciones y relaciones entre ellas. Forma la estructura estática fundamental de un sistema.

4. ¿Qué es un diagrama de secuencia?

Un diagrama de secuencia es un diagrama de comportamiento que representa el orden temporal en que se intercambian mensajes entre objetos. Las líneas de vida representan objetos y las flechas indican los mensajes.

5. ¿Qué es un diagrama de actividades?

Un diagrama de actividades modela procesos, flujos de trabajo y decisiones. Muestra actividades, bifurcaciones, paralelizaciones y el flujo de una actividad a la siguiente.

6. ¿Qué es un diagrama de estados?

Un diagrama de estados muestra los estados que un objeto puede adoptar durante su ciclo de vida, así como los eventos y condiciones que desencadenan transiciones entre estados.

7. ¿Qué es una asociación?

Una asociación es una relación débil entre dos clases. Indica que los objetos de las clases involucradas se relacionan sin que su ciclo de vida dependa uno del otro.

8. ¿Qué es una agregación?

Una agregación es una relación de “pertenencia” en la que las partes pueden existir independientemente del todo. Se representa con un rombo vacío en el lado del todo.

9. ¿Qué es una composición?

Una composición es una relación fuerte de “pertenencia” en la que las partes no pueden existir sin el todo. Se representa con un rombo relleno en el lado del todo.

10. ¿Qué es una generalización?

Una generalización describe una relación de herencia. Una clase especializada hereda atributos y operaciones de una clase más general y puede extenderlos u omitirlos.

11. ¿Qué significan las cardinalidades?

Las cardinalidades especifican cuántos objetos de una clase pueden relacionarse con cuántos objetos de otra clase. Valores típicos son 1, 0..1, 1..* y *.

12. ¿Qué es OCL?

OCL es el acrónimo de Object Constraint Language. Es un lenguaje formal para describir con precisión restricciones, invariantes, y condiciones previas y posteriores en modelos UML.

13. ¿Para qué se utilizan las invariantes OCL?

Las invariantes OCL formulan condiciones que deben mantenerse en todo momento. A partir de ellas se pueden derivar casos de prueba para verificar la corrección de un sistema.

14. ¿Qué es un diagrama de paquetes?

Un diagrama de paquetes agrupa elementos del modelo en paquetes y muestra sus dependencias. Ayuda a estructurar sistemas grandes de manera clara y define espacios de nombres.

15. ¿Qué es un diagrama de componentes?

Un diagrama de componentes muestra componentes de software, sus interfaces y dependencias. Se utiliza con frecuencia para modelado de arquitectura y planificación de sistemas grandes.

16. ¿Qué es un diagrama de casos de uso?

Un diagrama de casos de uso muestra las funcionalidades de un sistema desde la perspectiva de los actores. Modela qué roles interactúan con el sistema y qué casos de uso desencadenan.

17. ¿Qué es una línea de vida?

Una línea de vida es una línea discontinua en un diagrama de secuencia que representa la existencia de un objeto o rol durante una interacción. Es la base para el intercambio de mensajes.

18. ¿Qué es una guardia?

Una guardia es una condición entre corchetes en una transición de estado. La transición solo se ejecuta si la condición es verdadera, por ejemplo [betrag > 0].

19. ¿Qué es un estereotipo?

Un estereotipo extiende un elemento UML con un significado específico. Se escribe entre comillas angulares dobles, por ejemplo <<interface>> o <<abstract>>.

20. ¿Cuál es la diferencia entre un mensaje síncrono y uno asíncrono?

Un mensaje síncrono bloquea al remitente hasta que el receptor completa el procesamiento. Un mensaje asíncrono permite que el remitente continúe inmediatamente, mientras el receptor procesa el mensaje más adelante.

21. ¿Qué es un diagrama estructural?

Un diagrama estructural muestra la composición estática de un sistema, es decir, clases, objetos, componentes, paquetes y sus relaciones. Ejemplos son el diagrama de clases, de componentes y de paquetes.

22. ¿Qué es un diagrama de comportamiento?

Un diagrama de comportamiento describe el flujo dinámico de un sistema. Incluye diagramas de actividades, secuencia, estados y casos de uso.

23. ¿Qué significa la visibilidad en UML?

La visibilidad controla el acceso a atributos y operaciones. + indica public, - private, # protected y ~ package. Influye en la encapsulación y reutilizabilidad.

24. ¿Por qué deben versionarse los modelos UML?

Los modelos UML cambian a lo largo del proyecto. Una versionación permite rastrear estados anteriores, revisar cambios y garantizar la consistencia con requisitos y pruebas.

25. ¿Cómo se pueden derivar pruebas a partir de modelos UML?

A partir de invariantes OCL, condiciones previas y posteriores, así como de las relaciones y cardinalidades definidas, se pueden desarrollar casos de prueba específicos. Por ejemplo, una prueba verifica que una composición realmente elimina las partes al borrar el todo.

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.

Volver al blog
Share:

Nächster Artikel in Arquitectura de Software

Weiterlesen
Use Case Diagram: actores, include/extend y límites

Entradas relacionadas