[Curs nr.5]
Agenti:
proiectarea este realizata cel mai bine de catre o echipa formata din membrii
cei mai buni, incluzand arhitectul sistemului si 1-2 proiectanti. Daca
sistemul este foarte complex, la acestia se pot adauga cativa proiectanti
care se vor concentra pe anumite aspecte tehnologice, un responsabil cu
mediul de dezvoltare utilizat de echipa, un membru al echipei de testare/control
calitate si, posibil, un redactor de documentatie.
Jaloane si masuratori: exista 2 jaloane de baza:
Scop: Realizarea implementarii prin detaliere succesiva a arhitecturii sistemului.
La terminarea acestei faze sistemul trebuie sa fie gata de livrare, adica sa existe: setul de executabile, procedura de instalare, documentatia si eventualele utilitare anexe.
Orientativ, durata fazei de evolutie este aprox. 9 luni pentru proiecte al caror ciclu de viata este de 1 an.
Faza de evolutie este o continua integrare. Pe durata ei managerul trebuie sa aiba grija ca activitatile sa se desfasoare sub semnul pragmatismului, in sensul ca echipa nu trebuie sa piarda din vedere nici un moment setul minimal de caracteristici stabilit initial.
Pe parcursul fazei de evolutie managerul are rolul de a evalua si a "sorta" riscurile proiectului, astfel incat echipa de dezvoltare sa nu intre in panica din cauza unor evenimente ca: esecul instrumentelor software folosite, aparitia unor modificari radicale in setul cerintelor.Faza de evolutie trebuie sa permita managerului sa raspunda la urmatoarele intrebari:
Primele 2 intrebari ataca insasi ratiunea pentru care sistemul este construit. Ele nu sunt o scuza pentru o analiza fusarita, ci o recunoastere a faptului ca existenta unui sistem nou duce la modificari in mentalitatea si obiceiurile utilizatorului.
- Care sunt cerintele reale ale sistemului?
- Exista functii la care ar trebui sa se renunte sau cel putin care pot fi amanate; respectiv exista functii care la inceput pareau imposibil de realizat, dar care ar putea fi totusi acoperite?
- Cum realizeaza implementarea comportamentul dorit al sistemului?
- Cat este de bun produsul aflat in dezvoltare?
A 3-a intrebare se refera la problema corespondentei cerinta-cod, care se poate formula astfel: dat fiind enuntul care descrie comportamentul dorit, este fiecare functiune indeplinita corect si in modul cel mai simplu?
Ultima intrebare se refera la calitatea produsului si priveste urmatoarele aspecte: este arhitectura aleasa functionala, iar sistemul aflat in constructie este lipsit de erori in functionare?
Produse: Sunt:
- O secventa de versiuni executabile
- Un set de prototipuri
- O evaluare a calitatii
- Documentatia tehnica si de utilizare
O versiune este o forma stabila, executabila a sistemului, impreuna cu setul de elemente anexe necesare utilizarii aplicatiei respective.
Procedeul de realizare a unui sistem sub forma unui sir de versiuni executabile este important deoarece:Fiecare versiune se caracterizeaza prin 3 elemente:
- fiecare versiune intermediara permite cresterea gradata a complexitatii;
- in intervalul dintre 2 versiuni succesive echipa poate descoperi noi informatii despre sistem;
- versiunile initiale servesc la cooperarea cu beneficiarul; versiunile apropiate de final ofera managerului puncte de control necesare adoptarii compromisurilor intre timpul de livrare si functionalitatile sistemului.
Ca principiu orientativ:
- o crestere in functionalitate, masurata prin numarul de scenarii adaugate fata de versiunea precedenta;
- o crestere a adancimii, masurata prin gradul de completitudine a implementarii modelului domeniului;
- o crestere a stabilitatii, masurata prin reducerea modificarilor aduse modelului domeniului.
- pentru proiecte de complexitate medie, intervalul intre 2 versiuni este de 2-3 luni;
- pentru proiecte de complexitate mare, intervalul este de 6-9 luni.
Prototipurile sunt destinate experimentarii. Ele trebuie sa contina urmatoarele elemente:
Prototipurile sunt destinate studiului rapid al acelor aspecte ale sistemului care comporta riscuri. In final prototipurile vor fi aruncate; doar ideile desprinse din experimentarea lor vor fi puse in practica la implementarea sistemului.
- un enunt al problemei, adica scopul experimentului;
- o solutie, adica un model executabil care acopera enuntul problemei;
- experimentarea, adica evaluarea solutiei.
Evaluarea calitatii: practic, echipa de dezvoltare elaboreaza planuri de testare in stransa legatura cu scenariile si va utiliza testele respective la evaluarea calitatii si a completitudinii sistemului.
Politica de dezvoltare iterativa si incrementala are avantajul ca permite echipei de testare sa-si inceapa activitatea relativ devreme in cadrul ciclului de viata.Asa cum implementarea urmareste evolutia arhitecturii, si documentatia trebuie sa urmareasca fiecare noua versiune. Ea nu va fi tratata ca un produs izolat de versiunile executabile ale sistemului, ci mai degraba ca un rezultat al acestora.
Activitati:
- Aplicarea micro-procesului.
- Evaluarea versiunii curente si gestionarea modificarilor.
Microprocesul este in esenta ansamblul de activitati pe care fiecare membru al echipei le desfasoara individual pe durata ciclului de viata al unui proiect.
Aplicarea microprocesului presupune urmatorii pasi:
- identificarea punctelor de functionare care vor fi atacate de versiunea ce urmeaza si a riscurilor asociate; practic, se identifica urmatorul set de scenarii in ordinea importantei, care trebuie completate sau refacute in noua versiune;
- atribuirea de sarcini clare membrilor echipei de dezvoltare cu privire la versiunea de realizat;
- alocarea unor proiectanti pentru realizarea prototipurilor, daca e necesar;
- incheierea microprocesului prin integrarea si livrarea noii versiuni.
Evaluarea versiunii curnte presupune analiza ei in contextul setului minimal de caracteristici.
Agenti: In faza de evolutie alocarea resurselor umane este o preocupare majora. In principiu, 80% din echipa trebuie implicata la realizarea versiunii curente, iar restul de 20% va fi ocupata cu activitati secundare, de anliza si atacare a riscurilor.
La evolutie participa in general ingineri de aplicatii, care pot avea urmatoarele sarcini:Aceste sarcini necesita cunostinte solide de programare.
- implementarea claselor si a sabloanelor specificate de arhitect;
- asamblarea claselor si a sabloanelor in vederea acoperirii unei functionalitati;
- crearea prototipurilor.
Jaloane:
- Livrarea fiecarei versiuni intermediare.
- Rata descoperirii defectelor si densitatea defectelor.
- Stabilitatea.