19. Introducción a UML y otros diagramas de apoyo

19.1 Introducción

El software es difícil de ver completo. Por eso usamos diagramas: representaciones visuales que ayudan a comprender, explicar y discutir partes de un sistema. Un diagrama puede mostrar actores, procesos, clases, componentes, estados, datos, interacciones o decisiones de arquitectura.

UML, sigla de Lenguaje Unificado de Modelado, es una notación estándar para representar distintos aspectos de un sistema de software. No es la única forma de diagramar, pero es una de las más conocidas.

En este tema veremos una introducción a UML y a otros diagramas de apoyo. El objetivo no es dominar toda la notación, sino entender para qué sirven los diagramas y cómo usarlos con criterio.

19.2 ¿Qué es UML?

UML es un lenguaje visual de modelado que permite representar estructuras, comportamientos e interacciones de un sistema. Está compuesto por distintos tipos de diagramas, cada uno orientado a responder preguntas diferentes.

UML puede utilizarse para:

  • Representar requisitos mediante casos de uso.
  • Mostrar conceptos del dominio o clases del sistema.
  • Describir interacciones entre objetos o componentes.
  • Representar flujos de actividades.
  • Mostrar estados posibles de un elemento.
  • Comunicar estructura técnica o arquitectura.
Idea clave: UML no es el objetivo; es una herramienta para comunicar y razonar sobre el software.

19.3 ¿Para qué sirven los diagramas?

Los diagramas son útiles cuando ayudan a entender algo que sería difícil explicar solo con texto. Pueden servir en análisis, diseño, comunicación, documentación, pruebas y mantenimiento.

Algunos usos frecuentes:

  • Aclarar alcance y actores del sistema.
  • Entender un proceso de negocio.
  • Visualizar relaciones entre conceptos.
  • Explicar cómo colaboran componentes.
  • Detectar ambigüedades o contradicciones.
  • Documentar decisiones importantes.
  • Guiar conversaciones con usuarios o equipo técnico.
  • Facilitar incorporación de nuevas personas al proyecto.

Un diagrama debe responder una pregunta concreta. Si no ayuda a entender o decidir, probablemente no aporta valor.

19.4 Diagramas estructurales y de comportamiento

Muchos diagramas pueden agruparse en dos grandes familias: estructurales y de comportamiento.

Tipo Qué muestra Ejemplos
Estructural Elementos relativamente estables y sus relaciones. Clases, componentes, paquetes, despliegue.
De comportamiento Acciones, flujos, estados, mensajes o cambios en el tiempo. Casos de uso, actividades, secuencia, estados.

Ambos tipos se complementan. La estructura muestra qué elementos existen; el comportamiento muestra cómo actúan o cambian.

19.5 Diagrama de casos de uso

El diagrama de casos de uso muestra actores externos y objetivos que pueden lograr interactuando con el sistema. Es útil para comprender alcance funcional y actores principales.

Responde preguntas como:

  • ¿Quién usa el sistema?
  • ¿Qué objetivos tiene cada actor?
  • ¿Qué funcionalidades principales están dentro del alcance?
  • ¿Qué sistemas externos interactúan con la solución?

Ejemplo de casos de uso para una biblioteca:

  • Registrar préstamo.
  • Registrar devolución.
  • Consultar catálogo.
  • Reservar libro.
  • Generar reporte de préstamos vencidos.

Este diagrama no detalla pasos internos. Para eso se pueden usar descripciones de casos de uso o diagramas de actividad.

19.6 Diagrama de clases

El diagrama de clases muestra clases, atributos, operaciones y relaciones. Puede usarse en análisis para representar conceptos del dominio o en diseño para representar estructuras de software.

En análisis, podría mostrar conceptos como:

  • Socio.
  • Libro.
  • Ejemplar.
  • Préstamo.
  • Reserva.

En diseño, puede mostrar clases concretas, métodos, interfaces y dependencias técnicas. Es importante distinguir el nivel de abstracción usado.

19.7 Diagrama de secuencia

El diagrama de secuencia muestra cómo interactúan actores, objetos, servicios o componentes a lo largo del tiempo mediante mensajes. Es útil para entender una operación concreta.

Puede responder preguntas como:

  • ¿Qué componentes participan en esta operación?
  • ¿En qué orden se envían mensajes?
  • ¿Qué validaciones ocurren?
  • ¿Qué servicio llama a cuál?
  • ¿Dónde puede aparecer un error?

Por ejemplo, al confirmar una compra, el diagrama podría mostrar interacción entre interfaz, servicio de pedidos, servicio de pagos, inventario y notificaciones.

19.8 Diagrama de actividades

El diagrama de actividades representa flujos de trabajo, decisiones y pasos de un proceso. Es útil para analizar procesos de negocio o flujos funcionales.

Puede mostrar:

  • Inicio y fin de un proceso.
  • Actividades o pasos.
  • Decisiones y condiciones.
  • Caminos alternativos.
  • Actividades paralelas.
  • Responsables de cada paso.

Por ejemplo, un proceso de inscripción puede incluir: seleccionar curso, verificar cupo, validar requisitos previos, registrar inscripción, generar comprobante y enviar confirmación.

19.9 Diagrama de estados

El diagrama de estados muestra los estados posibles de un objeto o entidad y los eventos que provocan cambios entre ellos. Es útil cuando un concepto tiene un ciclo de vida importante.

Ejemplos:

  • Un pedido puede pasar de pendiente a pagado, enviado, entregado o cancelado.
  • Una reserva puede pasar de activa a cancelada, vencida o utilizada.
  • Un préstamo puede pasar de vigente a vencido, devuelto o perdido.
  • Una solicitud puede pasar de creada a revisada, aprobada o rechazada.

Este diagrama ayuda a descubrir reglas como: una reserva cancelada no puede volver a activa, o un pedido entregado no puede pasar a pendiente.

19.10 Diagrama de componentes

El diagrama de componentes muestra partes principales del sistema y sus dependencias. Es más técnico que un diagrama de casos de uso o actividades, y suele usarse para hablar de arquitectura o diseño.

Puede representar elementos como:

  • Aplicación web.
  • API backend.
  • Base de datos.
  • Servicio de autenticación.
  • Servicio de pagos.
  • Servicio de notificaciones.
  • Sistemas externos.

Ayuda a entender dependencias, responsabilidades técnicas e integraciones.

19.11 Otros diagramas de apoyo

No todo diagrama debe ser UML. En muchos proyectos se usan diagramas simples que comunican mejor que una notación formal.

Diagrama Uso principal Ejemplo
Diagrama de contexto Mostrar el sistema y sus relaciones externas. Usuarios, sistemas externos y límites de la solución.
Mapa de procesos Representar procesos de negocio. Flujo de compra desde pedido hasta entrega.
Modelo entidad-relación Representar datos y relaciones. Clientes, pedidos, productos y pagos.
Wireframe Mostrar estructura inicial de una interfaz. Boceto de pantalla de inicio de sesión.
Diagrama de arquitectura simple Comunicar componentes técnicos principales. Frontend, API, base de datos y servicios externos.
Mapa de navegación Mostrar pantallas y caminos posibles. Menú, listado, detalle, edición y confirmación.

19.12 Elegir el diagrama adecuado

El diagrama adecuado depende de la pregunta que se quiere responder. Antes de dibujar, conviene definir el propósito.

Pregunta Diagrama útil
¿Quién usa el sistema y para qué? Casos de uso o diagrama de contexto.
¿Qué conceptos del negocio existen? Modelo de dominio o diagrama de clases conceptual.
¿Cómo fluye un proceso? Diagrama de actividades o mapa de procesos.
¿Cómo interactúan componentes en una operación? Diagrama de secuencia.
¿Qué estados puede tener una entidad? Diagrama de estados.
¿Cómo se organiza técnicamente el sistema? Diagrama de componentes o arquitectura.

19.13 Nivel de formalidad

No todos los diagramas necesitan la misma formalidad. En una conversación temprana, un boceto puede ser suficiente. En documentación técnica o sistemas críticos, puede requerirse mayor precisión.

El nivel de formalidad depende de:

  • Riesgo del proyecto.
  • Tamaño del equipo.
  • Necesidad de mantenimiento futuro.
  • Criticidad del sistema.
  • Participación de proveedores externos.
  • Necesidad de auditoría o cumplimiento normativo.
  • Complejidad del dominio o de la arquitectura.

La precisión es útil cuando ayuda a evitar errores. La formalidad excesiva puede ser un problema si produce diagramas que nadie mantiene ni usa.

19.14 Ejemplo: sistema de turnos médicos

Para un sistema de turnos médicos se podrían usar varios diagramas:

  • Diagrama de contexto: muestra pacientes, profesionales, administradores, sistema de notificaciones y sistema de autenticación.
  • Casos de uso: solicitar turno, cancelar turno, consultar agenda, bloquear horario.
  • Modelo de dominio: paciente, profesional, especialidad, turno, agenda y reserva.
  • Diagrama de actividades: flujo para solicitar un turno.
  • Diagrama de estados: estados de un turno: disponible, reservado, cancelado, atendido.
  • Diagrama de secuencia: interacción al confirmar una reserva y enviar notificación.
  • Diagrama de componentes: aplicación web, API, base de datos y servicio de correo.

Cada diagrama aporta una vista distinta del mismo sistema.

19.15 Diagramas como documentación viva

Un diagrama es útil mientras refleja una decisión, una comprensión o una estructura vigente. Si queda desactualizado, puede confundir más de lo que ayuda.

Para mantener diagramas útiles conviene:

  • Indicar fecha o versión.
  • Explicar el propósito del diagrama.
  • No incluir detalles innecesarios.
  • Actualizar diagramas que documentan decisiones importantes.
  • Eliminar o marcar como histórico lo que ya no representa al sistema.
  • Ubicar diagramas donde el equipo realmente los consulte.
  • Relacionarlos con requisitos, decisiones o módulos cuando corresponda.

19.16 Errores comunes

Al usar UML y diagramas suelen aparecer errores como:

  • Dibujar diagramas sin saber qué pregunta responden.
  • Intentar representar todo el sistema en un único diagrama.
  • Usar notación formal con personas que no la entienden.
  • Hacer diagramas demasiado detallados para una discusión inicial.
  • No validar diagramas de negocio con usuarios o especialistas.
  • Confundir modelos de análisis con modelos de diseño.
  • Dejar diagramas desactualizados sin advertencia.
  • Valorar más la estética del diagrama que su claridad.

19.17 Buenas prácticas

Algunas recomendaciones iniciales:

  • Definir el propósito antes de dibujar.
  • Elegir el tipo de diagrama según la pregunta.
  • Usar el nivel de detalle mínimo necesario.
  • Preferir claridad sobre ornamentación.
  • Separar vistas distintas en diagramas distintos.
  • Usar nombres comprensibles para el público destinatario.
  • Validar diagramas con las personas adecuadas.
  • Mantener actualizados los diagramas que apoyan decisiones importantes.

19.18 Qué debes recordar de este tema

  • UML es un lenguaje visual para modelar distintos aspectos de un sistema.
  • Los diagramas ayudan a comprender, comunicar, diseñar y documentar.
  • No todos los diagramas deben ser UML; también sirven diagramas simples de apoyo.
  • Cada tipo de diagrama responde preguntas diferentes.
  • Los diagramas pueden mostrar estructura o comportamiento.
  • El nivel de formalidad debe adaptarse al proyecto y al público.
  • Un diagrama útil debe ser claro, vigente y orientado a una decisión o comprensión concreta.

19.19 Conclusión

UML y los diagramas de apoyo permiten representar visualmente aspectos del software que serían difíciles de explicar solo con texto. Ayudan a analizar, diseñar, comunicar y mantener sistemas, siempre que se usen con propósito y nivel de detalle adecuado.

Para quien comienza, la idea principal es esta: un buen diagrama no es el más complejo, sino el que permite que las personas entiendan mejor una parte importante del sistema.

En el próximo tema veremos diseño de software: responsabilidades, módulos e interfaces, avanzando desde el análisis hacia decisiones de organización de la solución.