Diagrammi di Gantt
Attività
Proprietà
Dipendenze
JSON del diagramma
È la stessa cosa che si vede a sinistra, scritta per esteso: chi preferisce digitare può lavorare qui e premere Applica. Il testo si aggiorna a ogni modifica fatta nei pannelli; le modifiche fatte qui hanno effetto solo dopo Applica.
Un'invenzione di più di un secolo fa
Il diagramma che porta il nome di Henry L. Gantt ha due padri. Karol Adamiecki, ingegnere polacco, disegnava dal 1896 un harmonogram: strisce di carta che scorrevano su una tavola graduata, una per lavorazione, con le date d'inizio e di fine e le dipendenze fra l'una e l'altra. Lo pubblicò solo nel 1931, in polacco, e per decenni fuori dalla Polonia non se ne seppe niente (Marsh, 1975). Gantt, negli Stati Uniti, arrivò a un'idea simile negli anni Dieci del Novecento, per controllare la produzione nelle officine e poi nei cantieri della Prima guerra mondiale; il libro di Wallace Clark del 1922 la diffuse in molte lingue, e con il nome di Gantt (Wilson, 2003).
L'idea è semplice e per questo è durata: il tempo in orizzontale, una riga per attività, e una barra lunga quanto la sua durata. Si vede d'un colpo che cosa si sovrappone, che cosa è in ritardo rispetto a una data, quanto manca alla fine.
Il disegno non basta: le reti
Un diagramma di Gantt dice quando, ma non dice perché. Se un'attività slitta di una settimana, quali altre si spostano? Il foglio disegnato a mano non lo sa. La risposta arrivò alla fine degli anni Cinquanta, quasi insieme e da due parti: il metodo del cammino critico (CPM) di Kelley e Walker, nato per la manutenzione degli impianti chimici, e il PERT della Marina statunitense per il programma Polaris (Malcolm e altri, 1959). Entrambi descrivono il progetto come una rete: le attività e i vincoli di precedenza fra di esse. Le date diventano un risultato, non un dato.
Questa pagina tiene insieme le due cose. Il disegno è un Gantt, ma le barre delle attività automatiche sono il risultato di un calcolo sulla rete delle dipendenze: si cambia una durata e tutto quello che ne dipende si sposta da solo.
Il calcolo: un ordine e due passate
Per prima cosa le attività si mettono in ordine topologico: ognuna dopo tutte quelle da cui dipende. L'algoritmo è quello di Kahn (1962): si parte dalle attività senza predecessori e, ogni volta che se ne sistema una, si tolgono i vincoli che uscivano da lei. Se alla fine ne resta qualcuna, è perché le dipendenze formano un ciclo — A aspetta B che aspetta A — e il piano è impossibile così com'è scritto: la pagina lo dice e disegna comunque il resto.
Poi la passata in avanti: seguendo l'ordine, ogni attività comincia appena tutti i suoi vincoli lo permettono. Il massimo delle fini è la fine del progetto. Infine la passata all'indietro, dalla fine verso l'inizio: per ogni attività si calcola la fine più tarda che non ritarda il progetto. La differenza fra le due fini è il margine totale, e le attività a margine zero sono il cammino critico: se una di loro ritarda di un giorno, ritarda di un giorno tutto il progetto (Kelley, 1961).
I test della libreria riproducono l'esempio classico del manuale di Hillier e Lieberman, la costruzione di un edificio in quattordici attività: 44 settimane, cammino critico A‑B‑C‑E‑F‑J‑L‑N, e i margini delle altre attività uguali a quelli del libro.
Accanto al margine totale c'è il margine libero: quanto un'attività può slittare senza spostare nessun'altra attività, nemmeno di un giorno. Il totale è sempre almeno quanto il libero, e la differenza dice una cosa che il solo totale nasconde: che il margine è condiviso. Nell'esempio del manuale D, G e H hanno quattro settimane di margine totale e nessun margine libero: le quattro settimane sono della catena D‑G‑H‑M, e se le consuma D non restano più a G, H e M. È l'ultima, M, ad averle davvero libere.
Quattro vincoli, e il ritardo
Il vincolo più comune è fine → inizio: il successore comincia quando il predecessore è finito. Gli altri tre servono meno ma servono: inizio → inizio (due lavori che partono insieme, magari a qualche giorno di distanza), fine → fine (la documentazione finisce con lo sviluppo), inizio → fine (il vecchio sistema resta acceso finché il nuovo non comincia). Ogni vincolo può avere un ritardo: tre giorni per l'asciugatura, due per una revisione. Un ritardo negativo è un anticipo: il successore comincia prima che il predecessore finisca.
Un vincolo verso una fase vale per tutte le sue attività: «il collaudo comincia dopo lo sviluppo» significa dopo l'ultima attività dello sviluppo.
Il tempo lavorativo
Una durata di cinque giorni non è una settimana di calendario: dipende da quali giorni si lavora. Il calendario della pagina ha i giorni lavorativi della settimana, le festività e, sulla scala a ore, le fasce dell'orario. Tutta l'aritmetica — aggiungere una durata, sottrarla, misurare un margine — si fa in tempo lavorativo: il margine di un'attività che finisce venerdì e il cui successore comincia lunedì è zero, non due giorni.
Il tempo si conta in minuti su un orologio senza fuso orario. Sembra un dettaglio ed è una scelta: un piano parla di giorni del calendario, e con l'ora legale due giorni all'anno durano 23 e 25 ore; contati come istanti, sposterebbero le barre di un'ora e le date di un giorno.
Sulla scala a ore l'asse del tempo è compresso: la notte, la pausa e i giorni non lavorativi non occupano spazio. Con un orario di otto ore, altrimenti, due terzi del disegno sarebbero bianchi. Sulla scala a giorni invece i fine settimana restano, in grigio, perché lì servono a leggere il calendario.
Il compresso però non va sempre bene. Una macchina che gira giorno e notte, un turno a cavallo della mezzanotte, una prova che corre da sola per tutto il fine settimana: lì la notte è tempo vero, e toglierla dal disegno falserebbe le proporzioni. Per questi casi l'asse mostra, a richiesta, tutte le 24 ore: una barra è lunga quanto il tempo del calendario, e le ore fuori orario sono grigie come i giorni di riposo. Il calcolo non cambia, perché una durata conta sempre le sole ore lavorative: è il disegno a smettere di nascondere il resto.
Le festività nazionali si calcolano anno per anno. Quelle fisse sono una data; quelle legate alla
Pasqua — il lunedì dell'Angelo, il venerdì santo — dipendono dal calendario lunare della Chiesa, e la
pagina le ricava con l'algoritmo gregoriano pubblicato anonimo su Nature nel 1876, lo stesso
riportato dai manuali di astronomia: i test lo confrontano con le date note dal 1818 al 2285. Nel disegno
ogni colonna grigia di festa porta il suo nome: lo si legge passandoci sopra col mouse, e nel file SVG
esportato è un elemento <title>, lo stesso che leggono i lettori di schermo.
Non tutte le attività lavorano allo stesso modo: un cantiere lavora il sabato, un ufficio no, una macchina gira giorno e notte. Oltre al calendario del progetto se ne possono definire altri con un nome, che ereditano da lui tutto quello che non cambiano — le festività nazionali, per esempio — e darli alle attività, o a una fase per tutte le sue. La durata di un'attività e i suoi margini si contano nel suo calendario; il ritardo di una dipendenza in quello del successore, che è chi aspetta.
Date calcolate e date scritte
Ogni attività è automatica o a date scritte. L'automatica ha una durata e comincia appena può; si può darle un «non prima del». Quella a date scritte sta dove la si mette: è il caso di un seminario già fissato o di una consegna contrattuale. Le dipendenze le riguardano comunque: se una data scritta non rispetta un vincolo, il disegno lo segnala invece di spostarla di nascosto. È la distinzione che i programmi di pianificazione fanno fra attività programmate automaticamente e manualmente.
Fra le due c'è una via di mezzo: un'attività automatica con un vincolo di data, come nei programmi di pianificazione. «Deve iniziare il» e «deve finire il» la fissano a quella data, anche contro le dipendenze, e se le dipendenze la vorrebbero più tardi il disegno lo dice. «Non prima del» e «non deve finire prima del» la trattengono. I vincoli «entro» — deve iniziare, o finire, entro il — non la spostano affatto: fissano una scadenza. La passata all'indietro parte da lì invece che dalla fine del progetto, e se il piano la supera il margine diventa negativo, per quell'attività e per quelle da cui dipende: è il tempo da recuperare, e la pagina lo segnala come sforamento.
Togliendo la spunta a un'attività automatica, le date calcolate diventano date scritte: la barra resta dov'era, e da quel momento non si muove più da sola.
Le barre delle attività a date scritte si possono anche trascinare: il corpo della barra la sposta, i bordi ne cambiano l'inizio o la fine. Quelle calcolate no, ed è una scelta. I programmi di pianificazione lasciano trascinare anche un'attività automatica, ma per tenerla dove la si è lasciata le aggiungono di nascosto un vincolo «non prima del»: da quel momento, se il predecessore finisce prima, l'attività non si muove più, e nessuno ricorda perché. Qui un'attività calcolata si sposta cambiando quello che la calcola — la durata, le dipendenze, un «non prima del» scritto apposta — oppure diventa a date scritte, e allora si trascina.
Il piano che va avanti: la data di stato
Un piano si scrive all'inizio e si aggiorna mentre si lavora. L'avanzamento delle attività dice quanto è fatto; la data di stato dice a quando. Con una data di stato la pagina fa quello che fanno i programmi di pianificazione quando ripianificano il lavoro residuo: le attività finite restano dove erano; di quelle cominciate la parte fatta resta al suo posto e quella che manca riparte dalla data di stato, e la barra si spezza in due con un tratto punteggiato in mezzo; quelle non ancora cominciate non possono partire prima. Le dipendenze continuano a valere per il lavoro che resta: un'attività cominciata prima che il suo predecessore finisse non finisce prima di lui (è la logica mantenuta, il comportamento predefinito di questi programmi). Da lì il cammino critico e i margini si ricalcolano sul lavoro che resta, e si vede subito se la fine del progetto si è spostata.
Per vedere chi è indietro, e di quanto, c'è la linea di avanzamento: parte dalla data di stato e in ogni riga va a toccare il punto del piano in cui si sarebbe arrivati con il lavoro fatto. Se un'attività ha fatto quello che il piano chiedeva a quella data, la linea passa dritta; se ha fatto di meno, il punto cade prima e la linea fa un picco a sinistra, lungo quanto il ritardo; se ha fatto di più, il picco va a destra. Riga dopo riga ne viene una spezzata che in Giappone si chiama «linea del fulmine» (inazuma-sen) e che i programmi di pianificazione chiamano progress line.
Il piano di questo confronto è quello calcolato senza la data di stato, come se tutto fosse andato secondo le durate scritte, e il fatto si misura lì sopra, in tempo lavorativo. Un'attività che doveva cominciare e non l'ha fatto punta al suo inizio previsto; una finita in anticipo, alla sua fine prevista; un traguardo non raggiunto, alla sua data. Le fasi non hanno un punto proprio: si leggono dalle loro attività.
L'incertezza: il PERT a tre stime
Una durata scritta con un numero solo è una promessa che nessuno sa mantenere: «cinque giorni» vuol dire, di solito, «fra tre e dieci, più probabilmente cinque». Il PERT — Program Evaluation and Review Technique — nacque nel 1958 per il programma dei missili Polaris della Marina statunitense, fatto in gran parte di lavori mai fatti prima, per i quali una durata sicura non esisteva. Per questo chiede per ogni attività tre stime invece di una (Malcolm e altri, 1959):
- l'ottimistica \(a\): la durata se va tutto bene, che nella pratica si batte di rado;
- la più probabile \(m\): quella che capiterebbe più spesso rifacendo il lavoro molte volte;
- la pessimistica \(b\): la durata se va storto quello che di solito può andare storto, catastrofi escluse.
Le tre stime descrivono come si distribuisce la durata, e il PERT la approssima con una distribuzione beta: limitata fra \(a\) e \(b\), con il picco in \(m\), di solito asimmetrica perché i ritardi possibili sono più lunghi degli anticipi. Da quell'ipotesi, e dall'idea che fra \(a\) e \(b\) ci stiano circa sei deviazioni standard, vengono due formule semplici:
\[ t_e = \frac{a + 4m + b}{6} \qquad\qquad \sigma = \frac{b - a}{6} \]La durata attesa \(t_e\) pesa quattro volte la stima più probabile. Un'attività con un'ottimistica di 2 giorni, una probabile di 5 e una pessimistica di 14 dura in media 6 giorni, non 5: la coda dei ritardi sposta la media. Da dove vengano i pesi, e quanto siano un'approssimazione, lo discute Clark (1962).
Il progetto dura quanto il suo cammino critico, calcolato con le durate attese. Se le attività del cammino sono indipendenti, la loro somma per il teorema del limite centrale è circa normale: la durata attesa del progetto \(T_e\) è la somma delle \(t_e\), e la sua varianza la somma delle varianze \(\sigma^2\) lungo lo stesso cammino. Con queste due cifre si risponde alla domanda che conta davvero — che probabilità c'è di finire entro una data \(T\)? — misurando la distanza della data dalla fine attesa in deviazioni standard:
\[ z = \frac{T - T_e}{\sqrt{\sum_i \sigma_i^2}} \qquad\qquad P(\text{fine} \le T) = \Phi(z) \]dove \(\Phi\) è la funzione di ripartizione della normale standard. Con \(z = 0\) la data è la fine attesa e la probabilità è la metà; con \(z = 1\), una deviazione standard più in là, sale all'84 %; con \(z = 2\) al 98 %.
L'esempio dei test è ancora quello di Hillier e Lieberman, con le tre stime del libro per le quattordici attività del cantiere. Le durate attese sono quelle del calcolo deterministico, la fine attesa è a 44 settimane, e sul cammino critico A‑B‑C‑E‑F‑J‑L‑N le varianze sommano 9: la deviazione standard del progetto è di 3 settimane. La probabilità di finire entro 47 settimane è \(\Phi(1) \approx 0{,}84\); entro 44, esattamente la metà. La pagina calcola \(\Phi\) con la formula 7.1.26 di Abramowitz e Stegun, che sbaglia meno di due parti su dieci milioni.
Il metodo ha limiti noti, e conviene tenerli presenti leggendo quel numero. Il più importante: guarda un cammino solo. Se ce ne sono altri quasi critici, anche loro possono far tardare il progetto, e la probabilità vera di finire in tempo è più bassa di quella calcolata (MacCrimmon e Ryavec, 1964). La forma beta e il sesto dell'intervallo sono convenzioni, non leggi; e le stime le dà chi conosce il lavoro, con il suo ottimismo. Il PERT resta utile per quello che è: un modo onesto di dire quanto è incerto un piano, e di vedere dove l'incertezza si accumula.
Due dettagli di calcolo. Fra due cammini critici con la stessa durata attesa la pagina prende quello con la varianza maggiore, che è il più prudente. E di un'attività già cominciata, con una data di stato, conta solo la parte che resta: la sua deviazione standard si riduce in proporzione al lavoro che manca.
Settimane, trimestri e categorie
L'asse del tempo sceglie da sé le sue due fasce secondo la densità — mesi e giorni, mesi e settimane, anni e mesi — ma le si può fissare: anni e trimestri per un programma di più anni, mesi e settimane per un cantiere, settimane e giorni per un piano stretto. Le settimane sono quelle della norma ISO 8601, la numerazione in uso in Europa: cominciano il lunedì, e la prima dell'anno è quella che contiene il primo giovedì, cioè quella del 4 gennaio. Così una settimana non si divide mai fra due anni, ma l'anno della settimana può non essere quello del giorno: il 29 dicembre 2008 sta nella prima settimana del 2009, il 3 gennaio 2010 nella cinquantatreesima del 2009. Hanno 53 settimane gli anni che cominciano di giovedì, o di mercoledì se bisestili: il 2026 è uno di questi. I test confrontano la numerazione con gli esempi della norma e, per cinquant'anni di giorni, con un secondo algoritmo indipendente, quello che parte dal numero d'ordine del giorno nell'anno.
Le categorie colorano le barre per tipo di lavoro — progettazione, cantiere, collaudo — e la legenda le spiega. La tavolozza per le categorie senza colori propri evita il blu delle barre ordinarie e il rosso del cammino critico, perché i tre segnali non si confondano. Le precedenze sono quelle dello stile: il colore scelto su un'attività vince sulla sua categoria, e la categoria su quello che l'attività eredita dalla fase. Con il cammino critico evidenziato, un'attività critica di una categoria tiene il riempimento della categoria e prende il contorno rosso: se il rosso coprisse tutto, la legenda direbbe il falso proprio sulle attività che contano di più.
Scambiare il piano con altri programmi
Il documento di questa pagina è il JSON, ma un piano spesso deve passare di mano. Tre formati coprono i casi più comuni, e ciascuno porta quello che la sua natura gli consente.
L'XML di MS Project (MSPDI, lo schema che Microsoft pubblica dai primi anni Duemila) è la lingua franca dei programmi di pianificazione: lo leggono e lo scrivono Project, ProjectLibre, GanttProject e molti altri. Porta fasi, durate, dipendenze con il loro tipo e il ritardo, vincoli di data, avanzamento, calendari con la settimana, l'orario e le eccezioni, la data di stato e, in un campo personalizzato, la categoria. Qualche dettaglio del formato fa capire com'è pensato: le date sono ore locali senza fuso, come qui; le durate sono ore di lavoro («PT40H0M0S» sono cinque giorni da otto ore); i ritardi sono decimi di minuto; e l'ordine degli elementi conta, perché Project legge il file contro lo schema. Sulla scala a giorni ogni giorno diventa l'orario di lavoro del calendario: l'inizio alla prima ora, la fine all'ultima. In lettura le eccezioni che si ripetono ogni anno si espandono in date, e le attività programmate a mano diventano attività a date scritte.
Mermaid è un linguaggio per descrivere diagrammi con il testo, che GitLab, GitHub e molti editor
Markdown disegnano da soli: un piano incollato in un README resta leggibile e segue il
repository. È molto più povero: non ha frecce né fasi annidate, una dipendenza è solo «dopo di»
(after) e i giorni di riposo sono date da escludere (excludes). Una durata in giorni,
lì, salta i giorni esclusi allungando la barra: la pagina rifà lo stesso conto di Mermaid e scrive ogni
attività nella forma più semplice che lo riproduce — after e la durata, oppure la data e la
durata, oppure le due date — così il disegno di Mermaid ha le date di questo.
iCalendar (RFC 5545) è il formato delle agende: un evento per attività e per traguardo, da importare in un calendario personale o di gruppo. Sulla scala a giorni gli eventi sono di giorno intero, con la fine esclusa come la norma prescrive; su quella a ore hanno l'ora «fluttuante», senza fuso, che è il tempo di questa pagina. Ogni evento ha un identificatore stabile — l'attività e un'impronta del titolo —, e reimportando il file un'agenda aggiorna gli eventi invece di duplicarli. Gli eventi sono segnati come tempo libero, perché un'attività di tre settimane non renda occupato chi la segue.
Quello che questa pagina non fa
- Le risorse. Il calcolo assume che ci sia sempre qualcuno per fare il lavoro. Tener conto di persone e macchine limitate — il problema della pianificazione con risorse vincolate — è NP‑difficile (Blazewicz, Lenstra e Rinnooy Kan, 1983) e richiede euristiche che qui non ci sono.
- L'incertezza oltre il PERT. La probabilità di finire in tempo si calcola sul solo cammino critico. Per tener conto di tutti i cammini servirebbe una simulazione Monte Carlo, che estrae molte volte le durate e rifà il calcolo: qui non c'è.
- Il confronto con il piano iniziale (la baseline): si fa salvando il JSON a ogni revisione.
Bibliografia
- «To find Easter», Nature 13, 487, 1876 (lettera anonima «da un corrispondente di New York»). doi:10.1038/013487a0
- H. L. Gantt, Organizing for Work, Harcourt, Brace and Howe, New York 1919.
- W. Clark, The Gantt Chart: A Working Tool of Management, Ronald Press, New York 1922.
- E. R. Marsh, «The harmonogram of Karol Adamiecki», Academy of Management Journal 18(2), 358–364, 1975. doi:10.5465/255537
- J. E. Kelley, M. R. Walker, «Critical-path planning and scheduling», Proceedings of the Eastern Joint Computer Conference, 160–173, 1959. doi:10.1145/1460299.1460318
- D. G. Malcolm, J. H. Roseboom, C. E. Clark, W. Fazar, «Application of a technique for research and development program evaluation», Operations Research 7(5), 646–669, 1959. doi:10.1287/opre.7.5.646
- C. E. Clark, «The PERT model for the distribution of an activity time», Operations Research 10(3), 405–406, 1962. doi:10.1287/opre.10.3.405
- K. R. MacCrimmon, C. A. Ryavec, «An analytical study of the PERT assumptions», Operations Research 12(1), 16–37, 1964. doi:10.1287/opre.12.1.16
- M. Abramowitz, I. A. Stegun (a cura di), Handbook of Mathematical Functions, National Bureau of Standards, Washington 1964 — formula 7.1.26 per la funzione degli errori.
- J. E. Kelley, «Critical-path planning and scheduling: mathematical basis», Operations Research 9(3), 296–320, 1961. doi:10.1287/opre.9.3.296
- A. B. Kahn, «Topological sorting of large networks», Communications of the ACM 5(11), 558–562, 1962. doi:10.1145/368996.369025
- J. Blazewicz, J. K. Lenstra, A. H. G. Rinnooy Kan, «Scheduling subject to resource constraints: classification and complexity», Discrete Applied Mathematics 5(1), 11–24, 1983. doi:10.1016/0166-218X(83)90012-4
- J. M. Wilson, «Gantt charts: a centenary appreciation», European Journal of Operational Research 149(2), 430–437, 2003. doi:10.1016/S0377-2217(02)00769-5
- ISO 8601-1:2019, Date and time — Representations for information interchange — Part 1: Basic rules, International Organization for Standardization, Ginevra 2019.
- B. Desruisseaux (a cura di), «Internet Calendaring and Scheduling Core Object Specification (iCalendar)», RFC 5545, IETF, 2009. doi:10.17487/RFC5545
- Microsoft, «Project XML Data Interchange Schema Reference» (mspdi_pj12.xsd), Microsoft Learn.
- Mermaid, «Gantt diagrams», documentazione di mermaid.js, mermaid.js.org.
- F. S. Hillier, G. J. Lieberman, Introduction to Operations Research, McGraw-Hill, capitolo «Project management with PERT/CPM».
A che serve
A costruire un cronoprogramma — un progetto, una campagna di misura, la preparazione di un evento — e a portarselo via come figura in SVG, PNG o PDF, come tabella CSV, come XML di MS Project o testo Mermaid, o come eventi di un'agenda. Il diagramma si salva come file JSON e si riapre quando serve: non c'è niente nel database, il documento è il file.
Le parti della pagina
A sinistra l'elenco delle Attività, con le fasi e le attività che contengono, e a destra di ciascuna la data d'inizio calcolata. La bacchetta indica le attività a date calcolate, il rombo rosso quelle sul cammino critico. Sotto, le Proprietà di quello che si è selezionato; il pulsante Progetto riporta alle proprietà generali. A destra il disegno, che si rifà a ogni modifica, e sotto la tabella delle Dipendenze.
Un'attività si seleziona dall'elenco oppure cliccandone la riga nel disegno. Con Ctrl (o Cmd) il clic aggiunge alla selezione: con più attività selezionate ogni modifica si applica a tutte. Da tastiera ↑ e ↓ scorrono l'elenco, Invio porta al nome, Canc elimina; su una fase ← la richiude e → la riapre.
Costruire un piano
Il modo più rapido è selezionare un'attività e premere Attività successiva: ne aggiunge una subito sotto, già legata alla prima da un vincolo fine → inizio. Ripetendolo si scrive la catena principale senza toccare la tabella delle dipendenze.
Una fase è un'attività che ne contiene altre: Attività dentro ne crea una al suo interno, e le frecce laterali spostano l'attività selezionata dentro la fase che la precede o fuori dalla sua. Le date di una fase sono quelle delle sue attività, e il suo stile scende a tutte. Un traguardo è un'attività di durata zero — una consegna, una riunione di avanzamento — e si disegna a rombo.
Una fase si può richiudere con il triangolo accanto al suo nome, nell'elenco o nel margine sinistro del disegno, oppure con la casella Richiusa delle sue proprietà. Le sue attività restano nel calcolo — la fase va sempre dal primo inizio all'ultima fine, e il cammino critico non cambia — ma non si vedono, né nell'elenco né nel disegno, e con loro spariscono le frecce che le toccano. Anche la figura esportata le lascia fuori: è il modo per fare un diagramma di sintesi con le sole fasi. Sopra l'elenco, Apri tutte le fasi e Richiudi tutte le fasi fanno lo stesso con tutte insieme; con il filtro si vede comunque tutto quello che corrisponde.
Duplica copia l'attività con tutto il suo contenuto; Elimina la toglie insieme alle dipendenze che la nominano. L'identificatore è il nome con cui la chiamano le dipendenze: cambiandolo, le dipendenze si aggiornano da sole.
Date calcolate o date scritte
Con Date calcolate dalle dipendenze spuntato, l'attività ha una durata e comincia appena i suoi vincoli lo permettono; il campo Non prima del le impedisce di cominciare prima di una data. Senza la spunta si scrivono l'inizio e la fine (o l'inizio e la durata), e l'attività sta lì. Togliendo la spunta, le date calcolate restano scritte e la barra non si sposta. Un'attività senza nessuna data è sempre calcolata.
Un'attività a date scritte si trascina nel disegno: afferrata nel mezzo si sposta, afferrata a un bordo cambia l'inizio o la fine, e il cursore dice quale delle due cose sta per succedere. Mentre si trascina, un rettangolo tratteggiato mostra dove andrà, con le date nuove accanto al puntatore; Esc annulla. Il passo è il giorno, sulla scala a ore la mezz'ora (l'ora se il disegno è stretto), e sulla scala a ore compressa uno spostamento conta le ore di lavoro, anche attraverso la notte. Da tastiera, con l'attività selezionata, Alt + ← → la sposta di un passo e Alt + Maiusc + ← → ne sposta la fine. Un traguardo a data scritta si sposta allo stesso modo. Le attività calcolate non si trascinano: le loro date le decidono le dipendenze, e l'Approfondimento spiega perché.
Il Vincolo di data aggiunge una data da rispettare: deve iniziare il, deve finire il, deve iniziare entro il, deve finire entro il, non deve iniziare prima del, non deve finire prima del. Scegliendolo, la data parte da quella che il piano dà già, così il vincolo non sposta niente finché non la si cambia. I vincoli «entro» sono scadenze: non spostano l'attività, ma se il piano le supera compare un avviso di sforamento, il margine diventa negativo e sopra la barra c'è un triangolo rosso (verde, se la scadenza è rispettata). Con le date scritte vale solo un vincolo «entro».
Sotto i campi si leggono le date calcolate, il margine totale e quello libero, e se l'attività è critica, finita o in corso.
Solo date, oppure date e ore
La Scala del progetto decide l'unità. Con solo date le durate sono giorni
lavorativi; con date e ore sono ore lavorative, e conta l'orario di lavoro: per
esempio 9-13, 14-18, otto ore al giorno. Cambiando scala durate e ritardi si
convertono con le ore di un giorno lavorativo: cinque giorni diventano quaranta ore, e non
cinque. Sulla scala a ore l'asse del tempo salta la notte, la pausa e i giorni di riposo, a meno di
spuntare Tutte le 24 ore sull'asse: allora restano, in grigio, e una barra che attraversa la notte
è lunga quanto il tempo vero.
Il calendario ha i giorni lavorativi della settimana e, a scelta, le festività nazionali di un paese — Italia, Regno Unito (Inghilterra e Galles) o Spagna — calcolate anno per anno, Pasqua compresa. Sotto si vedono quelle che cadono nel periodo del progetto, ciascuna con la sua spunta: togliendola, quella festività non si osserva e il giorno segue la settimana — un martedì si lavora, una domenica no. Con la data e i due pulsanti si aggiungono una festività specifica — il patrono, una chiusura, un ponte — oppure un giorno lavorato, cioè un giorno di riposo in cui si lavora comunque, come un sabato. Le date aggiunte si tolgono con la crocetta. Tutti i calcoli ne tengono conto, e nel disegno i giorni non lavorativi sono in grigio: passandoci sopra col mouse si legge il nome della festività. A una festività aggiunta il nome si dà nel campo accanto alla sua data.
Le feste nazionali sono quelle di legge oggi: San Francesco (4 ottobre) conta dal 2026; nel Regno Unito una festa che cade nel fine settimana passa al primo giorno feriale, come prevedono i substitute day; per la Spagna ci sono le feste comuni a tutto il paese, mentre il Giovedì santo e le feste delle comunità autonome si aggiungono a mano.
Calendari delle attività
Nelle proprietà del progetto, Aggiungi un calendario crea un calendario con un nome: eredita da quello del progetto tutto ciò che non si cambia, e si possono scegliere i giorni lavorativi, le festività nazionali (come il progetto, nessuna o quelle di un paese), le festività in più e i giorni lavorati, e sulla scala a ore l'orario. Poi lo si dà a un'attività, o a una fase per tutte le sue, con la casella Calendario delle loro proprietà. La durata e i margini dell'attività si contano nel suo calendario; il ritardo di una dipendenza in quello del successore. Cambiando nome a un calendario lo seguono le attività che lo usano; eliminandolo tornano a quello che ereditano.
Le dipendenze
Ogni riga della tabella dice che un'attività (A) dipende da un'altra (Da), con uno dei quattro vincoli — fine → inizio, inizio → inizio, fine → fine, inizio → fine — e un ritardo, nella stessa unità delle durate. Un ritardo negativo è un anticipo. Una dipendenza da o verso una fase vale per tutte le sue attività.
Le frecce escono dal lato della barra che il vincolo nomina ed entrano dall'altro: quando il successore comincia proprio alla fine del predecessore, la freccia gli scende sopra.
Cammino critico e margini
Il cammino critico non si sceglie: lo calcola la pagina dalle durate e dalle dipendenze, ed è fatto delle attività con margine zero. Per cambiarlo si cambiano quelle, o le date fissate a mano. Le due caselle qui sotto stanno nelle proprietà del progetto, gruppo Visualizzazione: ci si arriva col pulsante Progetto sopra l'elenco delle attività. Il margine di ogni attività, e se è critica, si leggono nel suo gruppo Date, alla voce Calcolate.
Evidenzia il cammino critico colora di rosso le attività senza margine e le frecce che le legano: sono quelle che, se ritardano, ritardano la fine del progetto. Il rosso copre i colori che l'attività eredita dal progetto o dalla sua fase, non quelli scelti sull'attività: un'attività critica colorata a mano tiene i suoi colori, e la si riconosce dal contorno più spesso, dal rombo nell'elenco e dalle frecce rosse.
Il margine totale è quanto un'attività può slittare senza ritardare il progetto; il margine libero quanto può slittare senza spostare nessun'altra attività, e non supera mai il totale. Con Mostra i margini, libero e totale, dopo ogni barra c'è una linea continua lunga quanto il margine libero, poi tratteggiata fino alla fine del totale, con una tacca. I due margini si possono anche mettere in colonna accanto ai nomi.
Categorie e legenda
Nelle proprietà del progetto, il gruppo Categorie e legenda elenca le categorie con il loro nome, il riempimento e il contorno; Aggiungi una categoria ne crea una con i colori della tavolozza, e la crocetta la elimina. Una categoria si dà a un'attività, o a una fase per tutte le sue, con la casella Categoria delle loro proprietà, dove nuova categoria… la crea al volo. Il colore scelto su un'attività nel gruppo Barre vince sulla categoria; con il cammino critico evidenziato, un'attività critica di una categoria tiene il riempimento della categoria e prende il contorno rosso.
La Legenda mostra le categorie usate e, se è evidenziato, il cammino critico: sotto il disegno, a destra, o libera. Si può trascinare col mouse dove non copre niente: lasciata, diventa libera e resta lì, anche nel file esportato.
Tre stime (PERT)
Nelle proprietà di un'attività, il gruppo Tre stime (PERT) accoglie la durata ottimistica, la più probabile e la pessimistica. Con tutte e tre la durata dell'attività diventa quella attesa, (a + 4m + b) / 6, e sotto si leggono la durata attesa e la deviazione standard, (b − a) / 6. Nelle proprietà del progetto il gruppo PERT: tre stime mostra la durata attesa del progetto e la sua deviazione standard; scegliendo una data in Probabilità di finire entro il si legge la probabilità di finire entro quel giorno, e nel disegno compare una linea viola con la probabilità scritta sotto. Le attività senza tre stime valgono come certe. Che cosa c'è dietro è spiegato nell'Approfondimento.
La data di stato
La Data di stato, nel gruppo Tempo del progetto, dice a quando si riferisce l'avanzamento scritto (alla fine di quel giorno). Da lì la pagina ripianifica il lavoro che resta: le attività finite restano dove erano, di quelle cominciate la parte fatta resta e il resto riparte dopo la data di stato — la barra si spezza, con un tratto punteggiato sul vuoto — e quelle da cominciare non partono prima. Nel disegno la data di stato è una linea blu continua; la linea di oggi resta un'altra cosa, rosa e tratteggiata.
Con la data di stato si può spuntare Linea di avanzamento: la linea blu diventa una spezzata che in ogni riga va al punto del piano in cui si sarebbe arrivati con il lavoro fatto. Un picco a sinistra è un ritardo, uno a destra un anticipo, e la sua lunghezza dice quanto. Nelle proprietà di ogni attività, alla voce Calcolate, lo stesso scarto è scritto in giorni (o in ore) lavorativi.
Come si vede
Nel gruppo Visualizzazione si scelgono le colonne accanto ai nomi (inizio, fine, durata, avanzamento, margine totale, margine libero), la scritta sulle barre, la linea di oggi e la griglia. I pixel per giorno (o per ora) fissano la scala del disegno; vuoto, la pagina la sceglie da sé, e con lei le due fasce dell'asse: mesi e giorni, mesi e settimane, anni e mesi. L'Asse del tempo le fissa invece a scelta: anni e trimestri, anni e mesi, trimestri e mesi, mesi e settimane ISO, mesi e giorni, settimane ISO e giorni, e sulla scala a ore giorni e ore. Le settimane sono numerate come vuole la norma ISO 8601 (S1, S2… dal lunedì); i trimestri si scrivono T1–T4, con l'anno se c'è posto.
Dimensioni dei caratteri ha un comando unico per i nomi delle Fasi, delle Attività e per le scritte di Asse e barre. Un campo vuoto segue le attività e mostra in grigio il valore in vigore; Applica a tutti toglie le dimensioni fissate sulle singole attività.
L'avanzamento di un'attività si vede come la parte scura della sua barra; quello di una fase è la media delle sue attività, pesata sulla durata.
Il CSV
Importa legge una tabella con una riga per attività — da un foglio di calcolo o da un altro programma di pianificazione — e Esporta i dati › CSV scrive quella del diagramma. Un file CSV si può anche trascinare sul disegno. Le colonne riconosciute sono:
id;nome;padre;tipo;inizio;fine;durata;avanzamento;auto;dipende
analisi;Analisi;;;;;;;;
requisiti;Requisiti;analisi;;2026-10-05;;5;100;;
dati;Fonti di dati;analisi;;;;8;60;sì;requisiti
consegna;Consegna;;traguardo;;;;;sì;dati:FI+2
- Le intestazioni si leggono anche in inglese (
name,start,duration,predecessors…); le colonne sconosciute si ignorano e lo si dice. - Il separatore — punto e virgola, virgola o tabulazione — si riconosce dalla prima riga; un testo che lo contiene va fra virgolette.
- Le date si scrivono come
2026-10-05o05/10/2026, con l'ora se serve (2026-10-05 09:30: basta un'ora per scegliere la scala a ore). padreè l'id della fase che contiene l'attività;tipovaletraguardoper le pietre miliari;autoconsì,1oxrende le date calcolate.dipendeelenca i predecessori separati da spazi:id,id:II,id:FF+2,id:-1. Si accettano anche i codici inglesi (FS,SS,SF), il numero della riga alla maniera dei programmi di pianificazione (3FS+2d) e il nome dell'attività.ottimistica,probabileepessimisticasono le tre stime del PERT (in ingleseoptimistic,most likely,pessimistic);vincoloedata vincoloil vincolo di data, con i nomi della pagina o con i codici dei programmi di pianificazione (MSO,MFO,SNLT,FNLT,SNET,FNET);calendarioil nome del calendario dell'attività, che deve esistere nel diagramma in cui si importa;categoria(in inglesecategory) la sua categoria.
Il CSV esportato usa il punto e virgola e si apre direttamente in un foglio di calcolo. Porta le attività e le dipendenze, non lo stile: per quello il documento resta il JSON.
MS Project, Mermaid e iCalendar
Il menu Esporta i dati scrive anche l'XML di MS Project, il testo Mermaid — in un file
.mmd, oppure negli appunti già dentro il recinto ```mermaid, da incollare in un
Markdown di GitLab — e un file iCalendar da importare in un'agenda. Importa legge, oltre al
CSV, l'XML di MS Project e il testo Mermaid, anche dentro un file Markdown: il formato si riconosce da solo,
e i file si possono anche trascinare sul disegno.
- MS Project (lo si apre con File › Apri, scegliendo il formato XML): passano fasi, durate, dipendenze con tipo e ritardo, vincoli, avanzamento, calendari con festività ed eccezioni, la data di stato e la categoria, nel campo Testo1 con il nome Categoria. Le attività a date scritte diventano «deve iniziare il», i traguardi scritti «deve finire il». Restano fuori risorse, costi e colori.
- Mermaid: le fasi diventano sezioni (quelle annidate col percorso, «Fase › Sottofase»), le
dipendenze fine → inizio senza ritardo diventano
after, i giorni di riposoexcludes; le attività finite hannodone, quelle in corsoactivee, se il cammino critico è evidenziato, le critichecrit. Mermaid non disegna frecce: gli altri vincoli si traducono in date. In lettura le sezioni diventano fasi,afterdipendenze e una data d'inizio un «non prima del». - iCalendar: un evento per attività e per traguardo, con la fase, la durata e l'avanzamento nella descrizione e la categoria fra le categorie dell'evento. Riesportando dopo una modifica e reimportando, gli eventi si aggiornano.
gantt
dateFormat YYYY-MM-DD
excludes weekends, 2026-11-02
section Analisi
Requisiti :done, requisiti, 2026-10-05, 5d
Fonti di dati :active, dati, after requisiti, 8d
section Rilascio
Rilascio :milestone, rilascio, 2026-12-01, 0d
Esportare, annullare, non perdere il lavoro
Come negli editor dei diagrammi a blocchi e dei diagrammi di flusso: SVG vettoriale con i caratteri incorporati, PNG ai dpi scelti, PDF prodotto dal server, e il campo cm per la larghezza con cui la figura esce. Un Gantt di molti mesi è largo: il campo cm lo porta alla larghezza della pagina senza perdere niente, perché è vettoriale.
Su più pagine. Il menu accanto a Esporta PDF sceglie il foglio: una pagina, della misura della figura, oppure A4 o A3, orizzontale o verticale. Con un foglio scelto il Gantt esce alla misura del campo cm (o alla naturale) e si divide in pagine come una tabella stampata: si taglia fra una riga e l'altra e sul confine di un giorno (o di un'ora) dell'asse, e su ogni pagina si ripetono l'intestazione dell'asse e, se non prendono più del 40% del foglio, i nomi con le colonne accanto. La barra dice prima quante pagine servono; il piede di ognuna porta il nome del file, il numero e, se la griglia ha più righe e più colonne, la riga e la colonna. Al massimo 100 pagine.
Le frecce curve annullano e rifanno (Ctrl+Z, Ctrl+Y). A ogni modifica resta nel browser una copia di scorta, che alla riapertura si offre di riprendere. Il documento resta il file JSON.
Il JSON
{
"titolo": "",
"scala": "giorni",
"calendario": { "lavorativi": [1, 2, 3, 4, 5], "nazionali": "IT",
"esclusi": ["2026-12-08"], "festivi": ["2026-06-24"], "lavorati": [],
"orario": [[9, 13], [14, 18]] },
"stile": { "font": "IBM Plex Sans, Arial, sans-serif", "dim": 13 },
"pagina": { "inizio": "2026-10-05", "colonne": ["inizio", "fine"], "critico": true },
"attivita": [
{ "id": "analisi", "nome": "Analisi", "figli": [
{ "id": "requisiti", "nome": "Requisiti", "durata": 5, "auto": true },
{ "id": "seminario", "nome": "Seminario", "inizio": "2026-10-20", "fine": "2026-10-21" } ] },
{ "id": "consegna", "nome": "Consegna", "tipo": "traguardo", "auto": true }
],
"dipendenze": [
{ "da": "requisiti", "a": "consegna", "tipo": "FI", "ritardo": 2 }
]
}
I giorni lavorativi vanno da 1 (lunedì) a 7 (domenica). nazionali vale IT,
GB o ES; esclusi sono le festività nazionali che non si osservano,
festivi le date in più che non si lavorano, lavorati quelle che si lavorano
comunque, anche se di riposo, e vincono su tutto. Nello stile,
dim_titolo e dim_etichetta fissano i corpi delle fasi e delle scritte
dell'asse; omesse, seguono dim. Le chiavi omesse prendono il valore predefinito.
Le chiavi delle evoluzioni del 2026: in pagina, data_stato ed
entro (la data della probabilità del PERT); su un'attività vincolo
(inizia_il, finisce_il, inizia_entro, finisce_entro,
inizia_dopo, finisce_dopo) con data_vincolo, le tre stime
ottimistica, probabile, pessimistica, e calendario;
al primo livello calendari, per esempio { "cantiere": { "lavorativi": [1, 2, 3, 4, 5,
6] } }, con le stesse voci di calendario.
Quelle della v1.3: in pagina, asse (le due fasce, per esempio
["mesi", "settimane"], fra anni, trimestri, mesi,
settimane, giorni e ore), ore_piene, legenda
(sotto, destra, libera) con legenda_xy, e
linea_avanzamento; al primo livello categorie, per esempio
[{ "nome": "Cantiere", "sfondo": "#ffd8a8", "bordo": "#e8590c" }], e su un'attività o una fase
categoria; in festivi una data può avere il suo nome:
"2026-06-24 San Giovanni". Dalla v1.4, su una fase, chiusa (true)
la richiude.
Limiti da conoscere
- Le risorse non si contano: due attività affidate alla stessa persona possono sovrapporsi.
- La probabilità del PERT guarda il solo cammino critico: con altri cammini quasi critici quella vera è più bassa.
- Si trascinano solo le barre a date scritte: quelle calcolate seguono le dipendenze.
- Nei calendari di MS Project ogni giorno della settimana può avere un orario suo; qui l'orario è uno per calendario, e in lettura vale quello del primo giorno lavorativo.
- Mermaid non ha frecce né orari di lavoro: sulla scala a ore le attività vi si scrivono con le due date, ora compresa.
- Il diagramma non si salva sul server: la copia di scorta nel browser copre lo scivolone, ma il documento è il file JSON.
- I nomi dei mesi e dei giorni sull'asse, e le intestazioni delle colonne, escono nella lingua della pagina da cui si esporta.
Keywords: Diagrammi di Gantt, Gantt, Cronoprogramma, Cammino critico, CPM, Pianificazione, SVG, PNG, PDF, CSV, MS Project, Mermaid, iCalendar, Settimane ISO