Tutorial de diagramas de UML

18 min

Una imagen vale más que mil palabras. Por eso se creó el Lenguaje de Modelado Unificado (UML): para proporcionar un lenguaje visual común en el complejo mundo del desarrollo de software que también fuera comprensible para los usuarios de negocios y cualquiera que desee entender un sistema. Esta guía cubre todo lo que necesitas saber sobre UML. Incluso si conociste UML en una capacitación formal y no lo has usado mucho desde entonces, sigue siendo una forma práctica de mantener comprensibles los sistemas complejos, especialmente cuando se usa como documentación viva en lugar de un entregable único.

¿Qué es UML?

El Lenguaje de Modelado Unificado (UML) se creó para forjar un lenguaje de modelado visual común y con una gran riqueza semántica y sintáctica para la arquitectura, el diseño y la implementación de sistemas de software complejos, tanto en su estructura como en su comportamiento.

Es análogo a los planos utilizados en otros campos y consta de diferentes tipos de diagramas. En conjunto, los diagramas de UML describen el límite, la estructura y el comportamiento del sistema y de los objetos que contiene. Cuando escribes código, hay miles de líneas en una aplicación y es difícil realizar un seguimiento de las relaciones y jerarquías dentro de un sistema de software. Los diagramas de UML dividen ese sistema de software en componentes y subcomponents.

Existen cuatro categorías de modelos para la resolución de problemas: lenguajes imperativos, funcionales, declarativos y orientados a objetos. En los lenguajes orientados a objetos, los algoritmos se expresan mediante la definición de "objetos" y haciendo que estos interactúen entre sí. Esos objetos son elementos que se pueden manipular y existen en el mundo real. Pueden ser edificios, elementos de una pantalla (widgets) o seres humanos.

Los lenguajes orientados a objetos dominan el mundo de la programación porque modelan objetos del mundo real. UML es una combinación de varias notaciones orientadas a objetos: diseño orientado a objetos, técnica de modelado de objetos e ingeniería de software orientada a objetos.

UML aprovecha las fortalezas de estos tres enfoques para presentar una metodología más consistente y fácil de usar. UML representa las mejores prácticas para crear y documentar diferentes aspectos del modelado de sistemas de software y de negocios. Dado que UML está estandarizado, se puede aplicar en diversos lenguajes de programación y procesos de desarrollo, lo que hace que sea ampliamente comprensible para la mayoría de los desarrolladores de software.

En la práctica, UML también es una forma de documentación visual que puede reducir el tiempo dedicado a volver a explicar un sistema. Esta documentación puede ayudar a los ingenieros de muchas maneras, desde la incorporación de nuevos empleados hasta brindarles a las partes interesadas un panorama rápido del sistema para que los desarrolladores no pierdan tiempo en reuniones.

Historia y orígenes de UML

Grady Booch, James Rumbaugh e Ivar Jacobson, también conocidos como "Los tres amigos" de la ingeniería de software, se unieron para ofrecer claridad a los programadores mediante la creación de nuevos estándares.

Los esfuerzos de este grupo dieron como resultado la publicación de los documentos de UML 0.9 y 0.91 en 1996. Pronto quedó claro que varias organizaciones, incluidas Microsoft, Oracle e IBM, consideraban que UML era fundamental para el desarrollo de sus propios negocios. Junto con muchas otras personas y empresas, establecieron recursos para desarrollar un lenguaje de modelado completo. Los tres amigos publicaron El manual de usuario del Lenguaje de Modelado Unificado en 1999 y una actualización en 2005, que incluye UML 2.0.

 

El papel del Object Management Group (OMG) en UML

Según su sitio web, el Object Management Group® (OMG®) es un consorcio internacional de estándares tecnológicos, sin fines de lucro y de membresía abierta, fundado en 1989. Los estándares del OMG son impulsados por proveedores, usuarios finales, instituciones académicas y agencias gubernamentales. Los grupos de trabajo del OMG desarrollan estándares de integración empresarial para una amplia gama de tecnologías y una variedad aún mayor de industrias. Los estándares de modelado del OMG, incluidos el UML y la Model Driven Architecture® (MDA®), permiten un potente diseño visual, ejecución y mantenimiento de software y otros procesos.

El OMG supervisa la definición y el mantenimiento de las especificaciones de UML. Esta supervisión brinda a los ingenieros y programadores la capacidad de usar un solo lenguaje para muchos propósitos durante todas las fases del ciclo de vida del software para sistemas de todos los tamaños.

El OMG define el propósito de UML de la siguiente manera:

  • Proporcionar a los arquitectos de sistemas, ingenieros de software y desarrolladores de software herramientas para el análisis, diseño e implementación de sistemas basados en software, así como para el modelado de procesos de negocio y similares.

  • Hacer avanzar el estado de la industria al permitir la interoperabilidad de las herramientas de modelado visual de objetos. Sin embargo, para permitir un intercambio significativo de información de modelos entre herramientas, se requiere un acuerdo sobre la semántica y la notación.

UML cumple con los siguientes requisitos:

  • Establecer una definición formal de un metamodelo común basado en la Meta-Object Facility (MOF) que especifique la sintaxis abstracta de UML. La sintaxis abstracta define el conjunto de conceptos de modelado de UML, sus atributos y sus relaciones, así como las reglas para combinar estos conceptos a fin de construir modelos de UML parciales o completos.

  • Proporcionar a la computadora una explicación detallada de la semántica de cada concepto de modelado de UML. La semántica define, de una manera independiente de la tecnología, cómo las computadoras deben ejecutar los conceptos de UML.

  • Especificar los elementos de notación legibles por humanos para representar los conceptos individuales de modelado de UML, así como las reglas para combinarlos en una variedad de diferentes tipos de diagramas correspondientes a diferentes aspectos de los sistemas modelados.

  • Definir las formas en que las herramientas de UML pueden cumplir con esta especificación. Esto se respalda (en una especificación separada) con una especificación basada en XML de los formatos de intercambio de modelos correspondientes (XMI) que deben implementar las herramientas compatibles.

 

Tipos de diagramas de UML

UML utiliza elementos y los asocia de diferentes maneras para formar diagramas estáticos (que representan aspectos estructurales de un sistema) y diagramas de comportamiento (que representan aspectos dinámicos de un sistema). Para los no iniciados, puede parecer que hay una cantidad infinita de diagramas de UML, pero en realidad, los estándares de UML identifican 14 tipos de diagramas que se dividen en dos grupos, los cuales se definen a continuación.

Diagramas de UML estructurales

  • Diagrama de clases: este es el diagrama de UML más utilizado y la base principal de cualquier solución orientada a objetos. Muestra las clases dentro de un sistema, sus atributos y operaciones, y la relación entre cada clase. Las clases se agrupan para crear diagramas de clases al diagramar sistemas grandes. Una clase se representa mediante un rectángulo que contiene tres compartimentos apilados verticalmente: el compartimento superior contiene el nombre de la clase y es obligatorio, pero los dos compartimentos inferiores detallan los atributos de la clase y las operaciones o comportamientos de la clase.

  • Diagrama de componentes: un diagrama de componentes es esencialmente una versión más especializada del diagrama de clases; se aplican las mismas reglas de notación para ambos. Un diagrama de componentes divide un sistema complejo en componentes más pequeños y visualizes la relación entre esos componentes.

  • Diagrama de estructura compuesta: estos tipos de diagramas son esencialmente los planos de la estructura interna de un clasificador. También se pueden usar para mostrar el comportamiento de una colaboración o las interacciones del clasificador con su entorno a través de puertos. Pueden representar fácilmente los componentes internos de cualquier hardware para comprender más a fondo su funcionamiento interno.

  • Diagrama de despliegue: estos diagramas son de gran utilidad para los ingenieros de sistemas y, por lo general, muestran el rendimiento, la escalabilidad, la mantenibilidad y la portabilidad. Cuando los componentes de hardware se muestran en relación entre sí, es más fácil realizar un seguimiento de toda la red de hardware y asegurarse de que se tengan en cuenta todos los elementos en un despliegue.

  • Diagrama de objetos: los diagramas de objetos muestran ejemplos de estructuras de datos en un momento específico. Podrías usar un diagrama de clases para mostrar una estructura y luego usar diagramas de objetos como casos de prueba para verificar que tu diagrama de clases esté completo. O bien, podrías crear un diagrama de objetos para descubrir información sobre los elementos del modelo y sus enlaces.

  • Diagrama de paquetes: los diagramas de paquetes se utilizan para mostrar las dependencias entre los diferentes paquetes de un sistema. Un paquete, representado como una carpeta de archivos, organiza los elementos del modelo, como casos de uso o clases, en grupos. Existen dos tipos especiales de dependencias definidas entre paquetes: la importación de paquetes y la fusión de paquetes.

  • Diagramas de perfil: los diagramas de perfil también forman parte del estándar UML y se utilizan principalmente cuando necesitas adaptar UML a un dominio particular. Añadidos recientemente a UML 2.0, los diagramas de perfil son únicos y rara vez se utilizan en alguna especificación. Un diagrama de perfil se entiende mejor como un mecanismo de extensibilidad para personalizar modelos de UML para dominios y plataformas específicos.

Diagramas de UML de comportamiento

  • Diagramas de actividades: los diagramas de actividades se utilizan como alternativa a los diagramas de máquina de estados. Los diagramas de actividades visualizan los pasos realizados en un caso de uso; las actividades pueden ser secuenciales, ramificadas o concurrentes. Este tipo de diagrama de UML se utiliza para mostrar el comportamiento dinámico de un sistema, pero también puede ser útil en el modelado de procesos de negocio.

  • Diagrama de comunicación: los diagramas de comunicación, que antes se denominaban diagramas de colaboración, muestran cómo se relacionan los objetos entre sí. Modelan la forma en que los objetos se asocian y se conectan a través de mensajes dentro del diseño arquitectónico de un sistema. También pueden mostrar escenarios alternativos dentro de casos de uso u operaciones que requieren la colaboración de diferentes objetos e interacciones.

  • Diagrama de descripción general de la interacción: este diagrama ofrece una visión general del flujo de control entre los nodos que interactúan. Incluyen nodos iniciales, nodos finales de flujo, nodos finales de actividad, nodos de decisión, nodos de fusión, nodos de bifurcación y nodos de unión.

  • Diagrama de secuencia: un diagrama de secuencia, a veces denominado diagrama de eventos o escenario de eventos, muestra el orden en que interactúan los objetos. De esta manera, puedes representar visualmente escenarios simples en tiempo de ejecución.

  • Diagrama de estados: los diagramas de estados, en pocas palabras, representan estados y transiciones. Un estado se refiere a las diferentes combinaciones de información que puede tener un objeto, y este diagrama de UML puede visualizar todos los estados posibles y la forma en que el objeto transiciona de un estado al siguiente.

  • Diagrama de tiempos: a menudo descrito como un diagrama de secuencia invertido, un diagrama de tiempos muestra cómo interactúan los objetos entre sí en un período de tiempo determinado. Utiliza estos diagramas para ver cuánto tiempo lleva cada paso de un proceso y encontrar áreas de mejora.

  • Diagrama de casos de uso: los diagramas de casos de uso modelan cómo los usuarios, representados como figuras de palitos llamadas "actores", interactúan con el sistema. Este tipo de diagrama de UML debe ser una descripción general de alto nivel de las relaciones entre los actores y los sistemas, por lo que puede ser una excelente herramienta para explicar tu sistema a una audiencia no técnica.

 

Glosario de términos de UML

Familiarízate con el vocabulario de UML con esta lista extraída del documento UML 2.4.1, destinada a ayudar a quienes no son miembros del OMG a comprender los términos de uso común.

  • Cumplimiento de sintaxis abstracta: los usuarios pueden mover modelos entre diferentes herramientas, incluso si utilizan notaciones distintas.

  • Common Warehouse Metamodel (CWM): interfaces estándar que se utilizan para permitir el intercambio de metadatos de almacén e inteligencia empresarial entre herramientas de almacén, plataformas de almacén y repositorios de metadatos de almacén en entornos distribuidos y heterogéneos.

  • Cumplimiento de sintaxis concreta: los usuarios pueden seguir utilizando una notación con la que estén familiarizados en diferentes herramientas.

  • Núcleo: en el contexto de UML, el núcleo generalmente se refiere al "paquete central", que es un metamodelo completo diseñado especialmente para una alta reutilización.

  • Unidad de lenguaje: consta de una colección de conceptos de modelado estrechamente vinculados que brindan a los usuarios la capacidad de representar aspectos del sistema en estudio de acuerdo con un paradigma o formalismo particular.

  • Nivel 0 (L0): nivel de cumplimiento inferior para la infraestructura de UML, una única unidad de lenguaje que permite modelar los tipos de estructuras basadas en clases que se encuentran en la mayoría de los lenguajes de programación orientados a objetos más populares.

  • Meta Object Facility (MOF): una especificación de modelado del OMG que proporciona la base para las definiciones de metamodelos en la familia de lenguajes MDA del OMG.

  • Metamodelo: define el lenguaje y los procesos a partir de los cuales se forma un modelo.

  • Metamodel Constructs (LM): segundo nivel de cumplimiento en la infraestructura de UML, una unidad de lenguaje adicional para estructuras basadas en clases más avanzadas que se utilizan para construir metamodelos (usando CMOF), como el propio UML. UML solo tiene dos niveles de cumplimiento.

  • Model Driven Architecture (MDA): un enfoque y un plan para lograr un conjunto cohesivo de especificaciones tecnológicas impulsadas por modelos.

  • Object Constraint Language (OCL): un lenguaje declarativo para describir reglas que se aplican al Lenguaje de Modelado Unificado. El OCL complementa a UML al proporcionar términos y símbolos de diagramas de flujo que son más precisos que el lenguaje natural, pero menos difíciles de dominar que las matemáticas.

  • Object Management Group (OMG): un consorcio de especificaciones de la industria informática, sin fines de lucro, cuyos miembros definen y mantienen la especificación de UML.

  • UML 1: primera versión del Lenguaje de Modelado Unificado.

  • Lenguaje de Modelado Unificado (UML): un lenguaje visual para especificar, construir y documentar los artefactos de los sistemas.

  • XMI: una especificación basada en XML de los formatos de intercambio de modelos correspondientes.

 

Conceptos de modelado especificados por UML

El desarrollo de sistemas se centra en tres modelos de sistema generales diferentes:

  • Funcional: estos son diagramas de casos de uso, que describen la funcionalidad del sistema desde el punto de vista del usuario.
  • De objetos: estos son diagramas de clases, que describen la estructura del sistema en términos de objetos, atributos, asociaciones y operaciones.
  • Dinámico: los diagramas de interacción, los diagramas de máquina de estados y los diagramas de actividades se utilizan para describir el comportamiento interno del sistema.

Estos modelos de sistema se visualizan a través de dos tipos diferentes de diagramas: estructurales y de comportamiento.

 

Conceptos orientados a objetos en UML

Los objetos en UML son entidades del mundo real que existen a nuestro alrededor. En el desarrollo de software, los objetos se pueden usar para describir o modelar el sistema que se está creando en términos que sean relevantes para el dominio. Los objetos también permiten la descomposición de sistemas complejos en componentes comprensibles que permiten construir una pieza a la vez.

A continuación, se presentan algunos conceptos fundamentales de un mundo orientado a objetos:

  • Objetos: representan una entidad y el bloque de construcción básico.
  • Clase: plano de un objeto.
  • Abstracción: comportamiento de una entidad del mundo real.
  • Encapsulamiento: mecanismo para agrupar los datos y ocultarlos del mundo exterior.
  • Herencia: mecanismo para crear nuevas clases a partir de una existente.
  • Polimorfismo: define el mecanismo para existir en diferentes formas.

En los equipos modernos, especialmente en aquellos que practican Agile, estos conceptos orientados a objetos suelen ser más fáciles de comunicar cuando los diagramas se tratan como "documentación central" y se actualizan junto con el código, en lugar de crearse una sola vez y dejar que queden obsoletos.

 

Por qué los equipos todavía usan diagramas de UML (especialmente en Agile)

Si has tenido algún tipo de capacitación formal en código, es probable que te hayan presentado los diagramas de UML en la escuela. Pero ¿cuánto los has usado después de ese momento? Debido a que los diagramas de UML toman algo de tiempo en construirse y se vuelven obsoletos con bastante rapidez en un entorno Agile, muchos desarrolladores de software se han olvidado de ellos.

Esa preocupación es válida: los diagramas que no evolucionan con un proyecto pierden valor rápidamente. Sin embargo, cuando se mantienen actualizados, UML puede acelerar el desarrollo y aclarar la comunicación. Aunque muchos ingenieros temen a los diagramas, estos son útiles en un entorno de desarrollo Agile. Mantienen el desarrollo productivo y enfocado. En lugar de pensar en ellos como algo que "sería bueno tener", trata a tus diagramas de UML como aspectos centrales de la documentación.

Los diagramas de UML pueden ayudar a los equipos de ingeniería a lo siguiente:

  • Poner al día rápidamente a los nuevos miembros del equipo o a los desarrolladores que cambian de equipo.

  • Navegar por el código fuente.

  • Planificar nuevas funciones antes de que se realice cualquier programación.

  • Comunicarse más fácilmente con audiencias técnicas y no técnicas.

Sin embargo, los diagramas que no evolucionan con un proyecto son inútiles, por lo que es necesario contar con diagramas en constante evolución. Una forma en que los equipos reducen la carga de mantenimiento es generando diagramas a partir de entradas más ligeras (por ejemplo, definiciones basadas en texto) para que la documentación se mantenga elástica a medida que cambia el sistema. Lucidchart puede generar diagramas de secuencia de UML a partir de marcado de texto, lo que hace que la creación de diagramas sea automática y elástica.

Cómo hacer un diagrama de UML

Los diagramas de UML siguen un conjunto específico de reglas y formas, y podrías pasar una cantidad significativa de tiempo aprendiendo cómo construir correctamente cada tipo. Por suerte, te lo hemos puesto fácil con tutoriales sencillos, empezando por los diagramas de clases, que te guiarán por el proceso paso a paso.

Independientemente de las herramientas, el flujo de trabajo práctico es consistente: elige el tipo de diagrama que coincida con tu pregunta (estructura frente a comportamiento), modela solo lo que necesitas para la audiencia actual y vuelve a consultar el diagrama a medida que cambien el código y los requisitos. Ya sea que estés mapeando la arquitectura estática de un nuevo sistema de software o visualizando interacciones dinámicas de los usuarios, sigue estos pasos para construir un modelo efectivo:

1. Define tu objetivo

Determina exactamente qué necesitas visualizar. Pregúntate si necesitas mapear la estructura estática de un sistema (estructural) o mostrar cómo interactúan los componentes y cambian con el tiempo (de comportamiento).

2. Elige el tipo de diagrama adecuado

Según los requisitos de tu sistema, selecciona el diagrama de UML adecuado. Por ejemplo, usa un diagrama de clases para la estructura del sistema orientado a objetos, un diagrama de secuencia para las interacciones ordenadas por tiempo o un diagrama de casos de uso para ilustrar la funcionalidad del usuario. (Consejo: empezar con una de las plantillas de UML prediseñadas de Lucidchart es la forma más rápida de comenzar).

3. Habilita las bibliotecas de figuras de UML

Debido a que UML utiliza un vocabulario visual estricto, necesitas los símbolos correctos. En Lucidchart, haz clic en "Más figuras" en la parte inferior del menú de la izquierda, busca "UML" y marca las casillas de las bibliotecas de figuras específicas que necesites (por ejemplo, clase UML, estado UML, secuencia UML).

4. Agrega y define tus figuras

Arrastra y suelta entidades, objetos, nodos o actores en tu lienzo. Organízalos de forma lógica y haz clic dos veces dentro de las figuras para agregar texto personalizado, atributos específicos y operaciones a tus objetos.

5. Conecta tus componentes

Establece relaciones entre tus entidades trazando líneas entre ellas. Personaliza los extremos de las líneas (puntas de flecha, rombos, etc.) para reflejar con precisión las relaciones específicas de UML, como herencia, composición, dependencias o asociaciones básicas.

6. Revisa y colabora

UML está diseñado para servir como un lenguaje compartido entre desarrolladores, ingenieros y partes interesadas de la empresa. Una vez que hayas diseñado tu diagrama, utiliza las funciones de colaboración en tiempo real de Lucidchart para invitar a tu equipo a revisar la arquitectura, dejar comentarios y finalizar el plano.

Conviértete en un evangelizador de UML

A veces no basta con que tú te subas al tren de la diagramación de UML. Después de todo, como desarrollador de software, sueles trabajar en equipo y es importante que todos los demás se unan a la iniciativa.

Si tu equipo se muestra reacio a integrar los diagramas de UML en el proceso de desarrollo, propón usarlos en un solo proyecto para empezar. Una vez que tu equipo vea la gran ventaja que representan los diagramas de UML para la documentación, estará más dispuesto a empezar a convertirlos en un paso necesario.

Además, con Lucidchart, los diagramas de UML no son una tarea pesada: son una ventaja.

 

Todo lo que necesitas para hacer un diagrama

Haz un diagrama pulido y profesional de forma gratuita con Lucidchart. No importa lo que tengas en mente, tenemos las herramientas que necesitas para construirlo. Crea una cuenta y empieza a diagramar hoy mismo.

Regístrate gratis

Plantillas y ejemplos de diagramas de UML

Inspírate y documenta tus ideas más rápido con plantillas gratuitas y personalizables.

Diagrama de secuencia web

Precios:

Cuenta paga

Diagrama de secuencia web, Precios: Cuenta paga

Diagrama de actividades con carriles

Precios:

Gratis

Diagrama de actividades con carriles, Precios: Gratis

Diagrama de clases con notación UML

Precios:

Cuenta paga

Diagrama de clases con notación UML, Precios: Cuenta paga

Preguntas frecuentes

UML, o Lenguaje de Modelado Unificado, es un lenguaje de modelado visual estandarizado diseñado para ayudar a los desarrolladores y usuarios de negocios a visualizar, estructurar y documentar sistemas de software complejos. Se creó con el fin de proporcionar un lenguaje visual común que fuera comprensible para las distintas partes interesadas.

No, UML se puede aplicar más allá del desarrollo de software para modelar procesos de negocio y otros sistemas ajenos al software. Es compatible con lenguajes de programación tanto orientados a objetos como procedimentales.

UML incluye 14 tipos de diagramas, divididos en diagramas estructurales, que representan los aspectos estáticos de un sistema, y diagramas de comportamiento, que capturan las interacciones dinámicas.

El objetivo principal de UML es proporcionar a los arquitectos de sistemas y desarrolladores de software herramientas para el análisis, diseño e implementación de sistemas de software, lo que facilita una comunicación clara entre las partes interesadas técnicas y no técnicas.

UML beneficia a los ingenieros de software, analistas de negocio, arquitectos de sistemas y otras partes interesadas al proporcionar varios diagramas que los ayudan a comprender diferentes aspectos de un sistema antes de que comience el desarrollo.

Los diagramas estructurales, como los diagramas de clases, muestran los elementos estáticos y las relaciones dentro de un sistema, mientras que los diagramas de comportamiento, como los diagramas de secuencia y de actividades, ilustran las interacciones dinámicas y la comunicación de objetos a lo largo del tiempo.

Sí, UML incluye mecanismos de extensión que permiten a los usuarios personalizar los modelos para dominios y plataformas específicos, adaptando la estructura central de UML según sea necesario.

Aunque UML tiene una variedad de diagramas y notaciones, a muchos les resulta más fácil empezar con plantillas y tutoriales paso a paso en lugar de aprender cada regla de notación desde el principio.

Los ejemplos comunes de diagramas de UML incluyen los diagramas de clases, que representan la estructura de un sistema, y los diagramas de casos de uso, que ilustran cómo interactúan los usuarios con el sistema.

Todo lo que necesitas para hacer un diagrama de UML

Además de nuestra herramienta de diagramas de UML en línea, Lucidchart ofrece recursos de soporte y capacitación para ayudarte a expandirte a cualquier tipo de diagrama.

Haz un diagrama