
2. Diagramas estándar del Lenguaje Unificado de Modelado (UML)
En su núcleo, PlantUML fue creado para simplificar la creación de diagramas UML oficiales. Se divide en dos categorías principales: diagramas estructurales y diagramas conductuales.
Diagramas Estructurales
Diagramas de Clases y Objetos
Modela estructuras orientadas a objetos, jerarquías de clases, interfaces, atributos y relaciones (herencia, agregación, composición) directamente desde las definiciones de código.

@startuml
title Sistema de Gestión de Hoteles
' Definir interfaces
interface IReservable {
+ hacerReserva(cliente: Cliente, fechas: RangoFechas): booleano
+ cancelarReserva(idReserva: String): booleano
+ verificarDisponibilidad(fecha: Fecha): booleano
}
interface IPagable {
+ procesarPago(monto: double): booleano
+ emitirReembolso(idReserva: String): booleano
+ obtenerEstadoPago(): String
}
' Definir clase abstracta
abstract class Persona {
- id: String
- nombre: String
- email: String
- telefono: String
+ getId(): String
+ getNombre(): String
+ getInformacionContacto(): String
+ actualizarInformacionContacto(info: String): void
}
' Definir clases concretas
class Cliente {
- puntosFidelidad: int
- estanciasTotales: int
- preferencias: List
+ ganarPuntosFidelidad(costeEstancia: double): void
+ canjearPuntosFidelidad(puntos: int): booleano
+ obtenerNivelFidelidad(): String
+ agregarPreferencia(preferencia: String): void
}
class Habitacion {
- numeroHabitacion: String
- tipoHabitacion: TipoHabitacion
- capacidad: int
- precioPorNoche: double
- comodidades: List
- disponible: booleano
+ reservarHabitacion(cliente: Cliente, fechas: RangoFechas): booleano
+ liberarHabitacion(): void
+ obtenerPrecio(cliente: Cliente): double
+ agregarComodidad(comodidad: String): void
+ obtenerEstadoHabitacion(): String
}
class Reserva {
- idReserva: String
- fechaEntrada: Fecha
- fechaSalida: Fecha
- precioTotal: double
- estado: EstadoReserva
- solicitudesEspeciales: String
+ calcularPrecioTotal(): double
+ confirmarReserva(): void
+ checkIn(): void
+ checkOut(): booleano
+ actualizarFechas(nuevaEntrada: Fecha, nuevaSalida: Fecha): booleano
+ obtenerDuracion(): int
}
' Enumeración
enum TipoHabitacion {
ESTANDAR
DELUXE
SUITE
PRESIDENCIAL
}
' Enumeración
enum EstadoReserva {
PENDIENTE
CONFIRMADA
CHECKED_IN
CHECKED_OUT
CANCELADA
}
' Relaciones
' Implementación de interfaz (línea punteada con triángulo)
IReservable <|.. Reserva : implementa
IPagable <|.. Reserva : implementa
' Herencia abstracta (línea sólida con triángulo)
Persona <|-- Cliente : extiende
' Composición (rombo sólido) - La Habitación es parte de la Reserva
Reserva *-- "1..*" Habitacion : contiene
' Asociación (línea sólida simple) con multiplicidad
Cliente "1" -- "0..*" Reserva : realiza
' Dependencia (flecha punteada) - Cliente depende de TipoHabitacion
Cliente ..> TipoHabitacion : tiene nivel de fidelidad basado en
' Asociación con etiqueta personalizada
Reserva "1" --o "1" Cliente : reservada por
' Realización de interfaz por clase abstracta (conector adicional opcional)
IReservable <|.. Habitacion : implementa
@enduml Diagramas de Componentes y Despliegue
Mapea componentes de software, nodos físicos, artefactos y entornos de despliegue para visualizar la distribución de software a través de infraestructura de hardware o en la nube.
@startuml
title Diagrama de Componentes de Aplicación Web
package "Capa Cliente" {
[Navegador Web] as Browser
[Aplicación Móvil] as Mobile
}
package "Servidor de Aplicación" {
[API Gateway] as Gateway
[Servicio de Usuario] as UserService
[Servicio de Pedidos] as OrderService
[Servicio de Pago] as PaymentService
}
package "Capa de Base de Datos" {
database "Base de Datos de Usuarios" as UserDB
database "Base de Datos de Pedidos" as OrderDB
}
package "Servicios de Terceros" {
[API de Stripe] as Stripe
}
' Conexiones
Browser --> Gateway : HTTP / REST
Mobile --> Gateway : HTTP / REST
Gateway --> UserService : REST Interno
Gateway --> OrderService : REST Interno
UserService --> UserDB : Leer / Escribir
OrderService --> OrderDB : Leer / Escribir
OrderService --> PaymentService : Procesar Pago
PaymentService --> Stripe : HTTPS / API
@enduml 
@startuml
title Diagrama de Despliegue - Aplicación Web de 3 Capas
skinparam componentStyle rectangle
node "Escritario Cliente" as clientNode {
node "Navegador Web" as browser {
artifact "Frontend de Aplicación Web (HTML/JS)" as frontend
}
}
node "Servidor de Aplicación" as appServerNode {
node "Contenedor de Servlets (Tomcat)" as tomcat {
artifact "API Backend (archivo WAR)" as appApi
}
}
node "Servidor de Base de Datos" as databaseNode {
database "PostgreSQL" as postgres {
artifact "Esquema de Base de Datos de la Aplicación" as dbSchema
}
}
clientNode -- appServerNode : HTTPS (Puerto 443)
appServerNode -- databaseNode : JDBC (Puerto 5432)
@enduml 
Diagramas de Comportamiento e Interacción
Diagramas de Secuencia
El tipo de diagrama PlantUML más popular. Rastrea interacciones paso a paso, llamadas de API sincrónicas/asincrónicas y flujos de mensajes entre actores y sistemas a lo largo del tiempo.
@startuml
título Flujo de Autenticación de Usuario
actor "Usuario" como user
participante "Aplicación Web" como app
participante "API de Autenticación" como auth
database "Base de Datos de Usuario" como db
user -> app : Ingresar Credenciales
activar app
app -> auth : POST /api/v1/login
activar auth
auth -> db : Consultar usuario por correo electrónico
activar db
db --> auth : Devolver registro de usuario y hash
desactivar db
alt Credenciales Válidas
auth -> auth : Verificar contraseña y generar JWT
auth --> app : 200 OK (Token y Perfil)
app --> user : Redirigir al Panel de Control
else Credenciales Inválidas
auth --> app : 401 No Autorizado (Error)
app --> user : Mostrar "Credenciales Inválidas"
end
desactivar auth
desactivar app
@enduml 
Diagramas de Casos de Uso
Define los límites del sistema, actores, objetivos del usuario y alcance funcional.
@startuml
título Sistema de Compras en Línea - Diagrama de Casos de Uso
dirección de izquierda a derecha
actor Cliente
actor "Cliente Registrado" como RegCustomer
actor "Pasarela de Pago" como PaymentSystem
Cliente <|-- RegCustomer rectángulo "Sistema de Comercio Electrónico" { caso de uso "Navegar Productos" como UC_Browse caso de uso "Buscar Artículos" como UC_Search caso de uso "Gestionar Carrito" como UC_Cart caso de uso "Finalizar Pedido" como UC_Checkout caso de uso "Aplicar Cupón de Descuento" como UC_Coupon caso de uso "Procesar Pago" como UC_Payment caso de uso "Ver Historial de Pedidos" como UC_History } Cliente --> UC_Browse
Cliente --> UC_Search
Cliente --> UC_Cart
Cliente --> UC_Checkout
RegCustomer --> UC_History
UC_Checkout .> UC_Payment : <>
UC_Checkout <.. UC_Coupon : <>
UC_Payment -- PaymentSystem
@enduml 
Diagramas de Actividad y Estado
Flujogramas de lógica empresarial compleja, flujos algorítmicos, transiciones de máquinas de estado y concurrencia.
@startuml
título Proceso de Ejecución de Pedidos
|Cliente|
inicio
:Realizar Pedido;
:Enviar Detalles de Pago;
|Sistema de Pedidos|
si (Pago Válido?) entonces (sí)
:Reservar Inventario;
' División de concurrencia
bifurcación
|Almacén|
:Recoger Artículos del Estante;
:Empaquetar Artículos en Caja;
bifurcación nuevamente
|Facturación|
:Generar Factura PDF;
:Cobrar Método de Pago;
fin bifurcación
|Envío|
:Adjuntar Etiqueta de Envío;
:Entregar al Mensajero;
|Cliente|
:Recibir Paquete;
fin
si no (no)
|Sistema de Pedidos|
:Enviar Aviso de Fallo de Pago;
|Cliente|
:Actualizar Método de Pago;
fin
endif
@enduml 
@startuml
título Ciclo de Vida del Pedido de Comercio Electrónico
[*] --> Pendiente : Pedido Realizado
estado Pendiente {
[*] --> EsperandoPago
EsperandoPago --> PagoFallido : Error de Pago
PagoFallido --> EsperandoPago : Reintentar Pago
}
Pendiente --> Procesando : Pago Autorizado
Pendiente --> Cancelado : Usuario Cancela Pedido
estado Procesando {
[*] --> Empaquetado
Empaquetado --> ListoParaEnvío : Control de Calidad Aprobado
}
Procesando --> Enviado : Entrega al Transportista
Enviado --> Entregado : Entrega Confirmada
Enviado --> Devuelto : Entrega Fallida / Rechazada
Entregado --> [*]
Cancelado --> [*]
Devuelto --> [*]
@enduml 
Diagramas de Temporización
Detalla transiciones de estado precisas e interacciones de objetos en marcos de tiempo discretos: ideal para sistemas embebidos o diseño de hardware en tiempo real.
@startuml
título Diagrama de Temporización de Transferencia de Datos SPI
robusto "Reloj (SCLK)" como CLK
binario "Selección de Chip (CS)" como CS
binario "Salida del Maestro (MOSI)" como MOSI
conciso "Bus de Datos (MISO)" como MISO
@0
CS está Alto
CLK está Bajo
MOSI está Bajo
MISO está "Inactivo"
@1
CS está Bajo
MISO está "Cabecera"
@2
CLK está Alto
MOSI está Alto
@3
CLK está Bajo
@4
CLK está Alto
MOSI está Bajo
MISO está "Carga"
@5
CLK está Bajo
@6
CS está Alto
CLK está Bajo
MOSI está Bajo
MISO está "Inactivo"
@enduml 
3. Arquitectura de Alto Nivel y Diagramas Específicos del Dominio
Más allá de la UML tradicional, PlantUML destaca en la representación de sistemas de software multicapa y arquitecturas de datos utilizando bibliotecas de extensión especializadas.
Diagramas del Modelo C4
Expresa la arquitectura de software en diferentes niveles de abstracción: Contexto, Contenedor, Componente y Código, haciendo que el diseño del sistema sea comprensible tanto para partes interesadas técnicas como no técnicas.
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
TÍTULO Diagrama de contexto del sistema para el sistema de banca por internet
Persona(customer, "Cliente de banca personal", "Un cliente del banco, con cuentas bancarias personales.")
Sistema(banking_system, "Sistema de banca por internet", "Permite a los clientes ver información sobre sus cuentas bancarias y realizar pagos.")
Sistema_Ext(mainframe, "Sistema bancario mainframe", "Almacena toda la información bancaria principal sobre clientes, cuentas, transacciones, etc.")
Sistema_Ext(email_system, "Sistema de correo electrónico", "El sistema de correo electrónico interno Microsoft Exchange.")
Rel(customer, banking_system, "Consulta los saldos de las cuentas y realiza pagos utilizando")
Rel(banking_system, mainframe, "Obtiene información de las cuentas y realiza pagos utilizando")
Rel(banking_system, email_system, "Envía correos electrónicos utilizando")
Rel_Back(email_system, customer, "Envía correos electrónicos a")
@enduml 
Diagramas ArchiMate
Apoya el modelado de arquitectura empresarial en las capas de negocio, aplicación y tecnología para mapear la estrategia organizacional a los sistemas operativos.
@startuml
!include <archimate/Archimate>
TÍTULO Muestra de ArchiMate - Pago de facturas en línea
Agrupación(business, "Capa de negocio"){
Proceso_de_negocio(payBillProcess, "Proceso de pago de facturas")
Objeto_de_negocio(bankAccount, "Cuenta bancaria del cliente")
Servicio_de_negocio(paymentService, "Servicio de negocio de pago de facturas")
}
Agrupación(application, "Capa de aplicación"){
Componente_de_aplicación(bankingApp, "Aplicación de banca móvil")
Función_de_aplicación(paymentProcessing, "Lógica de procesamiento de pagos")
Objeto_de_dato_de_aplicación(transactionRecord, "Carga útil de datos de transacción")
}
Agrupación(technology, "Capa de tecnología"){
Artefacto_tecnológico(jwtToken, "Token de sesión encriptado")
Servicio_tecnológico(apiGateway, "Servicio de puerta de enlace API")
Servicio_tecnológico(dbService, "Servicio de base de datos principal")
}
Rel_Flow_Right(payBillProcess, bankAccount, "")
Rel_Serving_Up(paymentService, payBillProcess, "")
Rel_Specialization_Up(paymentProcessing, paymentService, "")
Rel_Flow_Right(transactionRecord, paymentProcessing, "")
Rel_Assignment_Left(bankingApp, paymentProcessing, "")
Rel_Realization_Up(jwtToken, transactionRecord, "")
Rel_Serving_Up(apiGateway, paymentProcessing, "")
Rel_Serving_Up(dbService, apiGateway, "")
@enduml 
Diagramas Entidad-Relación (DER)
Genera visualizaciones limpias de esquemas de bases de datos, incluyendo la notación estándar de pie de cuervo y los modelos DER de Chen.
@startuml
TÍTULO Esquema de base de datos de comercio electrónico (Pie de cuervo)
' Ocultar iconos circulares para entidades
hide circle
skinparam linetype ortho
entidad "Usuario" as user {
* user_id : INT <>
--
* email : VARCHAR(255)
* password_hash : VARCHAR(255)
* created_at : TIMESTAMP
}
entidad "Perfil_de_cliente" as profile {
* profile_id : INT <>
--
* user_id : INT <>
* first_name : VARCHAR(100)
* last_name : VARCHAR(100)
phone : VARCHAR(20)
}
entidad "Pedido" as order {
* order_id : INT <>
--
* user_id : INT <>
* order_date : TIMESTAMP
* total_amount : DECIMAL(10,2)
* status : VARCHAR(50)
}
entidad "Item_de_pedido" as item {
* order_item_id : INT <>
--
* order_id : INT <>
* product_id : INT <>
* quantity : INT
* unit_price : DECIMAL(10,2)
}
entidad "Producto" as product {
* product_id : INT <>
--
* sku : VARCHAR(50)
* name : VARCHAR(150)
description : TEXT
* price : DECIMAL(10,2)
}
' Relaciones
user ||--o| profile : "tiene"
user ||--o{ order : "realiza"
order ||--|{ item : "contiene"
product ||--o{ item : "aparece en"
@enduml 
Mapas de red e infraestructura
Renderiza topologías de red, nodos de servidor, conexiones en la nube y firewalls sin esfuerzo.
@startnwdiag
TÍTULO Topología de red empresarial
nwdiag {
red External_Internet {
address = "0.0.0.0/0"
user_client [address = "203.0.113.15", description = "Usuario remoto"];
edge_firewall [address = "192.168.1.1", description = "FW perimetral"];
}
red DMZ_Zone {
address = "192.168.1.0/24"
edge_firewall;
load_balancer [address = "192.168.1.10", description = "Balanceador de carga Nginx"];
mail_server [address = "192.168.1.25", description = "Servidor SMTP"];
internal_firewall [address = "192.168.1.254", description = "FW interno"];
}
red Private_LAN {
address = "10.0.1.0/24"
internal_firewall;
app_server_01 [address = "10.0.1.50", description = "Nodo API 1"];
app_server_02 [address = "10.0.1.51", description = "Nodo API 2"];
db_master [address = "10.0.1.100", description = "PostgreSQL Principal"];
}
red Management_Subnet {
address = "10.0.99.0/24"
internal_firewall;
admin_bastion [address = "10.0.99.5", description = "Host bastión SSH"];
monitoring_node [address = "10.0.99.20", description = "Host Prometheus"];
}
}
@endnwdiag 
4. Visuales de planificación, gestión y lluvia de ideas
PlantUML no se limita al diseño de software; también es una herramienta poderosa para la gestión de proyectos y la lluvia de ideas de equipos.
Diagramas de Gantt
Planifica cronogramas de proyectos, dependencias de tareas, hitos y asignación de recursos utilizando marcado de texto limpio.
gantt
título Calendario de Lanzamiento de Producto de Software
formatoFecha YYYY-MM-DD
formatoEje %b %d
sección Planificación y Diseño
Recopilación de Requisitos :a1, 2026-09-01, 10d
Diseño de Arquitectura :a2, después de a1, 10d
sección Desarrollo
Desarrollo de API Backend :b1, después de a2, 15d
Desarrollo de UI Frontend :b2, después de a2, 15d
sección Pruebas y Lanzamiento
Pruebas de Integración :c1, después de b1 y b2, 8d
Auditoría de Seguridad :c2, después de c1, 5d
Lanzamiento a Producción :hitomill, m1, después de c2, 0d 
Estructura de Desglose de Trabajo (EDT)
Descomponer proyectos complejos en entregables jerárquicos y fragmentos de tareas manejables.
@startwbs
título EDT de Rediseño de Sitio Web
* Proyecto de Rediseño de Sitio Web
** 1. Descubrimiento y Estrategia
*** 1.1 Entrevistas con Partes Interesadas
*** 1.2 Auditoría de Competidores
*** 1.3 Aprobación de Alcance y Estrategia
** 2. Diseño UX/UI
*** 2.1 Wireframing
**** 2.1.1 Diseños para Escritorio
**** 2.1.2 Diseños para Móvil
*** 2.2 Sistema de Diseño
**** 2.2.1 Biblioteca de Componentes
**** 2.2.2 Tipografía y Guía de Estilo
** 3. Desarrollo Técnico
*** 3.1 Frontend
**** 3.1.1 Plantillas de Página
**** 3.1.2 Integraciones de API
*** 3.2 CMS y Backend
**** 3.2.1 Tipos de Publicación Personalizados
**** 3.2.2 Migración de Base de Datos
** 4. QA y Lanzamiento
*** 4.1 Pruebas Cruzadas de Navegador
*** 4.2 Migración de Contenido
*** 4.3 Cambio de DNS y Puesta en Marcha
@endwbs 
Mapas Mentales
Capturar ideas estructuradas, taxonomías de funciones y notas de exploración técnica rápidamente durante sesiones de equipo.
@startmindmap
título Mapa de Funciones de Plataforma de Comercio Electrónico
* Plataforma de Comercio Electrónico
** Gestión de Cuentas de Usuario
*** Autenticación Social (Google, Apple)
*** Autenticación Multifactor
*** Historial de Pedidos y Seguimiento
** Catálogo de Productos y Búsqueda
*** Búsqueda Facetada y Filtros
*** Sincronización de Inventario
*** Reseñas y Valoraciones de Productos
** Finalización de Compra y Pagos
*** Pasarelas de Pago (Stripe, PayPal)
*** Motor de Cupones y Promociones
*** Finalización de Compra para Invitados con un Solo Clic
** Soporte al Cliente
*** Asistente de Chat en Vivo
*** Portal de Devoluciones Automatizado
@endmindmap 
5. Escribir y Renderizar PlantUML Rápidamente: La Ventaja de VPasCode
Aunque PlantUML es extremadamente capaz, configurar entornos Java locales, dependencias de Graphviz y herramientas de línea de comandos puede generar fricción. Utilizar una herramienta web dedicada,Herramienta PlantUMLelimina por completo estos obstáculos.
Visual Paradigm VPasCodees una plataforma unificada de diagramas como código diseñada específicamente para agilizar los flujos de trabajo de texto a diagrama. Con las mejoras recientes destacadas en nuestroGran Actualización de VPasCode: Generar y Modificar Diagramas Instantáneamente con IA, ahora soporta capacidades nativas de IA directamente dentro del editor.
Beneficios Clave de VPasCode:
- Generación y Modificación de Diagramas con IA Nativa: Cree diagramas completos de PlantUML, Mermaid o Graphviz instantáneamente utilizando indicaciones en lenguaje natural (por ejemplo,“Genere un diagrama de casos de uso en PlantUML para un sistema de cajero automático”) o instruya a la IA para que modifique el código existente sobre la marcha.
- Plataforma Online Sin Configuración: Acceda instantáneamente a un editor robusto en vpascode.com sin instalar compiladores locales o complementos. Descubra más en elVista general de VPasCode.
- Detección automática de formato y vista previa en tiempo real:Pegue su script y VPasCode detectará automáticamente si es PlantUML, Mermaid o Graphviz, generando actualizaciones en vivo al instante mientras escribe.
- Corrección de errores de código impulsada por IA: Si encuentra un error de sintaxis, simplemente haga clic en “Corregir con IA”. VPasCode repara el código y proporciona una comparación lado a lado con explicaciones claras para que pueda dominar la sintaxis de PlantUML más rápido.
- Traducción nativa de diagramas con IA: Traduzca las etiquetas y notas del diagrama a varios idiomas directamente dentro del editor, ideal para equipos de desarrollo globales.
- Exportación flexible e integración con documentación: Exporte imágenes PNG de alta resolución o vectores SVG escalables de forma gratuita. También puede enviar diagramas directamente a Visual Paradigm OpenDocs utilizando su guía de la función de diagramas como código.
(Nota: Las funciones avanzadas de generación, modificación y corrección de errores de diagramas con IA están disponibles en Visual Paradigm Online Deluxe Edition / Visual Paradigm Desktop Professional Edition+).
6. Ejemplo de inicio rápido: Renderizado de un diagrama de secuencia en VPasCode
Para ver lo fácil que es usar un editor UML gratuito como VPasCode, considere este script básico de diagrama de secuencia PlantUML:
@startuml
autonumber
actor User
participant "Editor VPasCode" as Editor
participant "Motor IA" as AI
User -> Editor: Pegar código PlantUML
Editor -> Editor: Detección automática de formato y renderizado en vivo
alt Error de sintaxis detectado
User -> Editor: Hacer clic en "Corregir con IA"
Editor -> AI: Enviar código roto
AI --> Editor: Devolver código corregido y diff
end
Editor --> User: Mostrar diagrama vectorial limpio (SVG/PNG)
@enduml 
Simplemente copie el código anterior, abra VPasCode y péguelo en el editor para ver el renderizado en vivo instantáneo y experimentar con las mejoras automatizadas de IA.
7. Conclusión y próximos pasos
PlantUML permite a los equipos mantener documentación visual clara, versionable y consistente en UML, arquitectura, esquemas de bases de datos y gráficos de gestión de proyectos. Combinado con una herramienta moderna de herramienta PlantUML como VPasCode, la escritura técnica se vuelve más rápida, libre de errores y colaborativa de forma fluida.
¿Listo para optimizar su proceso de diagramación? Comience a editar y renderizar diagramas PlantUML gratis hoy en vpascode.com.



