El Lenguaje de Modelado Unificado (UML, por sus siglas en inglés) es el estándar internacional para especificar, visualizar, construir y documentar los artefactos de un sistema de software orientados a objetos.
1. Historia
El desarrollo de UML comenzó a mediados de la década de 1990 para resolver la “guerra de métodos” en la programación orientada a objetos:
- Los Creadores: Grady Booch, James Rumbaugh e Ivar Jacobson (conocidos colectivamente como los “Tres Amigos”) unificaron sus propios métodos conceptuales (Booch, OMT y OOSE) bajo la compañía Rational Software.
- Estandarización (1997): El Object Management Group (OMG) adoptó UML 1.1 como estándar de la industria.
- Evolución a UML 2.x: Con la liberación de UML 2.0 a mediados de los 2000, el lenguaje se expandió para dar mejor soporte al diseño de arquitecturas complejas, sistemas distribuidos y modelado de comportamiento en tiempo real, manteniéndose hasta hoy como el estándar definitivo.
2. Clasificación y Definiciones de los Diagramas UML
UML se divide principalmente en dos grandes categorías: Diagramas Estructurales (Estáticos) y Diagramas de Comportamiento (Dinámicos).
A. Diagramas Estructurales (Estáticos)
Representan la organización física y lógica del sistema, definiendo los elementos que lo componen sin considerar el factor tiempo.
- Diagrama de Clases: Muestra la estructura interna del sistema mediante sus clases, atributos, operaciones (métodos) y las relaciones entre ellas (herencia, asociación, composición, agregación).
- Diagrama de Objetos: Muestra una captura o “instancia” concreta de los objetos del sistema y sus relaciones en un momento específico del tiempo.
- Diagrama de Componentes: Describe cómo se dividen los módulos de software, librerías y ejecutable, mostrando las dependencias entre componentes.
- Diagrama de Despliegue: Representa la arquitectura física del hardware donde se ejecutará el software, incluyendo nodos, servidores y redes.
- Diagrama de Paquetes: Organiza los elementos del modelo en grupos lógicos o subsistemas para reducir la complejidad.
- Diagrama de Estructura Compuesta: Describe la estructura interna de un clasificador (como una clase o componente), especificando sus partes, puertos y conectores.
- Diagrama de Perfiles: Permite extender y personalizar las notaciones estándar de UML para dominios específicos (por ejemplo, ingeniería médica o financiera) usando estereotipos y etiquetas.
B. Diagramas de Comportamiento (Dinámicos)
Muestran cómo cambia el sistema con el tiempo, la interacción entre sus componentes y el flujo de datos o control.
Diagramas de Comportamiento General
- Diagrama de Casos de Uso: Describe la funcionalidad del sistema desde el punto de vista de los actores externos (usuarios u otros sistemas) y sus metas.
- Diagrama de Actividades: Muestra el flujo de trabajo o proceso paso a paso, con soporte para decisiones, ejecuciones paralelas y bucles (similar a un diagrama de flujo avanzado).
- Diagrama de Máquina de Estados: Representa los estados por los que pasa un objeto a lo largo de su ciclo de vida en respuesta a eventos externos.
Subcategoría: Diagramas de Interacción
Se enfocan en el intercambio de mensajes entre los objetos del sistema.
- Diagrama de Secuencia: Muestra la interacción entre objetos organizada en orden cronológico formal, destacando las líneas de vida de los componentes y la secuencia de mensajes en el tiempo.
- Diagrama de Comunicación (antes Colaboración): Enfocado en la organización estructural de los objetos que intercambian mensajes, enumerando estos según el orden en que ocurren.
- Diagrama de Tiempos (Timing): Centrado en los cambios de estado de los objetos a lo largo del tiempo sobre una escala temporal cuantitativa.
- Diagrama de Visión General de la Interacción: Una variante del diagrama de actividades cuyas nodos representan otros diagramas de interacción, útil para combinar flujos complejos.
