Pianificazione multiprogetto: spezzare le attività

di Giovanni Bonini

Pubblicato 20 Aprile 2016
Aggiornato 22 Aprile 2016 08:54

Anche nelle Piccole e Medie Imprese la presenza di una o più risorse condivise può rendere particolarmente ostica la schedulazione delle commesse.

Come si è visto nei precedenti articoli dedicati alla pianificazione multiprogetto e ai carichi di lavoro, per schedulare un portafoglio di commesse con una o più risorse condivise, occorre:

  • considerare i carichi di lavoro delle risorse, che vanno livellate, in modo tale che non ci siano delle risorse sovraccariche, vale a dire con dei carichi di lavoro superiori alla disponibilità delle risorse;
  • riflettere sull’effettiva disponibilità delle risorse. Per esempio, il fatto che una persona sia disponibile 8 h/giorno lavorativo non implica che possa essere effettivamente utilizzata con profitto 480 minuti/giorno lavorativo, a causa d’inevitabili disturbi, inefficienze e tempi morti, che occorre monitorare e minimizzare;
  • dare la precedenza alle commesse prioritarie, ricordando che ogni Project Priority è soggetta a continue revisioni e a periodici aggiornamenti, potendo variare durante il Project Life Cycle. Immaginiamo che, al tempo t, la commessa A sia prioritaria rispetto al progetto B. Può anche darsi che, al tempo t + x (con x > 0 giorni di calendario o lavorativi), la situazione cambi: la priorità della commessa A potrebbe calare, mentre è possibile che quella del progetto B cresca, rendendolo prioritario;
  • rendersi conto che le commesse possono non avere tutte il medesimo scorrimento (Project Float). Uno scorrimento di progetto nullo indica che non c’è più alcun margine tra la fine della commessa e la data entro la quale è contrattualmente prevista la consegna del Deliverable, che rappresenta il prodotto o, se si preferisce, l’Output del progetto. Di conseguenza, se la fine della commessa dovesse subire un ritardo di y giorni (con y > 0 giorni), anche la data di consegna del Deliverable sarebbe costretta a slittare in avanti di y giorni, portando a un nuovo valore del Project Float, negativo e pari a –y giorni. Ciò potrebbe: 1) compromettere l’immagine della Performing Organization; 2) ridurre la soddisfazione del Cliente/Committente e/o quella del Beneficiario, che potrebbe differire dal Cliente/Committente; 3) tradursi in una penale da pagare. Come si sarà notato, nell’esempio appena proposto, non si è volutamente specificato se lo scorrimento di progetto fosse espresso in giorni di calendario o lavorativi, potendo variare da caso a caso;
  • all’interno di ogni commessa, i Task possono non avere tutti il medesimo scorrimento totale (Total Float). Di conseguenza, occorre concentrarsi soprattutto sulle attività critiche, per le quali lo scorrimento totale è nullo, e su quelle Near Critical, il cui Total Float non supera 14 giorni di calendario o 10 giorni lavorativi (nell’ipotesi di settimane lavorative costituite da 5 giorni lavorativi/settimana di calendario);
  • anche a parità di scorrimento totale, i Task possono differire in base all’Activity Priority. Nel Settore Civile e Ambientale dell’Ingegneria, immaginiamo di dover schedulare due compiti da svolgere in cantiere, uno Indoor (posare un pavimento) e uno Outdoor (realizzare uno scavo). Si potrebbe rendere prioritaria l’attività maggiormente influenzata dalle condizioni meteorologiche, vale a dire quella Outdoor (lo scavo). In questo modo, se non ci fossero delle precipitazioni atmosferiche, lo scavo avrebbe la precedenza, rispetto alla posa del pavimento. Si noti che, se si decidesse di posare il pavimento prima di realizzare lo scavo e, alla fine della posa del pavimento, dovesse piovere, non si potrebbe procedere con lo scavo, che slitterebbe in avanti. Ci sarebbe, quindi, un ritardo.

Nell’ambito della pianificazione multiprogetto, un possibile modo di procedere potrebbe essere il seguente:

  • si schedula per prima la commessa con la Project Priority più elevata e si procede poi con le restanti n – 1, in base alla loro priorità. Ogni progetto deve essere pianificato considerando l’impegno delle risorse condivise, che sono state assegnate ai Task delle commesse già schedulate;
  • a parità di Project Priority, si dà la precedenza alla commessa con il Project Float minore;
  • all’interno di ciascun progetto, le mi attività che risultano critiche a capacità infinita (Critical Path Method) vengono pianificate per prime. Si procede poi con le restanti ni – mi, in base al loro scorrimento totale. Ogni Task deve essere schedulato considerando l’impegno delle risorse condivise, che sono state assegnate alle attività delle commesse già pianificate;
  • a parità di Total Float, si dà la precedenza al Task con l’Activity Priority più elevata.

Se due o più progetti avessero sia la medesima priorità sia lo stesso scorrimento, l’ordine di schedulazione potrebbe dipendere dal Baseline Project Total Cost. In questo modo, si darebbe la precedenza alle commesse economicamente più rilevanti.

Analogamente, se due o più attività avessero sia il medesimo Total Float sia la stessa Activity Priority, l’ordine di pianificazione potrebbe dipendere dal Budgeted Total Cost dei singoli Task. In questo modo, si darebbe la precedenza alle attività economicamente più rilevanti.

Organigrammi e calendari

Quello della pianificazione multiprogetto è un tema particolarmente importante soprattutto nelle Performing Organization aventi una struttura organizzativa composita o a matrice (forte, equilibrata o debole). In questi casi, infatti, si ha spesso a che fare con la presenza di una o più risorse condivise, il cui impiego deve essere ottimizzato a livello di portafoglio.

Nel Settore Industriale dell’Ingegneria, il principale vincolo a livello di Project Portfolio è spesso costituito da un centro di lavoro o da una o più risorse, che fungono da collo di bottiglia. Tali colli di bottiglia devono essere opportunamente gestiti e rimossi, mantenendo sotto controllo i costi. Per esempio, l’acquisto di un nuovo tornio a controllo numerico determina un aumento sia della disponibilità di quella particolare tipologia di risorsa sia dei costi, poiché occorre considerare il costo di acquisto del nuovo tornio a controllo numerico. Del resto, il costo opportunità legato all’inazione e, di conseguenza, al mancato investimento potrebbe rivelarsi ben più elevato, rispetto a quello di acquisto del nuovo tornio a controllo numerico. Infatti, il mancato investimento potrebbe comportare un deterioramento della posizione dell’Azienda, incapace di soddisfare le richieste di molti dei suoi potenziali Clienti, che sarebbero così costretti a rivolgersi a un Fornitore alternativo.

Un altro tema particolarmente importante è quello dei calendari: ignorarli significa commettere degli errori di pianificazione.

Esistono vari tipi di calendari, che esprimono:

  • orario di lavoro atteso e presunti giorni di apertura e chiusura aziendale (Enterprise Calendar);
  • orario di lavoro atteso e presunti giorni lavorativi per un dato progetto (Project Calendar);
  • orario di lavoro atteso e presunti giorni lavorativi per una certa attività (Activity Calendar);
  • orario di lavoro atteso e presunti giorni lavorativi per una data risorsa (Resource Calendar).

I piani ferie individuali devono essere utilizzati per costruire i calendari delle risorse, alcune delle quali potrebbero avere una disponibilità Part Time (per esempio: liberi professionisti e personale avente un contratto di lavoro subordinato a tempo parziale, orizzontale o verticale).

Nel Settore Civile e Ambientale dell’Ingegneria, la presenza di un cantiere all’estero potrebbe portare alla costruzione e al conseguente utilizzo di un calendario di progetto, che tenga conto delle festività locali. Inoltre, bisognerebbe considerare i periodi di rotazione (per esempio: 90/15) e i rientri in Italia del personale distaccato nei cantieri esteri.

Curve di carico e percentuale d’impiego

Nell’ambito della pianificazione multiprogetto, alcune possibili strategie di livellamento, non ancora prese in considerazione, consistono:

  • nell’agire sulle curve di carico delle risorse;
  • nell’operare sulla percentuale d’impiego delle risorse;
  • nello spezzare le attività, che possono essere sospese e successivamente riprese.

La curva di carico di una risorsa esprime la legge con cui le sue ore/uomo (o le sue ore/macchina, nel caso in cui si consideri un equipaggiamento) si distribuiscono sulla durata dell’attività, che è stata assegnata alla risorsa in questione. Per esempio, le tre attività della Figura seguente hanno tutte la medesima durata, pari a 5 giorni lavorativi, e richiedono 20 ore/uomo ciascuna. Cambia, però, il modo in cui queste 20 ore/uomo sono spalmate sui 5 giorni lavorativi, necessari per il completamento del compito in questione.

Figura 10

Figura 10. Le tre attività qui illustrate hanno tutte la medesima durata, pari a 5 giorni lavorativi, e le stesse date d’inizio e fine. Nonostante le Budgeted Labor Units siano esattamente le stesse (20 ore/uomo in tutti e tre i casi), cambia il modo in cui sono distribuite sulla durata di questi tre Task. Il segmento orizzontale di colore rosso rappresenta la disponibilità della risorsa in questione, pari a 8 ore/uomo per ogni giorno lavorativo. Se si considerasse un equipaggiamento, si avrebbe a che fare con delle ore/macchina (al posto delle ore/uomo), ma le considerazioni qui espresse continuerebbero a essere valide.

Il tema della percentuale d’impiego di una risorsa non è indipendente da quello della sua curva di carico. Per rendersene conto, è sufficiente notare che, nel primo dei tre esempi della Figura 10, risulta: percentuale d’impiego = 50%. Ciò significa che la risorsa in questione può svolgere anche altri compiti, avendo una disponibilità residua di 4 ore/uomo per ogni giorno lavorativo.

Spezzare le attività

Si considerino i due progetti A1 e A2, caratterizzati dai modelli reticolari seguenti:

Activity Name

Original Duration [d]

Predecessor(s), Relationship Type(s) & Lag(s) [d]

Successor(s), Relationship Type(s) & Lag(s) [d]

Resource(s)

Budgeted Labor Units [h]

A100

2 d

None

A110, FS, 0 d

A130, SS, 0 d

R1

16 h

A110

3 d

A100, FS, 0 d

A120, FS, 0 d

R1

24 h

A120

2 d

A110, FS, 0 d

A140, FS, 0 d

R1

16 h

A130

4 d

A100, SS, 0 d

A140, FS, 0 d

R3

32 h

A140

3 d

A120, FS, 0 d

A130, FS, 0 d

None

R1

24 h

Tabella 15. Il modello reticolare del progetto A1. In questa e nelle Tabelle seguenti, si ha che: 1) FS = Finish to Start; 2) SS = Start to Start.

Activity Name

Original Duration [d]

Predecessor(s), Relationship Type(s) & Lag(s) [d]

Successor(s), Relationship Type(s) & Lag(s) [d]

Resource(s)

Budgeted Labor Units [h]

A200

2 d

None

A210, FS, 0 d

R2

16 h

A210

3 d

A200, FS, 0 d

A220, FS, 0 d

R3

24 h

A220

5 d

A210, FS, 0 d

None

R4

40 h

Tabella 16. Il modello reticolare del progetto A2.

Ipotizziamo che A1 e A2:

  • inizino lo stesso giorno, alla medesima ora;
  • siano due progetti di ricerca e sviluppo, senza alcuna data di consegna dei loro Deliverable.

All’interno del modello reticolare del progetto A1, è possibile individuare due percorsi, costituiti dalle attività A100 → A110 → A120 → A140 (primo cammino) e A100 → A130 → A140 (secondo percorso). La durata del primo cammino è pari a: 2 d + 3 d + 2 d + 3 d = 10 d. La durata del secondo percorso, invece, è pari a: 4 d + 3 d = 7 d. Si noti che, in questo secondo caso, la durata del Task A100 non deve essere presa in considerazione, perché le attività A100 e A130 sono in parallelo, iniziano lo stesso giorno (alla medesima ora) e risulta Original Duration(A100) = 2 d < 4 d = Original Duration(A130). Di conseguenza, il primo cammino, la cui durata (10 d) è superiore a quella del secondo percorso (7 d), è critico (Longest Path) e determina la durata del progetto A1. La differenza fra le durate dei due cammini, pari a 3 d (= 10 d – 7 d), esprime lo scorrimento totale del Task A130, la cui fine può subire un ritardo sino a 3 d, senza che vi sia alcun impatto sulla data di completamento del progetto A1. Poiché l’attività A130 ha un unico successore, che è anche l’ultimo Task del progetto A1, il suo scorrimento libero (Free Float) è pari a 3 d e coincide con quello totale.

All’interno del modello reticolare del progetto A2, è possibile individuare un solo percorso (costituito dai Task A200 → A210 → A220), necessariamente critico, la cui durata è pari a: 2 d + 3 d + 5 d = 10 d. Questa è anche la durata del progetto A2.

La Figura seguente illustra il diagramma a barre o di Gantt dei due progetti di ricerca e sviluppo A1 e A2:

Figura 11

Figura 11. I cronoprogrammi del progetto A1 (al di sopra della riga nera orizzontale) e del progetto A2 (al di sotto della riga nera orizzontale). L’attività di colore verde ha uno scorrimento totale positivo, pari a 3 d.

Risorsa

07/11

08/11

09/11

10/11

11/11

14/11

15/11

16/11

17/11

18/11

R1

8 h

8 h

8 h

8 h

8 h

8 h

8 h

8 h

8 h

8 h

R2

8 h

8 h

0 h

0 h

0 h

0 h

0 h

0 h

0 h

0 h

R3

8 h

8 h

16 h

16 h

8 h

0 h

0 h

0 h

0 h

0 h

R4

0 h

0 h

0 h

0 h

0 h

8 h

8 h

8 h

8 h

8 h

Tabella 17. Il carico di lavoro delle quattro risorse R1, R2, R3 e R4. Si noti il sovraccarico della risorsa R3 nei giorni 09/11 e 10/11, che rende non ammissibile, a livello di portafoglio, il Set di soluzioni a cui si è giunti applicando il Critical Path Method al progetto A1 e, successivamente, al progetto A2.

Come illustrato nella Tabella 17, applicando il Critical Path Method ai due progetti A1 e A2, si è giunti ad altrettante soluzioni, ciascuna delle quali sarebbe ammissibile, se venisse considerata singolarmente e non ci fosse anche l’altro progetto.

La presenza di un Project Portfolio (costituito dai due progetti A1 e A2) con una risorsa condivisa, che risulta sovraccarica, costringe a livellarla. Così facendo, è possibile giungere a una soluzione ammissibile per l’intero portafoglio, vale a dire per l’insieme dei due progetti A1 e A2, considerati simultaneamente.

Una possibile soluzione, ammissibile per il Project Portfolio considerato nella sua interezza (A1 + A2), è illustrata nella Figura seguente:

Figura 12 

Figura 12. Osservando che, nella Figura 11, l’attività A130 ha una durata di 4 d e uno scorrimento totale di 3 d, pari all’Original Duration del Task A210, è possibile evitare il sovraccarico della risorsa R3 nei giorni 09/11 e 10/11, spezzando l’attività A130 in due parti. Adesso, questo Task viene sospeso e successivamente ripreso, fino al suo completamento. La sospensione corrisponde alla porzione bianca delimitata dalle due righe rosse orizzontali.

Come illustrato nella Figura 12, l’attività A130 è stata spezzata in due parti. In questo modo, la risorsa R3 può passare dallo svolgimento della prima porzione del Task A130 (appartenente al progetto A1) all’esecuzione dell’attività A210 (facente parte del progetto A2). Terminato il Task A210, la risorsa R3 può tornare a dedicarsi all’attività A130, fino al suo completamento.

Questa modalità operativa è contraria ai principi del Critical Chain Project Management, in base ai quali il Multitasking andrebbe sempre evitato. I tempi di Setup, anche mentale, necessari per passare dal Task A130 all’attività A210, rappresentano una fonte d’inefficienza: si tratta, infatti, di tempi morti. Lo stesso discorso, ovviamente, vale anche per il successivo passaggio dal Task A210 alla parte finale dell’attività A130: riprenderla comporta, infatti, un Setup altrimenti evitabile.

Rispetto a quanto illustrato nella Figura 11, la durata del cammino costituito dai Task A100 → A130 → A140 è ora pari a: 7 d + 3 d = 10 d. Trattandosi della medesima durata del percorso formato dalle attività A100 → A110 → A120 → A140, tutti i Task facenti parte del progetto A1 sono ora critici.

Figura 13

Figura 13. La curva di carico qui illustrata esprime la legge con cui le 32 h, necessarie per lo svolgimento dell’attività A130, si distribuiscono sulla durata del Task in questione, ora pari a 7 d (si veda la Figura 12). Il segmento orizzontale di colore rosso rappresenta la disponibilità della risorsa assegnata all’attività A130. Tale disponibilità è pari a 8 h/giorno lavorativo.

La situazione illustrata nella Figura 14 è analoga a quella della Figura 12, anche se ci sono da fare degli importanti distinguo. In particolare, il Task A130, avente una durata di 7 d nella Figura 12, è stato sostituito dalle attività A131 (Original Duration = 2 d) e A132 (Original Duration = 2 d).

Per giungere al risultato illustrato nella Figura 14, è possibile:

1)      inserire un Lag, strettamente positivo e pari a 3 d, abbinato al legame logico Finish to Start fra il Task A131 (predecessore) e l’attività A132 (successore);

Activity Name

Original Duration [d]

Predecessor(s), Relationship Type(s) & Lag(s) [d]

Successor(s), Relationship Type(s) & Lag(s) [d]

Resource(s)

Budgeted Labor Units [h]

A100

2 d

None

A110, FS, 0 d

A131, SS, 0 d

R1

16 h

A110

3 d

A100, FS, 0 d

A120, FS, 0 d

R1

24 h

A120

2 d

A110, FS, 0 d

A140, FS, 0 d

R1

16 h

A131

2 d

A100, SS, 0 d

A132, FS, 3 d

R3

16 h

A132

2 d

A131, FS, 3 d

A140, FS, 0 d

R3

16 h

A140

3 d

A120, FS, 0 d

A132, FS, 0 d

None

R1

24 h

Tabella 18. Il nuovo modello reticolare del progetto A1.

2)      creare un legame logico Finish to Start, senza alcun Lag, fra il Task A131 (appartenente al progetto A1) e l’attività A210 (appartenente al progetto A2). Fra questa e il Task A132 (appartenente al progetto A1), si crea un legame logico Finish to Start, senza alcun Lag.

Activity Name

Original Duration [d]

Predecessor(s), Relationship Type(s) & Lag(s) [d]

Successor(s), Relationship Type(s) & Lag(s) [d]

Resource(s)

Budgeted Labor Units [h]

A100

2 d

None

A110, FS, 0 d

A131, SS, 0 d

R1

16 h

A110

3 d

A100, FS, 0 d

A120, FS, 0 d

R1

24 h

A120

2 d

A110, FS, 0 d

A140, FS, 0 d

R1

16 h

A131

2 d

A100, SS, 0 d

A210, FS, 0 d

R3

16 h

A132

2 d

A210, FS, 0 d

A140, FS, 0 d

R3

16 h

A140

3 d

A120, FS, 0 d

A132, FS, 0 d

None

R1

24 h

Tabella 19. Il modello reticolare del progetto A1, con due delle sue attività (A131 e A132) legate a un Task del progetto A2 (A210).

Activity Name

Original Duration [d]

Predecessor(s), Relationship Type(s) & Lag(s) [d]

Successor(s), Relationship Type(s) & Lag(s) [d]

Resource(s)

Budgeted Labor Units [h]

A200

2 d

None

A210, FS, 0 d

R2

16 h

A210

3 d

A131, FS, 0 d

A200, FS, 0 d

A132, FS, 0 d

A220, FS, 0 d

R3

24 h

A220

5 d

A210, FS, 0 d

None

R4

40 h

Tabella 20. Il modello reticolare del progetto A2, con una delle sue attività (A210) legata a due Task del progetto A1 (A131 e A132).

Figura 14

Figura 14. Ecco quello che succede, quando l’attività A130 viene materialmente spezzata in due compiti da svolgere: si tratta dei Task A131 e A132.

Conclusioni

Come si può notare dalla Figura 14, se l’attività A131 dovesse concludersi in ritardo, anche il Task A210 slitterebbe in avanti. Tutto ciò andrebbe a ripercuotersi sull’attività A132, che finirebbe con lo spingere il Task A140 oltre il terzo Weekend di novembre. Naturalmente, anche il termine del progetto A2 dovrebbe essere posticipato, a causa del ritardo nell’esecuzione dell’attività A210, che andrebbe a ripercuotersi sul Task A220.

A prescindere dall’inserimento di uno o più legami logici fra le attività del primo progetto (A1) e quelle del secondo (A2), il fatto che ci sia una risorsa condivisa (R3) fa sì che i due progetti in portafoglio siano intimamente connessi e, di fatto, collegati, poiché ciò che accade all’uno può ripercuotersi sull’altro (e viceversa).

_____________

* Curve di carico
** Gantt Charts

L’autore dedica questo articolo alla memoria di Francesco Turra, Studente di Logistica che conosce già i mille segreti del nostro affascinante Universo.