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.












