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.
| Rama | Diagramas |
|---|---|
| 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 comportamiento | Secuencia, 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ón | Qué significa |
|---|---|
| Agregación | Contención lógica: una clase agrupa a otras, que pueden existir por su cuenta |
| Composición | Contención física, de todo y parte: si desaparece el todo, desaparecen las partes |
| Dependencia | Una 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ón | Una 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.
| Diagrama | A qué escala mira |
|---|---|
| Paquetes | Por encima del sistema: grandes agrupaciones |
| Estructura compuesta | Por dentro de una sola clase |
| Perfil | Sobre 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.
| Mecanismo | Para qué sirve | Cómo se escribe |
|---|---|---|
| Estereotipo | Añadir o modificar la semántica de un elemento, dándole especificidad | Entre comillas angulares dobles junto al elemento |
| Restricción | Imponer una condición que el modelo tiene que cumplir | Entre llaves, por ejemplo la que exige que una colección esté ordenada |
| Valor etiquetado | Añadir una propiedad con su valor a un elemento | Entre llaves, con la forma de propiedad igual a valor |
| Perfil | Agrupar los estereotipos, restricciones y valores etiquetados de un mismo ámbito | Como 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