Saltar a contenido

3.1.-Introducción a UML

3.1 Introducción a UML (Unified Modeling Language)

1. Introducción

El Lenguaje Unificado de Modelado o UML («Unified Modeling Language») es un lenguaje estandarizado de modelado. Está especialmente desarrollado para ayudar, a todos los intervinientes en el desarrollo y modelado de un sistema o un producto software, a describir, diseñar, especificar, visualizar, construir y documentar todos los artefactos que lo componen, sirviéndose de varios tipos de diagramas.

Principio fundamental de UML

Una imagen vale más que mil palabras

2. ¿Qué es UML?

UML nos permite representar visualmente los diferentes aspectos de un sistema software mediante diagramas.

2.1. Definición

UML del inglés Unified Modeling Language (Lenguaje Unificado de Modelado) es un lenguaje de modelado visual estándar utilizado en ingeniería de software para especificar, visualizar, construir y documentar los artefactos de un sistema software. UML permite:

  • Describir sistemas software
  • Diseñar la arquitectura de aplicaciones
  • Especificar comportamientos y estructuras
  • Visualizar componentes del sistema
  • Construir aplicaciones de forma planificada
  • Documentar el desarrollo del software

2.2. ¿Qué es modelar?

Modelar consiste en crear un diseño previo de una aplicación antes de proceder a su desarrollo e implementación, aunque en ocasiones concretas puede hacerse posteriormente.

Analogía: De la misma forma que un arquitecto dibuja y diseña planos sobre el edificio que va a construir, un analista de software crea distintos diagramas UML que sirven de base para la posterior construcción/mantenimiento del sistema.

2.2.1. Propósito del modelado

El modelado es la principal forma de visualizar el diseño de una aplicación con la finalidad de compararla con los requisitos antes de que el equipo de desarrollo comience a codificar.

3. Importancia del modelado

El modelado es vital en todo tipo de proyectos, pero cobra especial importancia a medida que el proyecto crece de tamaño.

Beneficios: - ✅ Permite diseñar para la escalabilidad - ✅ Garantiza la seguridad del sistema - ✅ Verifica la correcta ejecución antes de implementar - ✅ Los cambios son menos costosos en fase de diseño - ✅ Facilita la comunicación entre el equipo

Importante

Utilizando diagramas UML se consigue visualizar y verificar los diseños de sistemas de software antes de que la implementación del código haga que los cambios sean difíciles y demasiado costosos.

4. ¿Por qué usar UML?

La principal razón para usar UML es que proporciona un lenguaje visual estándar que todos los miembros del equipo pueden entender, independientemente de su experiencia técnica o rol en el proyecto. Ademas es un lenguaje ampliamente aceptado en la industria del software.

4.1. Abstracción y flexibilidad

Los modelos o diagramas de UML nos ayudan a trabajar a un mayor nivel de abstracción. UML permite:

  • Modelar cualquier tipo de aplicación
  • Correr en cualquier combinación de hardware y software
  • Independencia del sistema operativo
  • Independencia del lenguaje de programación
  • Independencia de la red
  • Modelar incluso proyectos que no son puramente software

5. Características principales

Las características que hacen de UML un lenguaje de modelado tan popular son:

  • Sencillez: Pese a que si es usado de forma completa puede llegar a complicarse, lo normal es que se simplifique.
  • Versatilidad: Es capaz de modelar todo tipo de sistemas.
  • Universalidad: Es un lenguaje universal, haciendo que todos los miembros del equipo se relacionen a través de sus diagramas sean del ámbito que sean.
  • Extensibilidad: Es fácilmente extensible. Tiene mecanismos sencillos para especializar los conceptos fundamentales.

6. Ventajas y desventajas

La adopción de UML como lenguaje conlleva una serie de ventajas y desventajas que es importante considerar:

6.1. Ventajas

La principal ventaja de UML es que proporciona un lenguaje visual estándar que todos los miembros del equipo pueden entender, independientemente de su experiencia técnica o rol en el proyecto.

  • Lenguaje estandarizado y reconocido mundialmente
  • Facilita la comunicación entre equipos multidisciplinares
  • Independiente de la plataforma y lenguaje de programación
  • Amplia variedad de diagramas para diferentes perspectivas
  • Reduce costos al detectar errores en fase de diseño

6.2. Desventajas

Las desventajas de UML suelen estar relacionadas con su complejidad y la curva de aprendizaje asociada:

  • Lenguaje muy amplio: En ocasiones, complicado utilizar todas las posibilidades que ofrece
  • Curva de aprendizaje: Requiere tiempo para dominar todos los diagramas
  • Puede ser excesivo: Para proyectos pequeños puede resultar innecesariamente complejo

Nota

Los analistas tienden a utilizar los diagramas de forma sencilla, consiguiendo que sean entendidos fácilmente por cualquier persona que acceda a ellos.

7. Diagramas de UML

Los diagramas de UML son representaciones gráficas que muestran de forma parcial un sistema de información, bien esté siendo desarrollado o ya lo haya sido.

7.1. Aspectos clave de los diagramas UML

Cabe destacar los siguientes aspectos de los diagramas UML para modelar sistemas:

  • Suelen estar acompañados de documentación que les sirve de apoyo
  • La documentación puede adoptar múltiples formas
  • UML no excluye la posibilidad de mezclar diagramas (práctica común)
  • Cada diagrama aporta su visión particular al modelado

7.2. Clasificación de diagramas UML

UML se compone de 14 tipos de diagramas divididos en dos grandes categorías:

7.2.1. Diagramas Estructurales (7 tipos)

Representan la estructura estática del sistema, es decir, los elementos que lo componen y sus relaciones:

  1. Diagrama de Clases
  2. Diagrama de Objetos
  3. Diagrama de Componentes
  4. Diagrama de Despliegue
  5. Diagrama de Paquetes
  6. Diagrama de Estructura Compuesta
  7. Diagrama de Perfiles

7.2.1. Diagramas de Comportamiento (7 tipos)

Representan aspectos dinámicos del sistema, es decir, cómo se comporta el sistema en tiempo de ejecución:

Diagramas de comportamiento básicos:

  1. Diagrama de Casos de Uso
  2. Diagrama de Actividades

Diagramas de Interacción (subcategoría):

  1. Diagrama de Secuencia
  2. Diagrama de Comunicación
  3. Diagrama de Tiempos
  4. Diagrama de Interacción General

Diagrama de estados:

  1. Diagrama de Estados

8. Historia de UML

8.1. La crisis del software

En las décadas de 1960 y 1970, se desarrollaron los primeros métodos de software estructurados:

  • Diagramas de flujo de datos (análisis estructural)
  • Método de Jackson (orientado a estructuras de datos)
  • Diagramas HIPO
  • Diagramas de estructura

Problema: Estos métodos dividían el sistema en dos partes separadas:

  • Sección de datos: estructuras de datos
  • Sección de procedimientos: algoritmos y procesos

8.2. Década de 1980

El análisis estructural clásico evolucionó y se complementó con nuevas técnicas:

  • Diagramas de relaciones de entidades (modelado de datos)
  • Redes de Petri (modelado de procesos)
  • Surgen lenguajes de programación orientados a objetos
  • Aparecen primeros lenguajes de modelado orientados a objetos

Desafío: Los sistemas se volvieron más complejos. La mantenibilidad y reutilización se hicieron cruciales.

8.3. Década de 1990 - Nacimiento de UML

A principios de los 90, la comunidad de desarrollo de software enfrentaba varios desafíos:

  • Más de 50 métodos orientados a objetos diferentes
  • Múltiples formatos de diseño incompatibles
  • Necesidad urgente de unificación

Expertos reconocidos en el campo decidieron colaborar para crear un lenguaje de modelado unificado a partir de los mejores aspectos de los métodos existentes. Los métodos más utilizados eran de:

  • Grady Booch - Método Booch
  • James Rumbaugh - OMT (Object Modeling Technique)
  • Ivar Jacobson - OOSE (Object-Oriented Software Engineering)

En 1994, Rational Software Corporation (IBM desde 2003) inició la creación de un lenguaje de modelado unificado, con el objetivo de no crear una notación completamente nueva, sino adaptar, expandir y simplificar los tipos de diagramas existentes y aceptados. Para ello integraron:

  • Método Booch de Grady Booch
  • OMT de James Rumbaugh
  • OOSE de Ivar Jacobson
  • Elementos de otros métodos

Obteniendo como resultado el Lenguaje Unificado de Modelado (UML), en su versioín inicial 0.9: UML 0.9

Las principales empresas de software de la época apoyaron el proyecto, formando un consorcio que colaboró en su desarrollo y promoción. Entre ellas destacaban:

  • IBM
  • Oracle
  • Microsoft
  • Digital
  • Hewlett-Packard
  • Unisys

UML posteriormente evolucionó a través de varias versiones, siendo la versión 2.0 la que consolidó UML como el estándar de facto para el modelado de software.

Año Versión Descripción
1994 0.9 Primera versión
1997 1.1 Aprobada por OMG
1998 1.2 Adaptaciones editoriales
1999 1.3 Mejoras incrementales
2003 1.5 Versión consolidada
2003 2.0 Especificación final adoptada por OMG
Actualidad 2.5.x Versiones actuales

Nota histórica

Lo que es sobresaliente y nuevo en UML no es su contenido, sino su estandarización a un solo lenguaje unificado con un significado definido formalmente.

9. Alternativas a UML

Si bien UML es el estándar más utilizado y reconocido, existen alternativas para abordar diferentes enfoques o necesidades específicas:

9.1. SysML (Systems Modeling Language)

Propósito: Modelado de sistemas de ingeniería y sistemas físicos

Características: - Extensión de UML - Enfocado en sistemas complejos - Incluye aspectos de hardware y software

Cuándo usarlo: Proyectos de ingeniería que involucran sistemas físicos

9.2. BPMN (Business Process Model and Notation)

Propósito: Modelar procesos de negocios y flujos de trabajo

Características: - Especializado en procesos empresariales - Se utiliza comúnmente en conjunto con UML - Representación visual de workflows

Cuándo usarlo: Análisis y optimización de procesos de negocio

9.3. ERD (Entity-Relationship Diagrams)

Propósito: Modelado de datos y bases de datos

Características: - Enfocado en relaciones entre entidades - Representa atributos y cardinalidades - Ampliamente usado en diseño de bases de datos

Cuándo usarlo: Diseño de esquemas de bases de datos relacionales

9.4. ArchiMate

Propósito: Modelado de arquitectura empresarial

Características: - Representa arquitectura e infraestructura empresarial - Incluye procesos, aplicaciones, estructuras de datos - Visión integral de la organización

Cuándo usarlo: Planificación estratégica de TI a nivel empresarial

9.5. Flowchart (Diagrama de Flujo)

Propósito: Representar algoritmos y flujos de trabajo simples

Características: - Más simple que UML - Fácil de entender - Ampliamente conocido

Cuándo usarlo: Representación de algoritmos sencillos y procesos básicos

9.6. DSL (Domain-Specific Languages)

Propósito: Lenguajes de modelado para dominios específicos

Características: - Diseñados para un dominio particular - Conceptos y abstracciones precisas - Mayor expresividad en su dominio

Cuándo usarlo: Cuando se necesita precisión en un dominio muy específico

5.7. Tabla comparativa

Lenguaje Enfoque Principal Relación con UML Complejidad
UML Software OO general - Media-Alta
SysML Sistemas de ingeniería Extensión de UML Alta
BPMN Procesos de negocio Complementario Media
ERD Bases de datos Complementario Baja
ArchiMate Arquitectura empresarial Independiente Alta
Flowchart Algoritmos simples Más simple Baja
DSL Dominio específico Independiente Variable

Conclusión

UML sigue siendo el estándar predominante y ampliamente aceptado para el modelado de sistemas de software debido a su versatilidad y amplia gama de diagramas para representar diferentes aspectos de un sistema.

10. Mejores prácticas al usar UML

Aunque UML es una herramienta poderosa, su efectividad depende de cómo se utilice. Aquí hay algunas mejores prácticas para aprovechar al máximo UML en tus proyectos:

  • No modelar todo: No es necesario crear diagramas para cada aspecto del sistema. Enfócate en los que aporten valor.

    • No es necesario crear todos los tipos de diagramas
    • Selecciona los diagramas más apropiados para tu proyecto
    • El objetivo es comunicar, no complicar
    • Tampoco es necesario detallar cada aspecto
  • Mantener la simplicidad: Los diagramas deben ser claros y fáciles de entender.

    • Usa solo el nivel de detalle necesario
    • Evita la sobre-ingeniería
    • Los diagramas deben ser comprensibles
  • Actualizar la documentación: Los diagramas deben reflejar el estado actual del sistema.

    • Mantén los diagramas sincronizados con el código
    • Documenta las decisiones de diseño
    • Actualiza cuando hay cambios significativos
    • Este punto suele ser uno de sus aspectos más débiles, ya que los diagramas se quedan obsoletos
  • Herramientas adecuadas: Utiliza herramientas que faciliten la creación y mantenimiento de diagramas UML.

    • Elige herramientas que se integren con tu flujo de trabajo
    • Considera herramientas colaborativas para equipos distribuidos
    • Algunas herramientas permiten generar código a partir de diagramas y viceversa
    • Facilitan la actualización y mantenimiento de los diagramas

11. Herramientas de modelado

Existen numerosas herramientas para crear diagramas UML:

  • Comerciales: Enterprise Architect, Visual Paradigm, MagicDraw
  • Código abierto: PlantUML, StarUML, Umbrello
  • Online: Lucidchart, Draw.io, Creately
  • Integradas en IDEs: IntelliJ IDEA, Eclipse, Visual Studio

12. UML en el Desarrollo Ágil

UML puede integrarse en metodologías ágiles, aunque con ciertas adaptaciones para mantener la agilidad y flexibilidad del proceso.

12.1. UML y Agilidad

Aunque UML nació en un contexto de metodologías tradicionales, puede adaptarse a entornos ágiles:

Principios:

  • Crear solo los diagramas necesarios, evitando la sobre-documentación
  • Mantener los diagramas simples y comprensibles, priorizando la comunicación
  • Actualizar los diagramas de forma incremental conforme avanza el proyecto, no de forma exhaustiva al inicio
  • Usar diagramas como herramientas de comunicación dentro del equipo y cuando ya no sean útiles, descartarlos

12.2. Cuándo usar UML en Ágil

Existen momentos clave en los que UML puede ser especialmente útil en un entorno ágil:

  • Sprint Planning: Diagramas de casos de uso y actividades, que nos ayudan a entender los requisitos
  • Diseño técnico: Diagramas de clases y secuencia, que nos permiten diseñar la arquitectura y las interacciones
  • Arquitectura: Diagramas de componentes y despliegue, que nos ayudan a planificar la infraestructura
  • Documentación: Como artefactos que representan decisiones de diseño importantes y estructuras clave del sistema

13. Conclusiones

UML es una herramienta poderosa para el modelado de sistemas de software, ofreciendo numerosos beneficios para equipos de desarrollo. Sin embargo, su efectividad depende de un uso adecuado y pragmático.

  • UML es el estándar internacional para el modelado de sistemas software
  • Proporciona una notación visual común para todos los stakeholders
  • Facilita la comunicación entre equipos técnicos y no técnicos
  • Permite detectar errores antes de la implementación
  • Es independiente de tecnologías y plataformas
  • Su uso debe ser pragmático, no dogmático
  • Existen alternativas para necesidades específicas, pero UML sigue siendo el más completo

14. Recursos y Referencias

14.1. Fuentes y recursos online

14.2. Documentación

  • OMG UML Specification: Especificación oficial del lenguaje
  • UML Distilled - Martin Fowler: Guía práctica y concisa
  • Applying UML and Patterns - Craig Larman: Enfoque práctico