de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

Una guía práctica de los 14 tipos de diagramas UML utilizando la herramienta VPasCode

Los diagramas UML se agrupan comúnmente en estructurales diagramas, que describen de qué está hecho un sistema, y conductuales diagramas, que describen lo que hace. Los ejemplos a continuación utilizan un único escenario de tienda en línea para que puedan compararse y adaptarse. UML 2.5.1 es la especificación formal referenciada aquí.

PlantUML representa muchas notaciones UML directamente. Algunos tipos de diagramas especializados, especialmente perfil, estructura compuesta, comunicación e introducción a la interacción, pueden expresarse mediante una aproximación práctica de PlantUML en lugar de un renderizador de diagramas dedicado. Los comentarios identifican esos casos.

Diagramas estructurales

1. Diagrama de clases

Muestra las clases del sistema, sus datos y operaciones, y relaciones como asociación, herencia y composición. Úsalo para discutir modelos de dominio o diseño orientado a objetos.

@startuml
class Customer {
  +id: String
  +email: String
  +placeOrder(): Order
}

class Order {
  +number: String
  +status: OrderStatus
  +total(): Money
}

class OrderLine {
  +quantity: int
  +unitPrice: Money
}

class Product {
  +sku: String
  +name: String
}

Customer "1" -- "0..*" Order : places
Order "1" *-- "1..*" OrderLine : contains
OrderLine "*" --> "1" Product : refers to
@enduml

Léelo: un cliente puede realizar muchos pedidos; un pedido contiene una o más líneas; cada línea se refiere a un producto. El rombo relleno indica composición: el pedido posee sus líneas.

2. Diagrama de objetos

Muestra instancias concretas y enlaces en un momento determinado. Es útil para ilustrar datos de ejemplo o explicar un modelo de clases con un escenario específico. En PlantUML, utiliza la notación de objetos.

@startuml
object "alice:Customer" as alice {
  id = C104
  email = [email protected]
}

object "order:Order" as order {
  number = O9001
  status = PAID
}

object "line:OrderLine" as line {
  quantity = 2
  unitPrice = 19.99
}

object "mug:Product" as mug {
  sku = MUG-01
  name = Travel mug
}

alice -- order
order *-- line
line --> mug
@enduml

3. Diagrama de componentes

Muestra partes de software desplegables o reemplazables y sus dependencias. Úsalo para comunicar la arquitectura de la aplicación y los límites de integración.

@startuml
component "Web Store" as web
component "Order Service" as orders
component "Payment Adapter" as payments
database "Order DB" as db
cloud "Payment Provider" as provider

web --> orders : REST
orders --> db : SQL
orders --> payments : authorize
payments --> provider : HTTPS
@enduml

4. Diagrama de estructura compuesta

Muestra las partes internas de un clasificador, como un componente o una clase, y cómo esas partes se conectan a través de puertos. Es útil cuando la colaboración interna es más importante que la arquitectura del sistema circundante.

PlantUML no proporciona una sintaxis dedicada para estructuras compuestas que sea universalmente compatible. Este boceto al estilo de diagrama de clases transmite las partes y las conexiones:

@startuml
allowmixing
skinparam componentStyle rectangle

class Car {
}

package "Car" {
  component "engine : Engine" as engine {
    portout p1
  }

  component "transmission : Transmission" as trans {
    portin p2
    portout p3
  }

  component "wheel : Wheel [4]" as wheels {
    portin p4
  }

  p1 -- p2 : drives
  p3 -- p4 : power
}

@enduml

Trate esto como un boceto estructural; no muestra puertos UML formales ni semánticas de conectores.

5. Diagrama de despliegue

Mapea artefactos de software o servicios en nodos de hardware y entornos de ejecución. Úsalo para explicar dónde se ejecuta el software y cómo se comunican los nodos en tiempo de ejecución.

@startuml
node "Dispositivo del cliente" as client {
  artifact "Navegador"
}

node "Nube" {
  node "Alojamiento de la aplicación" as appHost {
    artifact "API de la tienda"
  }
  database "Base de datos de pedidos" as db
}

cloud "Proveedor de pagos externo" as pay

client --> appHost : HTTPS
appHost --> db : SQL
appHost --> pay : HTTPS
@enduml

6. Diagrama de paquetes

Agrupar elementos del modelo en espacios de nombres o capas y mostrar las dependencias entre esos grupos. Úsalo para explicar la organización del código y la dirección arquitectónica.

@startuml
package "store.web" {
  class CheckoutController
}

package "store.application" {
  class PlaceOrder
}

package "store.domain" {
  class Order
  class Product
}

package "store.persistence" {
  class OrderRepository
}

CheckoutController ..> PlaceOrder
PlaceOrder ..> Order
PlaceOrder ..> OrderRepository
@enduml

7. Diagrama de perfil

Define una extensión específica del dominio para UML utilizando estereotipos, valores etiquetados y restricciones. Úsalo cuando un proyecto necesite un vocabulario de modelado coherente más allá de UML estándar.

PlantUML puede mostrar los conceptos del perfil como un boceto al estilo UML, pero no es un renderizador dedicado para diagramas de perfil.

@startuml
class "«profile» StoreProfile" as Profile
class "«estereotipo» «Service»" as Service
class "«estereotipo» «Repository»" as Repository
class "«metaclass» Component" as Component

Profile ..> Service : defines
Profile ..> Repository : defines
Service ..> Component : extends
Repository ..> Component : extends

note right of Service
  valor etiquetado:
  owner: String
end note
@enduml

Diagramas conductuales

8. Diagrama de casos de uso

Muestra actores externos y los objetivos del sistema con los que interactúan. Úsalo para establecer el alcance y capturar requisitos funcionales a un nivel alto.

@startuml
dirección de izquierda a derecha
actor Cliente
actor "Proveedor de Pago" como Provider

rectángulo "Tienda en línea" {
  caso de uso "Navegar productos" como Browse
  caso de uso "Realizar pedido" como Place
  caso de uso "Pagar pedido" como Pay
  caso de uso "Rastrear pedido" como Track
}

Cliente --> Browse
Cliente --> Place
Cliente --> Track
Provider --> Pay
Place ..> Pay : <<include>>
@enduml

9. Diagrama de actividad

Modela un flujo de trabajo: acciones, decisiones, rutas paralelas y transferencias. Úsalo para procesos empresariales, procedimientos operativos o el flujo de control de un algoritmo.

@startuml
inicio
:Seleccionar artículos;
:Ingresar detalles de entrega;
:Calcular total;

si (¿Artículos disponibles?) entonces (sí)
  :Autorizar pago;
  si (¿Pago aprobado?) entonces (sí)
    :Crear pedido;
    :Enviar confirmación;
  sino (no)
    :Mostrar error de pago;
  endif
 sino (no)
  :Mostrar artículos no disponibles;
endif

fin
@enduml

10. Diagrama de máquina de estados

Describe los estados que puede ocupar una entidad y los eventos o condiciones que causan transiciones. Úsalo cuando el comportamiento de un objeto dependa de su estado actual.

@startuml
[*] --> Borrador
Borrador --> PagoPendiente : enviar
PagoPendiente --> Pagado : pago aprobado
PagoPendiente --> Cancelado : pago rechazado
PagoPendiente --> Cancelado : cliente cancela
Pagado --> Enviado : despacho
Enviado --> Entregado : entrega confirmada
Cancelado --> [*]
Entregado --> [*]
@enduml

11. Diagrama de secuencia

Muestra los mensajes intercambiados entre participantes en orden temporal. Úsalo para describir un escenario, flujo de llamadas a API o interacción entre servicios.

@startuml
actor Cliente
participante "Tienda Web" como Web
participante "Servicio de Pedidos" como Orders
participante "Servicio de Pago" como Payments

Cliente -> Web : enviar pago
Web -> Orders : crear pedido
Orders -> Payments : autorizar pago
Payments --> Orders : aprobado
Orders --> Web : confirmación de pedido
Web --> Cliente : mostrar confirmación
@enduml

12. Diagrama de comunicación

Enfatiza qué objetos colaboran y los enlaces entre ellos; la numeración de mensajes muestra el orden de las interacciones. Úsalo cuando la red de participantes colaboradores sea más importante que una línea de tiempo.

PlantUML no tiene un renderizador dedicado para diagramas de comunicación en su conjunto UML estándar. Este boceto de enlaces de objetos etiqueta los mensajes con números de secuencia:

@startuml
objeto Cliente
objeto TiendaWeb
objeto ServicioPedidos
objeto ServicioPago

Cliente --> TiendaWeb : 1: checkout()
TiendaWeb --> ServicioPedidos : 1.1: createOrder()
ServicioPedidos --> ServicioPago : 1.2: authorize()
ServicioPago --> ServicioPedidos : 1.3: approved
ServicioPedidos --> TiendaWeb : 1.4: confirmation
@enduml

13. Diagrama de vista general de interacción

Proporciona una vista de alto nivel del flujo de control de las interacciones, combinando un flujo estilo actividad con referencias a escenarios de interacción. Úsalo para mostrar cómo varios escenarios a nivel de secuencia se integran en un proceso más amplio.

Este ejemplo de PlantUML utiliza un diagrama de actividad como vista general, con nombres de escenarios que sustituyen a las interacciones referenciadas:

@startuml
skinparam conditionStyle InsideDiamond

título Diagrama de vista general de interacción: Sistema de procesamiento de pedidos

inicio

:El cliente realiza un pedido;

si (¿Hay el artículo en stock?) entonces (sí)
  
  partición "sd Secuencia de pago" {
    :Autorizar pago;
    :Deductir inventario;
  }
  
else (no)
  
  partición "sd Proceso de pedido diferido" {
    :Notificar al cliente;
    :Generar solicitud al proveedor;
  }
  
endif

fork
  partición "sd Secuencia de envío" {
    :Empaquetar pedido;
    :Enviar a la dirección;
  }
fork again
  partición "sd Secuencia de facturación" {
    :Generar factura;
    :Enviar correo de recibo;
  }
end fork

:Cerrar pedido;

fin
@enduml

Para los intercambios de mensajes detallados dentro de cada escenario, cree un diagrama de secuencia separado.

14. Diagrama de temporización

Muestra cambios de estado o de valor frente a un eje temporal. Úselo para comportamientos sensibles al tiempo, protocolos, interacciones de hardware o requisitos que involucren duraciones y plazos.

@startuml
robusto "Pedido" como Order
conciso "Pago" como Payment

@0
Order es Borrador
Payment está Inactivo

@5
Order está Pendiente
Payment está Procesando

@10
Payment está Aprobado

@12
Order está Confirmado
@enduml

Elegir un diagrama

Comience con la pregunta que necesita que responda el diagrama:

  • ¿Qué hay en el sistema?Clase, objeto, componente, estructura compuesta, paquete, perfil o despliegue.

  • ¿Qué hace el sistema?Caso de uso, actividad o máquina de estados.

  • ¿Cómo colaboran los participantes?Secuencia, comunicación, vista general de interacción o temporización.

Mantenga cada diagrama enfocado en un solo propósito, utilice nombres coherentes en todos los diagramas e incluya solo el detalle necesario para la audiencia y la decisión en cuestión. Los fragmentos de PlantUML son puntos de partida: verifique la sintaxis admitida por su renderizador, especialmente para los tipos de diagramas especializados.