Dependențe și float în planificarea de proiect
Cele patru tipuri de dependențe (FS, SS, FF, SF), lead, lag, total float și free float - cum determină flexibilitatea și prioritățile proiectului.
Un proiect nu este o listă de sarcini independente. Sarcinile se leagă între ele: una trebuie terminată înainte ca alta să poată începe, două trebuie să se termine în același timp, o a treia nu poate începe decât odată cu prima. Aceste legături se numesc dependențe, iar felul în care le definești determină întregul calendar al proiectului.
Articolul despre planificarea CPM a introdus ideea de bază: din dependențe și durate, algoritmul calculează date și flexibilitate. Aici mergem mai adânc. Vom analiza cele patru tipuri de dependențe, vom vedea cum lead și lag modifică relațiile dintre sarcini și vom înțelege diferența dintre total float și free float - două informații care te ajută să iei decizii concrete despre priorități și resurse.
Cele patru tipuri de dependențe
O dependență leagă două sarcini: un predecesor (sarcina A) și un succesor (sarcina B). Tipul dependenței spune care eveniment al sarcinii A condiționează care eveniment al sarcinii B. Există patru combinații posibile, fiecare cu un acronim standard folosit în managementul proiectelor.
FS (Finish-to-Start) - cel mai frecvent tip
B nu poate începe până nu se termină A. Este dependența naturală, cea pe care o gândești instinctiv: „mai întâi faci X, apoi faci Y."
Exemplu: Într-un proiect de dezvoltare software, testarea funcțională nu poate începe până nu se termină dezvoltarea modulului. Testerii au nevoie de cod funcțional ca să poată testa. Relația este Dezvoltare (FS) → Testare.
FS este tipul implicit și acoperă majoritatea situațiilor din practică. Dacă nu ești sigur ce tip să alegi, FS este aproape întotdeauna răspunsul corect.
SS (Start-to-Start) - sarcini care pornesc împreună
B nu poate începe până nu începe A. Cele două sarcini pot rula în paralel, dar B nu poate demara înaintea lui A.
Exemplu: Documentarea tehnică poate începe odată cu dezvoltarea - echipa de documentare are nevoie doar de specificațiile inițiale pentru a începe structura, nu de codul terminat. Relația este Dezvoltare (SS) → Documentare. Documentarea nu poate începe înainte de dezvoltare, dar nici nu trebuie să aștepte terminarea ei.
SS este util când vrei să modelezi sarcini paralele care au un punct comun de pornire. Echipele diferite încep în același timp, dar lucrează independent din acel moment.
FF (Finish-to-Finish) - sarcini care se termină împreună
B nu se poate termina până nu se termină A. Cele două sarcini pot rula în paralel, dar B trebuie să fie încă activă când A se termină.
Exemplu: Revizuirea codului (code review) nu se poate termina până nu se termină dezvoltarea - nu poți marca review-ul ca „complet" dacă dezvoltatorii încă fac modificări. Relația este Dezvoltare (FF) → Code review. Review-ul poate începe oricând în timpul dezvoltării, dar se finalizează odată cu ea.
FF apare frecvent în procesele de control al calității, unde verificarea nu se poate încheia înainte de procesul verificat.
SF (Start-to-Finish) - dependența inversă
B nu se poate termina până nu începe A. Este cel mai rar tip de dependență și cel mai contra-intuitiv, dar acoperă un scenariu real: tranziția între sisteme sau procese.
Exemplu: Suportul pe vechiul sistem ERP nu se poate opri (termina) până nu pornește (începe) noul sistem ERP. Relația este Sistem nou (SF) → Suport sistem vechi. Echipa de suport trebuie să mențină vechiul sistem activ până în momentul în care noul sistem devine operațional.
SF este util în scenarii de cutover: predarea turelor, migrarea între platforme, înlocuirea unui furnizor. Dacă nu te regăsești într-un asemenea scenariu, probabil nu ai nevoie de SF.
Cum se alege tipul corect
Pune-ți întrebarea: „Ce anume din sarcina A condiționează sarcina B?"
| Dacă răspunsul este... | Tip | Rezumat |
|---|---|---|
| B nu poate începe până A nu se termină | FS | Secvențial clasic |
| B nu poate începe până A nu începe | SS | Pornire sincronizată |
| B nu se poate termina până A nu se termină | FF | Terminare sincronizată |
| B nu se poate termina până A nu începe | SF | Tranziție / cutover |
Lead și lag: ajustarea relațiilor
Un tip de dependență descrie relația logică, dar nu întotdeauna surprinde realitatea cu exactitate. Uneori, succesorul poate începe puțin mai devreme decât ar permite dependența strictă. Alteori, trebuie să aștepte câteva zile suplimentare chiar și după ce predecesorul a îndeplinit condiția. Aici intervin lead și lag.
Lag - timp de așteptare suplimentar
Lag-ul este o întârziere pozitivă adăugată pe o dependență. Spune „chiar dacă predecesorul a terminat / a început, mai așteaptă N zile înainte de a continua."
Exemplu: După turnarea fundației (sarcina A), betonul trebuie să se usuce 3 zile înainte de a construi structura (sarcina B). Dependența este A (FS +3 zile) → B. Fără lag, planificarea ar programa structura imediat după turnare - ceea ce fizic nu e posibil.
Lag-ul este exprimat în zile lucrătoare. Folosește-l când există un timp de așteptare obiectiv între cele două sarcini: uscare, aprobare, timp de livrare, perioadă de testare obligatorie.
Lead - suprapunere controlată
Lead-ul este opusul lag-ului: un timp negativ care permite succesorului să înceapă mai devreme decât ar permite dependența strictă. Practic, suprapui parțial cele două sarcini.
Exemplu: Testarea poate începe cu 2 zile înainte ca dezvoltarea să se termine, pe modulele deja finalizate. Dependența este Dezvoltare (FS -2 zile) → Testare. Lead-ul de 2 zile comprimă calendarul, permițând suprapunerea controlată a celor două sarcini.
Lag și lead pe diferite tipuri de dependențe
Lag și lead funcționează pe orice tip de dependență, nu doar pe FS.
| Dependență | Cu lag de +2 zile | Cu lead de -2 zile |
|---|---|---|
| FS | B începe la 2 zile după ce A se termină | B începe cu 2 zile înainte ca A să se termine |
| SS | B începe la 2 zile după ce A începe | B începe cu 2 zile înainte ca A să înceapă |
| FF | B se termină la 2 zile după ce A se termină | B se termină cu 2 zile înainte ca A să se termine |
| SF | B se termină la 2 zile după ce A începe | B se termină cu 2 zile înainte ca A să înceapă |
Total float și free float: două feluri de flexibilitate
Când planificarea CPM calculează datele fiecărei sarcini, rezultă un interval între „cel mai devreme posibil" și „cel mai târziu acceptabil". Această diferență se numește float - și exprimă câte zile de flexibilitate are sarcina respectivă.
Proiect.ro calculează două tipuri de float, și fiecare răspunde la o altă întrebare.
Total float - flexibilitate față de proiect
Total float răspunde la întrebarea: „Cu câte zile poate fi amânată această sarcină fără să se amâne data de terminare a proiectului?"
Se calculează ca diferența dintre Late Start (cel mai târziu când poate începe sarcina fără să întârzie proiectul) și Early Start (cel mai devreme când poate începe pe baza predecesorilor).
O sarcină cu total float de 0 zile este pe drumul critic - orice amânare se reflectă direct în data de terminare a proiectului. O sarcină cu total float de 5 zile poate fi amânată până la 5 zile fără consecințe la nivel de proiect.
Free float - flexibilitate față de succesori
Free float răspunde la o întrebare mai strictă: „Cu câte zile poate fi amânată această sarcină fără să afecteze niciun succesor imediat?"
Se calculează ca diferența dintre cel mai devreme Early Start al succesorilor imediați și Early Finish-ul sarcinii curente.
Free float este întotdeauna mai mic sau egal cu total float. O sarcină poate avea total float de 6 zile, dar free float de doar 2 zile. Ce înseamnă asta? Sarcina poate fi amânată 2 zile fără să deranjeze pe nimeni. Între ziua 3 și ziua 6 de amânare, succesorii imediați vor fi afectați (trebuie să aștepte), dar proiectul ca întreg tot nu va fi întârziat.
Exemplu concret
Hai să ne gândim la un proiect cu cinci sarcini:
| Sarcină | Durată | Depinde de | ES | EF | LS | LF | Total float | Free float |
|---|---|---|---|---|---|---|---|---|
| A - Analiză | 5 zile | - | 1 iun | 5 iun | 1 iun | 5 iun | 0 | 0 |
| B - Dezvoltare | 10 zile | A (FS) | 5 iun | 15 iun | 5 iun | 15 iun | 0 | 0 |
| C - Documentare | 4 zile | A (FS) | 5 iun | 9 iun | 11 iun | 15 iun | 6 | 6 |
| D - Training | 3 zile | A (FS) | 5 iun | 8 iun | 12 iun | 15 iun | 7 | 7 |
| E - Testare | 5 zile | B (FS), C (FS) | 15 iun | 20 iun | 15 iun | 20 iun | 0 | 0 |
Observă sarcina C (Documentare): are atât total float cât și free float de 6 zile. Asta înseamnă că poate fi amânată cu 6 zile fără să afecteze nici succesorii imediați, nici proiectul - pentru că singurul ei succesor (E - Testare) depinde și de B (Dezvoltare), care durează mai mult.
Acum hai să ne gândim la un scenariu ușor diferit. Dacă D (Training) ar fi predecesor al lui E (nu direct al proiectului), iar D ar avea total float de 7 zile dar free float de doar 2 - asta ar însemna că D poate fi amânat 2 zile fără a afecta pe nimeni, dar între ziua 3 și ziua 7 de amânare, E ar trebui să aștepte (chiar dacă proiectul nu ar fi întârziat).
De ce contează distincția între total float și free float
La prima vedere, total float pare suficient - de ce ai avea nevoie de free float separat? Răspunsul vine din practică.
Prioritizarea resurselor
Când ai două sarcini care concurează pentru aceeași resursă, free float-ul îți spune care poate fi amânată fără să creeze un efect în cascadă. Sarcina cu free float zero nu poate fi amânată deloc fără să blocheze pe altcineva. Sarcina cu free float de 3 zile poate fi pusă pe pauză fără ca nimeni din echipă să fie afectat imediat.
Nivelare de resurse (resource leveling)
Nivelarea de resurse înseamnă redistribuirea sarcinilor pentru a evita supraîncărcarea echipei. Free float este informația cheie: sarcinile cu free float mare sunt candidatele ideale pentru amânare, pentru că le poți muta fără a produce un efect domino asupra altor sarcini.
Total float, în schimb, îți spune limita absolută. Dacă amâni o sarcină mai mult decât total float-ul ei, proiectul se prelungește. Între free float și total float ai o zonă de manevră „cu consecințe locale dar fără consecințe globale".
Comunicare cu echipa
Când comunici cu echipa, free float este de obicei mai relevant decât total float. „Poți amâna această sarcină cu 2 zile fără să afectezi pe nimeni" este o informație practică. „Poți amâna cu 6 zile fără să afectezi proiectul, dar colegii tăi vor fi blocați după 2 zile" este o nuanță importantă pe care total float-ul singur nu o transmite.
Scenarii practice: când folosești fiecare tip de dependență
Cele patru tipuri de dependențe nu sunt doar teorie PMBOK. Iată situații concrete din proiecte reale în care fiecare tip își dovedește utilitatea.
| Tip | Scenariu | De ce acest tip | Lead/Lag |
|---|---|---|---|
| FS | Livrare echipament, apoi instalare | Instalarea nu poate începe fizic fără echipament | Lag +1 zi (timp de verificare la recepție) |
| SS | Excavare teren și montaj conducte | Conductele se montează pe măsură ce se sapă, dar nu pot începe înaintea excavării | Lag +2 zile (trebuie un segment excavat) |
| FF | Audit de securitate și implementare remedieri | Auditul nu se poate încheia până nu sunt remediate toate vulnerabilitățile găsite | Fără lag (se termină simultan) |
| SF | Migrare de la serverul vechi la serverul nou | Serverul vechi nu poate fi oprit până nu pornește cel nou | Lag +1 zi (perioadă de funcționare paralelă) |
Un proiect tipic va avea 80-90% dependențe FS, câteva SS și FF, și rar SF. Nu forța tipuri complexe acolo unde FS funcționează - planificarea rămâne mai clară și mai ușor de comunicat echipei.
Float și decizii de management
Float-ul nu este doar un număr pe un raport. Este o unealtă de decizie. Iată cum îl folosesc managerii de proiect experimentați:
- Sarcini cu float zero (drumul critic) - Acestea primesc resursele cele mai experimentate, au monitorizare zilnică și nu acceptă întreruperi. Dacă o sarcină critică riscă întârziere, managerul de proiect acționează imediat: adaugă resurse, reduce scopul sau renegociază termenul.
- Sarcini cu float mic (1-3 zile) - Sunt „aproape critice". Nu sunt pe drumul critic astăzi, dar orice alunecare le poate aduce acolo. Tratează-le cu atenție sporită - sunt candidate pentru următorul drum critic dacă ceva se schimbă.
- Sarcini cu float mare (peste 5 zile) - Sunt flexibile. Aici poți muta resurse temporar către sarcinile critice, poți permite echipei să le programeze conform preferințelor proprii, sau poți absorbi întârzieri neprevăzute fără impact global.
Imaginea de ansamblu
Dependențele și float-ul lucrează împreună ca un sistem: dependențele definesc ordinea și relațiile dintre sarcini, iar float-ul cuantifică flexibilitatea rezultată din aceste relații.
Cele patru tipuri de dependențe (FS, SS, FF, SF) îți permit să modelezi fidel realitatea proiectului - nu doar secvența simplă „una după alta", ci și suprapunerile, sincronizările și tranzițiile. Lead și lag ajustează fin aceste relații, adăugând timpii de așteptare sau suprapunerile controlate pe care le cere practica.
Total float și free float îți dau două perspective complementare asupra flexibilității: una la nivel de proiect (cât poți amâna fără consecințe globale) și una la nivel de echipă (cât poți amâna fără a bloca pe nimeni). Împreună, aceste informații te ajută să prioritizezi, să aloci resurse și să comunici realist cu echipa și cu clientul.
Calitatea planificării depinde de calitatea dependențelor. Cu cât modelezi mai exact relațiile reale dintre sarcini - alegând tipul corect, adăugând lead sau lag unde este cazul - cu atât calculele de float și drumul critic vor reflecta mai fidel realitatea proiectului tău.