Saltar al contenido

UML: diagramas de estructura

Cómo se organizan los diagramas de UML 2.5 y para qué sirve cada uno de los de estructura: clases y sus relaciones, objetos, componentes, despliegue, paquetes, estructura compuesta y perfil.

Qué es UML y qué diagramas define

UML es el lenguaje de modelado con el que se documenta un sistema orientado a objetos. Es una notación, no una metodología: dice cómo se dibuja lo que se ha decidido, no cómo hay que llevar el proyecto.

En su versión 2.5 define catorce tipos de diagrama, repartidos en dos grandes ramas. Los diagramas de estructura describen cómo está hecho el sistema, es decir, qué piezas hay y cómo se relacionan, sin que pase el tiempo. Los diagramas de comportamiento describen qué ocurre: cómo se usa el sistema y cómo evoluciona.

RamaDiagramas
De estructura (7)Clases, objetos, paquetes, componentes, despliegue, estructura compuesta y perfil
De comportamiento (4)Casos de uso, actividad, máquina de estados e interacción
De interacción (4), dentro de comportamientoSecuencia, comunicación, tiempos e interaction overview

Los cuatro diagramas de interacción no son una tercera rama: cuelgan del diagrama de interacción, que es uno de los de comportamiento. Por eso la cuenta sale a catorce y no a quince.

UML 2.5: catorce diagramas

De estructura (7)

  • Clases
  • Objetos
  • Paquetes
  • Componentes
  • Despliegue
  • Estructura compuesta
  • Perfil

De comportamiento (4)

  • Casos de uso
  • Actividad
  • Máquina de estados
  • Interacción

De interacción (4), colgando del de interacción

  • Secuencia
  • Comunicación
  • Tiempos
  • Interaction overview

Para el examen

  • Qué es UML: una notación, no una metodología

  • Diagramas en UML 2.5: catorce

  • Reparto: siete de estructura y siete de comportamiento

  • Los cuatro de interacción: secuencia, comunicación, tiempos e interaction overview

El diagrama de clases

El diagrama de clases es el diagrama central de UML: en él todo son clases. Cada una se dibuja con su nombre, sus atributos y sus métodos, y las líneas que las unen expresan cómo se conocen entre ellas.

La relación básica es la asociación, que equivale a lo que en un modelo entidad-relación es una relación entre entidades. Ese paralelismo es útil para entenderlo, pero conviene no llevarlo demasiado lejos: el diagrama de clases modela objetos con comportamiento, no tablas.

Un atributo que apunta a otra clase y una asociación dibujada entre las dos son la misma cosa vista de dos formas. La asociación es la forma gráfica de decir que una clase guarda una referencia a la otra.

Para el examen

  • Su papel: es el diagrama central de UML

  • Qué muestra: clases con atributos y métodos, unidas por asociaciones

  • Qué es una asociación: una referencia entre objetos

Agregación, composición, dependencia y realización

Además de la asociación simple, el diagrama de clases distingue varios tipos de relación con significados distintos. Las dos primeras se parecen mucho y se preguntan justo por eso.

RelaciónQué significa
AgregaciónContención lógica: una clase agrupa a otras, que pueden existir por su cuenta
ComposiciónContención física, de todo y parte: si desaparece el todo, desaparecen las partes
DependenciaUna clase necesita a otra de forma puntual; para tener sentido conviene estereotiparla, porque es la que precisa qué semántica hay entre las dos
RealizaciónUna clase implementa una interfaz

La regla rápida para separar agregación de composición: en la agregación la parte sobrevive al todo, en la composición no. Un tema agrega preguntas, que existen aunque el tema se retire; un intento se compone de sus respuestas, que no significan nada sin él.

Para el examen

  • Agregación: contención lógica: la parte sobrevive al todo

  • Composición: la parte muere con el todo

  • Realización: una clase implementa una interfaz

  • Dependencia: conviene estereotiparla para saber de qué tipo es

El diagrama de objetos

El diagrama de objetos representa un ejemplo concreto del árbol de objetos que hay en memoria en un instante dado. Donde el diagrama de clases dice «un tema tiene muchas preguntas», el de objetos dice «este tema tiene estas tres preguntas».

No aporta información nueva sobre el modelo: es una fotografía de un caso particular, y su utilidad está en poder visualizarlo mejor. Es la herramienta a la que se recurre cuando una parte del diagrama de clases resulta difícil de entender en abstracto.

Clases frente a objetos, otra vez: el diagrama de clases describe lo que puede haber y el de objetos enseña lo que hay en un momento concreto.

Para el examen

  • Qué es: una fotografía de un caso concreto en memoria

  • Qué aporta: no añade información al modelo: ayuda a visualizarlo

Diagramas de componentes y de despliegue

Un componente es una idea de alto nivel: reúne varias clases y presta un servicio al resto del sistema. Está pensado para ser reutilizado, y por eso se define por lo que ofrece hacia fuera y no por lo que tiene dentro.

Un componente no suele ser autónomo del todo: además de ofrecer su servicio, normalmente necesita consumir el de otro. El diagrama de componentes dibuja precisamente esas dos caras y quién encaja con quién.

El diagrama de despliegue muestra la arquitectura del sistema desde otro ángulo: cómo se distribuyen físicamente los artefactos software, es decir, qué se instala y dónde.

Componentes y despliegue responden a preguntas distintas: el de componentes dice en qué piezas lógicas se divide el sistema, y el de despliegue dice en qué máquinas acaban esas piezas.

Para el examen

  • Componente: reúne clases y presta un servicio, y suele consumir el de otros

  • Diagrama de despliegue: en qué máquinas se instalan los artefactos

Paquetes, estructura compuesta y perfil

El diagrama de paquetes agrupa elementos: clases, componentes o cualquier otro elemento de UML. Sirve para poder mirar un sistema grande sin ahogarse en el detalle, y para dejar claras las dependencias entre grandes bloques.

El diagrama de estructura compuesta muestra la estructura interna de una clase y las colaboraciones que se dan dentro de ella. Es el que se usa cuando una sola clase esconde por dentro un montaje que merece explicarse aparte.

El diagrama de perfil sirve para adaptar UML a una plataforma concreta, como una tecnología empresarial de Java o el entorno de desarrollo de otro fabricante. Recoge las extensiones propias de esa plataforma para poder modelar con sus conceptos.

DiagramaA qué escala mira
PaquetesPor encima del sistema: grandes agrupaciones
Estructura compuestaPor dentro de una sola clase
PerfilSobre el propio lenguaje UML, para adaptarlo

Para el examen

  • Paquetes: agrupa elementos por encima del sistema

  • Estructura compuesta: el interior de una sola clase

  • Perfil: adapta UML a una plataforma concreta

Los mecanismos de extensión de UML

UML no se puede ampliar con símbolos nuevos, pero sí trae mecanismos previstos para añadir significado a los elementos que ya existen. Son cuatro y van en escalera: los tres primeros son piezas sueltas y el cuarto las empaqueta.

MecanismoPara qué sirveCómo se escribe
EstereotipoAñadir o modificar la semántica de un elemento, dándole especificidadEntre comillas angulares dobles junto al elemento
RestricciónImponer una condición que el modelo tiene que cumplirEntre llaves, por ejemplo la que exige que una colección esté ordenada
Valor etiquetadoAñadir una propiedad con su valor a un elementoEntre llaves, con la forma de propiedad igual a valor
PerfilAgrupar los estereotipos, restricciones y valores etiquetados de un mismo ámbitoComo un paquete estereotipado

El caso típico de estereotipo es marcar que una clase pertenece a la capa de interfaz de usuario. La clase sigue siendo una clase corriente y se dibuja igual; lo que aporta el estereotipo es decir de qué tipo de clase se trata dentro de este proyecto.

Un perfil no es un mecanismo más al mismo nivel que los otros tres: es el conjunto de todos ellos aplicado a un mismo ámbito. Por eso el diagrama de perfil es el que adapta UML a una plataforma concreta.

Para el examen

  • Estereotipo: entre comillas angulares dobles

  • Restricción y valor etiquetado: entre llaves

  • Perfil: los agrupa para un ámbito concreto