UML es un Lenguaje de Modelado Unificado basado en una notación gráfica que permite: especificar, construir, visualizar y documentar los objetos que forman un sistema software orientado a objetos.
UML representa la unificación de las notaciones de los métodos Booch, Objectory (Ivar Jacobson) y OMT (James Rumbaugh) siendo su sucesor directo y compatible. Igualmente, UML incorpora ideas de otros metodólogos entre los que
podemos incluir a Peter Coad, Derek Coleman, Ward Cunningham, David Harel, Richard Helm, Ralph Johnson, Stephen Mellor, Bertrand Meyer, Jim Odell, Kenny Rubin, Sally Shlaer, John Vlissides, Paul Ward, Rebecca Wirfs-Brock
y Ed Yourdon.
Algo que debe quedar bien claro es que se trata de una notación, es decir, reglas y recomendaciones para representar modelos. UML no es un proceso de desarrollo, entendido como el conjunto de pasos sistemáticos a seguir para
desarrollar software. UML nos va a permitir documentar y especificar los elementos creados mediante un lenguaje común describiendo modelos.
Surge la pregunta, ¿qué es eso del modelado? En todos los ámbitos de la ingeniería se construyen modelos para entender mejor el sistema que vamos a desarrollar. Así los arquitectos diseñan planos de edificios que más tarde
se van a construir. Los ingenieros industriales hacen diseños de automóviles. Por tanto, si hablamos de ingeniería del software, los ingenieros de software deberían hacer lo propio y construir modelos de los sistemas software.
Para la construcción de modelos, hay que centrarse en los detalles relevantes mientras se ignoran los demás, por lo cual con un único modelo no tenemos bastante. Varios modelos nos aportan diferentes vistas de un sistema para comprenderlo
desde varios puntos de vista. Así, UML recomienda nueve diagramas para representar los distintos puntos de vista de un sistema: Casos de Uso, Diagrama de Clases, Diagrama de Objetos, Diagrama de Secuencia, Diagrama de Colaboración,
Diagrama de Estados, Diagrama de Actividades, Diagrama de Componentes y Diagrama de Despliegue.
UML maneja un vocabulario que abarca tres clases de bloques: elementos, relaciones y diagramas.
- Los elementos son abstracciones que representan las entidades principales en un modelo,
- las relaciones son mecanismos para enlazar los elementos,
- los diagramas permiten manejar diferentes visualizaciones de conjuntos de elementos conectados entre sí.
UML ofrece cuatro clases de elementos: los estructurales, los de comportamiento, los de agrupación y los de anotación.
Elementos estructurales
Los elementos estructurales representan la parte estática del modelo e identifican las partes que lo forman. UML contempla siete tipos de elementos estructurales: clases, interfaces, colaboraciones, casos de uso, clases activas,
componentes y nodos. Durante el desarrollo del curso serán necesarios los siguientes:
- Las clases describen un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica. En la representación de clases y objetos distinguiremos uno de
otro subrayando el nombre del objeto, a diferencia de la clase cuyo nombre irá sin subrayar.
- Una interface es una colección de operaciones que especifica un servicio de una clase o componente, describiendo el comportamiento visible, parcial o total, de un elemento.
Elementos de comportamiento
Son la parte dinámica de UML y representan la forma de actuar del sistema, tanto en el tiempo como en el espacio. Hay dos clases de comportamiento:
- Diagrama de interacción que refleja el conjunto de mensajes que intercambian una colección de objetos dentro de un contexto particular con un propósito específico. El comportamiento involucra los elementos:
mensajes, secuencias de acción y ligas.
- Máquina de estados que especifica la secuencia de estados que un objeto o una interacción tiene durante su tiempo de vida al responder a eventos.
Elementos de agrupación
Son la parte organizacional de UML. Representan las partes en las que se puede descomponer un modelo, las cuales son llamadas paquetes. Los paquetes son un mecanismo de propósito general para organizar elementos en grupos.
En un paquete se pueden agrupar elementos estructurales, de comportamiento y otros. Es un elemento puramente conceptual, existe sólo en el tiempo de desarrollo.
Elementos de anotación
Sirven para documentar los modelos. Hablamos de las notas que utilizaremos para remarcar restricciones o comentarios a un elemento o a una colección de elementos.
Nos permiten modelar los enlaces existentes entre diferentes elementos estructurales, mostrando además información adicional como nombres de roles (identificación del papel que juegan cada elemento en la relación) ó
multiplicidad (restricción que limita el número de instancias de una clase que pueden estar relacionadas con la clase asociada).
UML maneja cuatro tipos de relaciones:
- Una dependencia es una relación semántica entre dos clases en la cual un cambio de un elemento puede afectar la semántica de otro (dependiente). Una asociación es una relación estructural
que describe un conjunto de ligas, las cuales representan conexiones a través de objetos. La agregación es una clase especial de asociación que representa una relación de estructura entre un conjunto
y sus partes. Se representa con un diamante en el extremo de la clase agregada.
- La generalización es una relación de especialización/generalización en la cual los objetos de un elemento especializado (hijos) son consistentes con los objetos de un elemento generalizable (el padre).
Modeliza el comportamiento de la herencia.
- Una realización es una relación semántica entre clasificadores, en donde un clasificador especifica un contrato que otro clasificador garantiza llevar a cabo. Básicamente modeliza el comportamiento existente
entre el interfaz y la clase que implementa el interfaz.
Un diagrama es la representación gráfica de un conjunto de elementos conectados entre sí. De los elementos vistos, un mismo elemento puede aparecer en uno, varios o ningún diagrama. UML incluye nueve tipos de diagramas
que son:
- Diagrama de Casos de Uso: modela la funcionalidad del sistema. agrupándola en descripciones de acciones ejecutadas por un sistema para obtener un resultado.
- Diagrama de Clases: muestra las clases que componen el sistema y cómo se relacionan entre sí.
- Diagrama de Objetos: muestra una serie de objetos y sus relaciones.
- Diagrama de Secuencia: Describe la interacción entre los objetos por medio de los mensajes que intercambian a lo largo del tiempo entre sí.
- Diagrama de Colaboración: Muestra la interacción entre los objetos resaltando la organización estructural de los objetos.
●Diagrama de Estados: modela el comportamiento de acuerdo con eventos.
●Diagrama de Actividades: simplifica el Diagrama de Estados modelando el comportamiento mediante flujos de actividades.
●Diagrama de Componentes: muestra la organización y las dependencias entre un conjunto de componentes.
●Diagrama de Despliegue: muestra los dispositivos que se encuentran en un sistema y su distribución en el mismo.