[Curs nr.8]
Aceasta problema se refera la urmatoarele aspecte ale organizarii echipei:
Relatiile intre diversele roluri tind sa duca la formarea unor subgrupe in cadrul echipei. De regula, aceste subgrupe sunt:
Grupul pt. arhitectura
Este format din arhitect si unul sau mai multi abstractionisti. la distribuirea sarcinilor in cadrul acestui grup se va aplica urmatoarea regula: responsabilitatea pt. o categorie de clase va fi alocata unui singur abstractionist, iar responsabilitatea structurii de ansamblu - unui singur arhitect.
Grupul de analiza
Se formeaza la inceputul ciclului de viata, cand are loc colectarea cerintelor. De obicei acest grup este format din analisti, la care se adauga eventual controlori de calitate si o parte a grupului de arhitectura (care trebuie sa cunoasca indeaproape toate detaliile privitoare la cerinte).
Grupul de proiectare
Se formeaza spre sfarsitul fazei de analiza, cand incep sa fie explorate diverse alternative de proiectare.
Grupul de implementare
Incepe sa se formeze in faza de analiza, dar varful de activitate il va avea pe durata evolutiei.
Grupul de instalare
Este responsabil cu instalarea sistemului la beneficiar. Grupul este condus de un integrator si ocazional, poate fi suplimentat cu abstractionisti sau ingineri de aplicatii si cu redactori de documentatie.
Echipa de interventie
Are ca scop investigarea unor aspecte neclare ale sistemului, validarea unor alternative de proiectare, depistarea si inlaturarea unor bug-uri. Altfel spus, echipa de interventie asigura managerului de proiect resursele necesare pt. a ataca riscurile neprevazute care pot sa apara.
In ceea ce priveste distributia in timp a activitatii corespunzatoare
diferitelor roluri, se poate spune ca exista 3 etape
("valuri") distincte:
Intr-o echipa normala apar in general toate rolurile descrise in capitolul precedent, intre ele existand relatii de comunicare. Comunicarea cea mai intensa apare intre managerul de proiect, arhitect, abstractionist si inginerii de aplicatii, adica la nivelul nucleului echipei.
Astfel, arhitectura globala a sistemului este controlata de arhitect, iar microarhitectura fiecarei categorii de clase este controlata de un abstractionist (chiar daca acesta poate avea in sarcina mai multe categorii de clase; ideea este ca de aceeasi categorie de clase sa nu se ocupe mai multe persoane).
In cazul proiectelor mari grupul de arhitectura poate fi suplimentat si cu alte roluri, ca: asigurarea calitatii, integrare, analiza.
Grupul de arhitectura trebuie creat la debutul proiectului si va fi mentinut pana la faza de intretinere (chiar daca in acest punct grupul va include alte persoane decat initial).
Rolul echipei de analiza este mai estompat pe durata fazei de proiectare, urmand sa devina mai pregnant in portiunile de inceput ale fiecarei iteratii din faza de evolutie.
Acest grup este format din abstractionisti si cativa ingineri de aplicatii, fiind supervizat de arhitect.
In cazul proiectelor OO de obicei se intalnesc o multime de grupulete de implementare care se ocupa de:
Grupul de instalare se formeaza la inceputul fazei de proiectare astfel incat procesul de instalare sa poata fi pus la punct inainte ca prima versiune sa fie livrata. Varful de activitate al acestui grup se atinge in faza de evolutie.
Echipele de interventie sunt grupuri puternice si adesea solitare. Ele trebuie constituite din persoanele cele mai competente in domeniul problemei de rezolvat, cum ar fi: detectivi abili in cautarea si distrugerea bug-urilor, arheologi software suficient de rabdatori si minutiosi in descifrarea codului unor programe vechi, mostenite, sau programatori hiperactivi, capabili sa incropeasca prototipuri in cateva ore sau zile.
De regula, dimensiunea medie a unei echipe de interventie este de 1-2 persoane, iar durata ei de viata este de 1-2 saptamani.
Identificarea rolurilor si a grupurilor care formeaza o echipa de
dezvoltare sta la baza conceptului de echipa
fluida, adica o echipa in care membrii nu sunt "incremeniti" pe
anumite responsabilitati, ci sunt repartizati pe roluri in functie de
necesitatile proiectului si de aptitudinile personale. Cu alte cuvinte,
pentru un proiect se stabilesc intai rolurile necesare, apoi sunt
identificate persoanele potrivite cu rolurile.
Conceptul de echipa fluida poate fi adaptat la orice dimensiune a unui
proiect, respectiv a unei echipe. Astfel:
Se observa ca aplicarea unei ierarhii a rolurilor de forma
arhitect-abstractionist-inginer de aplicatii permite o diviziune a
controlului care face gestionabila complexitatea unui proiect.