Diagrammi come codice — 10 min di lettura

Comprendere il formato PlantUML

PlantUML ti permette di scrivere diagrammi come testo semplice. Scopri cos'è, come GanttTool lo utilizza internamente per generare diagrammi di Gantt e quali altri tipi di diagrammi supporta.

10 min di lettura Giugno 2026 Di GanttTool

Cos'è PlantUML?

PlantUML è uno strumento open-source che ti permette di creare diagrammi a partire da descrizioni in testo semplice. Invece di trascinare riquadri su una tela, scrivi alcune righe di sintassi semplice e PlantUML genera un diagramma professionale per te. Questo approccio è spesso chiamato "diagrammi come codice" o "testo a diagramma".

Un diagramma PlantUML minimo ha questo aspetto: apri con un tag @start<tipo>, descrivi la struttura in alcune righe leggibili e chiudi con @end<tipo>. Lo strumento analizza questo testo e produce un SVG, PNG o PDF — ovunque tu lo generi.

Perché scrivere diagrammi come testo?

  • Controllo versione — Il testo semplice produce diff puliti in Git. Puoi tracciare ogni modifica a un diagramma, revisionarla in una pull request e tornare indietro se qualcosa si rompe.
  • Velocità — Digitare [Attività A] lasts 5 days è più veloce che disegnare una barra su una tela e ridimensionarla.
  • Coerenza — Il motore di rendering applica automaticamente spaziatura, caratteri e colori uniformi. Ti concentri sul contenuto, non sul layout.
  • Portabilità — Un file di testo .puml è minuscolo, leggibile e produce lo stesso risultato ovunque.
  • Automazione — I diagrammi possono essere generati programmaticamente dai dati, integrati nelle pipeline CI e mantenuti sincronizzati con il codice.

Suggerimento: PlantUML è ampiamente utilizzato nella documentazione dell'ingegneria del software (diagrammi di architettura, flussi API), ma il suo supporto per i diagrammi di Gantt lo rende altrettanto potente per project manager e team leader che desiderano pianificazioni riproducibili e versionate.

Come GanttTool utilizza PlantUML

GanttTool ti offre un editor GUI visivo — aggiungi attività, imposti durate, definisci dipendenze, scegli colori — ma dietro le quinte tutto ciò che costruisci viene compilato in codice PlantUML. Quel codice viene quindi inviato a un server di rendering che lo converte in un diagramma SVG visualizzato nel tuo browser.

La pipeline di rendering

🖱️
Editor GUI
attività, date, colori
📄
Codice PlantUML
@startgantt … @endgantt
🔌
POST /api/kroki
rotta Next.js
🌐
PlantUML / Kroki
server di rendering
🖼️
Diagramma SVG
visualizzato nel browser

La rotta API in /api/kroki funge da proxy tra il tuo browser e i server di rendering. Funziona in due fasi:

  • Primario: server PlantUML.com — Il codice PlantUML viene compresso con Deflate (livello 9) e codificato usando la variante base-64 personalizzata di PlantUML. La stringa risultante viene aggiunta a https://www.plantuml.com/plantuml/svg/~1{encoded} come richiesta GET. Un timeout di 3 secondi protegge da risposte lente.
  • Fallback: server Kroki.io — Se PlantUML.com fallisce o va in timeout, il testo PlantUML grezzo viene inviato tramite POST come text/plain a https://kroki.io/plantuml/svg con un timeout di 5 secondi. Kroki è un gateway di rendering open-source che supporta molti formati di diagrammi.

Qualunque server risponda per primo con un SVG valido, quell'immagine viene restituita al browser con un header Content-Type: image/svg+xml e visualizzata in linea. Non devi mai preoccuparti della codifica o del fallback — funziona e basta.

Dietro le quinte: La vista "Codice PlantUML" nella barra laterale di GanttTool ti mostra il testo esatto che viene inviato al server. Puoi copiarlo, incollarlo in PlantText o nel server online PlantUML e ottenere lo stesso diagramma.

Sintassi dei diagrammi di Gantt in PlantUML

Ogni diagramma di Gantt PlantUML è racchiuso tra i tag @startgantt / @endgantt. All'interno, descrivi il tuo progetto in uno stile naturale e leggibile.

Struttura base delle attività

plantuml — gantt base
@startgantt
' Titolo del progetto e scala
title Progetto di restyling del sito web
Project starts 2026-07-01
printscale weekly

' Separatore di fase
-- Scoperta --

' Attività regolari: [Nome] lasts N days
[Raccolta requisiti] lasts 5 days
[Analisi concorrenza] lasts 3 days

-- Design --

[Wireframe] lasts 7 days
[Design visivo] lasts 10 days
[Design visivo] starts at [Wireframe]'s end

-- Sviluppo --

[Sviluppo frontend] lasts 14 days
[Sviluppo frontend] starts at [Design visivo]'s end
[Integrazione backend] lasts 10 days
[Integrazione backend] starts at [Sviluppo frontend]'s end

@endgantt

Milestone

Le milestone hanno durata zero e appaiono come un marcatore a diamante sulla timeline. Definiscile con happens at anziché lasts.

plantuml — milestone e colori
@startgantt
Project starts 2026-07-01

[Sviluppo] lasts 14 days and is colored in CornflowerBlue
[Test QA] lasts 5 days and is colored in LightGreen
[Test QA] starts at [Sviluppo]'s end

' Milestone — accade alla fine di un'attività specifica
[Release v1.0] happens at [Test QA]'s end

' Percentuale di completamento
[Sviluppo] is 70% completed

@endgantt

Separatori di fase e impostazioni di progetto

Racchiudi i nomi delle sezioni tra doppi trattini (-- Nome fase --) per inserire una riga separatrice. Combina con le impostazioni globali di progetto per un controllo completo.

plantuml — separatori e impostazioni
@startgantt
title Lancio prodotto Q3
Project starts 2026-07-01
printscale weekly zoom 2
saturday are closed
sunday are closed
today is colored in Lavender

-- Pianificazione --
[Riunione di avvio] lasts 1 day
[Definizione ambito] lasts 3 days
[Definizione ambito] starts at [Riunione di avvio]'s end

-- Realizzazione --
[Sprint ingegneria 1] lasts 10 days
[Sprint ingegneria 1] starts at [Definizione ambito]'s end
[Sprint ingegneria 2] lasts 10 days
[Sprint ingegneria 2] starts at [Sprint ingegneria 1]'s end

-- Lancio --
[Test di fumo] lasts 2 days
[Test di fumo] starts at [Sprint ingegneria 2]'s end
[Go live] happens at [Test di fumo]'s end

@endgantt

Sintassi Gantt chiave a colpo d'occhio

Sintassi Cosa fa
[Task] lasts N days Crea un'attività con una durata in giorni
[Task] lasts N weeks Durata in settimane
[B] starts at [A]'s end Dipendenza fine-inizio
[M] happens at [A]'s end Milestone alla fine dell'attività
-- Nome fase -- Inserisce una riga separatrice di fase
[T] is 50% completed Mostra il progresso di completamento
printscale weekly zoom 2 Scala settimanale, zoom 2x
saturday are closed Salta i sabati nella durata
[T] is colored in Red Colore personalizzato della barra attività

PlantUML oltre i diagrammi di Gantt

Gantt è solo uno degli oltre una dozzina di tipi di diagrammi supportati da PlantUML. La stessa filosofia di testo semplice — tag di apertura, descrizione, tag di chiusura — si applica a tutti. Ecco una panoramica dei tipi più utilizzati.

Diagrammi di sequenza

I diagrammi di sequenza mostrano come oggetti o componenti interagiscono nel tempo — perfetti per flussi API, sequenze di autenticazione e comunicazione tra microservizi.

plantuml — diagramma di sequenza
@startuml
title Flusso di login utente

Browser -> API: POST /login {email, password}
API -> Database: SELECT user WHERE email=?
Database --> API: record utente
alt credenziali valide
    API --> Browser: 200 OK + token JWT
else non valide
    API --> Browser: 401 Non autorizzato
end
@enduml

Diagrammi di classe

I diagrammi di classe modellano la struttura orientata agli oggetti: classi, attributi, metodi e relazioni. Essenziali per la documentazione dell'architettura software.

plantuml — diagramma di classe
@startuml
class Progetto {
    +id: String
    +nome: String
    +dataInizio: Date
    +getAttività(): Attività[]
}

class Attività {
    +id: String
    +nome: String
    +durata: Number
    +completa(): void
}

class Milestone {
    +nome: String
    +data: Date
}

Progetto "1" o-- "molti" Attività
Progetto "1" o-- "molti" Milestone
Attività <|-- Milestone
@enduml

Altri tipi di diagrammi PlantUML

👤

Diagrammi dei casi d'uso

Mostrano quali attori interagiscono con quali funzioni del sistema. Utili per la raccolta dei requisiti e le presentazioni agli stakeholder. Sintassi: @startuml con actor, usecase e frecce -->.

🔄

Diagrammi di attività

Modellano flussi di lavoro, processi aziendali e flussi decisionali con nodi di inizio/fine, biforcazioni, unioni e rami condizionali. Pensali come diagrammi di flusso con semantica formale.

🔀

Diagrammi di stato

Rappresentano il ciclo di vita di un oggetto attraverso stati e transizioni. Perfetti per modellare lo stato degli ordini, gli stati delle sessioni utente o le modalità dei dispositivi.

🧩

Diagrammi dei componenti

Mostrano come sono assemblati componenti di sistema, librerie e interfacce. Ottimi per documentare architetture a microservizi e topologie di deployment.

🧠

Mappe mentali

Brainstorming e organizzazione di idee in un formato ad albero radiale. Utilizza marcatori * indentati per definire la gerarchia. Perfetto per scomposizioni di funzionalità e mappe della conoscenza.

🗄️

Entità-Relazione (ER)

Modellano schemi di database con entità, attributi e relazioni. Supportati tramite @startuml / parola chiave entity o tramite estensioni ER dedicate.

Ecco un rapido esempio di una mappa mentale PlantUML per illustrare come i diagrammi non-Gantt seguano la stessa filosofia testuale:

plantuml — mappa mentale
@startmindmap
* Pianificazione progetto
** Ambito
*** Requisiti
*** Deliverable
** Pianificazione
*** Diagramma di Gantt
*** Milestone
** Team
*** Ruoli
*** Risorse
** Rischi
*** Piano di mitigazione
@endmindmap

Prova PlantUML online

Non devi installare nulla per iniziare a sperimentare con PlantUML. L'ecosistema dispone di eccellenti renderer online gratuiti:

Flusso di lavoro consigliato: Costruisci il tuo diagramma di Gantt visivamente in GanttTool, clicca su "Codice PlantUML" nella barra laterale per vedere il testo generato, quindi incollalo in PlantText o PlantUML.com se vuoi iterare sulla sintassi grezza. Ottieni il meglio di entrambi i mondi: un editor visivo e pieno accesso al formato diagrammi-come-codice sottostante.

Inizia a creare diagrammi di Gantt

GanttTool ti dà la potenza di PlantUML senza dover scrivere una sola riga di codice. Usa l'editor visivo per costruire la pianificazione del tuo progetto e lascia che l'app gestisca automaticamente la sintassi PlantUML e il rendering del diagramma.

  • Aggiungi attività, milestone e separatori di fase con un clic.
  • Imposta durate, dipendenze, colori e percentuali di completamento visivamente.
  • Ispeziona il codice PlantUML generato in qualsiasi momento — copialo e riutilizzalo ovunque.
  • Esporta come SVG o copia negli appunti come PNG per presentazioni e documenti.
  • Descrivi il tuo progetto in italiano semplice e lascia che l'assistente AI generi una bozza Gantt completa.

Prova GanttTool — gratuito, nessun account richiesto

Crea un diagramma di Gantt PlantUML professionale in pochi minuti. L'app genera il codice PlantUML per te — esporta, condividi o incollalo ovunque.

Apri GanttTool — è gratuito