Sunteți pe pagina 1din 18

Modele de procese de dezvoltare software

INDRECAN SORINA
AGENDA
Ciclu de viata al unui program
V-Module
Waterfall
Agile
Ciclul de viata al unui program
Ca orice produs fabricat complex, un program este realizat urmând un anume proces.
Dezvoltarea unui program poate fi vazuta ca stabilirea unui sir de descrieri din ce în ce mai
precise si din ce în ce mai apropiate de un program executabil si de documentatia sa.
O data dezvoltat un program, este pus în exploatare. Se pun atunci probleme de întretinere, de
corectare a defectelor, de ameliorare a anumitor caracteristici sau de urmarire a evolutiei cerintelor.
Intretinerea poate impune modificarea functiilor sistemului si deci, un proces de redezvoltare.
Din aceasta cauza se vorbeste despre ciclul de viata al unui program, când consideram
exploatarea si întretinerea în plus fata de dezvoltare.
Ciclul de viata al unui program
Planning

Maintena
Analysis
nce

Testing &
Integratio Design
n

Developm
ent
Ciclul de viata al unui program
Planning
Se definesc obiectivele,problemele dar si resursele de care dispunem pentru a realiza programul
Se realizare aproximativ un plan cu recomandari legate de program (prioritizari pe baza de functionalitati)
Se propun solutii alternative
Descrierea costurile pentru realizare dar si a beneficiilor care vor aparea
Studiul despre “cum sa fac ca aplicatia mea sa fie mai buna ca a competitorilor”
Ciclul de viata al unui program
Requirements and system analysis
Se defineste ceea ce se doreste de la program,se pregateste documentatia pentru fiecare particica mica pe care
o va avea programul
Documentare la nivel de sistem pentru a face aplicatia sa functioneze pe o gama mai larga de dispozitive,sisteme
de operare s.a.m.d
Ciclul de viata al unui program

System design
Se definesc componentele care alcatuiesc sistemul programului,nivele de securitate,module,arhitectura si
diferitele interfete ale acestuia dar si tipurile de date pe care le poate accepta
Aceasta faza are ca scop principal definirea datelor de intrare care joaca in rol esential pentru urmatoarea faza
din ciclu de viata al unui program
Ciclul de viata al unui program

Development
Dupa ce s-a analizat si inteles documentatia,se trece la partea in care programatorii implementeaza ceea ce
clientul a cerut
Munca este impartita in module si functionalitati si pas cu pas o sa se implementeze totul
Aceasta este cea mai lunga faza din intreg procesul de viata al unui program
Ciclul de viata al unui program

Testing and integration


Dupa ce codul a fost executat acesta este testat conform specificatiilor pentru a ne asigura ca produsul face cu
adevarat ceea ce trebuie sa faca
Acest produs aduce impreuna toate partile pe care le are programul
Testarea poate fi facuta de useri reali ori de o echipa specializata
Testarea devine din ce in ce mai importanta si mai focusata pe satisfacerea cerintelor clientului
Ciclul de viata al unui program

System mantenance
Cand clientii incep sa foloseasca programul atunci apar cu adevarat problemele
Mediul real de folosire al unui program ofera cazuri reale pe care un utilizator le poate face si care pot scapa din
vederea programatorilor dar si a testerilor
O verificare periodica a aplicatiei si a functionalitatilor acesteia este facuta de catre echipa care a facut aplicatia
V-Module
V-Module presupune 4 nivele de testare:
 Unit Testing => este o metodă de testare a software-ului prin care unitățile individuale de cod sursă, seturi de unul sau mai multe
module de program de calculator împreună cu date de control asociate, proceduri de utilizare și proceduri de operare, sunt testate
pentru a determina Dacă acestea sunt adecvate pentru utilizare;

 Integration Testing => este faza în testarea software-ului în care modulele software individuale sunt combinate și testate ca grup.
Integration Testing se efectuează pentru a evalua conformitatea unui sistem sau a unei componente cu cerințe funcționale
specificate;

 System Testing => este testarea efectuată pe un sistem complet integrat pentru a evalua conformitatea sistemului cu cerințele sale
specificate. System testing ia, ca intrare, toate componentele integrate care au trecut de integration testing. Scopul integration-ului
este de a detecta orice inconsistențe între unitățile care sunt integrate împreună;

 Acceptance Testing => o tehnică de testare efectuată pentru a determina dacă sistemul software a îndeplinit sau nu specificațiile
cerinței;
Waterfall
Numit si modelul clasic al ciclului de viata sau modelul liniar
Descris de Royce în 1970, a fost larg utilizat de atunci, pentru descrierea generala a procesului de
dezvoltarea programelor.
Ciclul de viata în cascada prezinta dezvoltarea unui program ca o succesiune de faze ce se înlantuie într-
o derulare liniara, de la analiza cerintelor si pâna la livrarea produsului catre client.
Fiecare faza corespunde unei activitati si trebuie sa se termine la o anumita data prin producerea
anumitor documente sau programe
Rezultatele fazei sunt supuse unei revizii aprofundate si nu se trece la faza urmatoare decât atunci când
sunt considerate satisfacatoare.
Waterfall
Waterfall
Modelul waterfall se bazeaza pe o secventa de faze bine delimitate. Documentele produse de fiecare faza sunt
evaluate în cadrul reviziilor care valideaza trecerea de la o faza la alta.
Abordarea waterfall da rezultate satisfacatoare numai în cazul în care este efectiv posibila înlantuirea fazelor
fara prea multe probleme.
 Aceasta presupune ca ansamblul cerintelor sa fie perfect cunoscuta si problema complet înteleasa de analisti.
Trebuie de asemenea ca solutia sa fie usor de determinat de proiectanti si codificarea simpla - redusa ideal la
generarea automata a codului plecând de la documentele de proiectare.
In realitate se constata ca partea de necunoscut poate fi însemnata în anumite dezvoltari, în special datorita:
 - neîntelegerii cerintelor de catre client sau analist;
 - instabilitatii cerintelor;
 -alegerilor tehnologice;
 -schimbarilor de personal.
Waterfall
Avantaje:
 Sistemul este bine documentat
 Permite un bun management al proiectului:
 planificarea resurselor umane pe etape
 estimari de cost mai exacte
Dezavantaje:
 Un produs executabil, care sa demonstreze functionarea sistemului este disponibil destul de tarziu, dupa integrare. Pana atunci s-au produs
numai documente.
 Deoarece modelul este secvential, exista numai uhn feedback local, la tranzitiile intre faze.
 Multe erori sunt descoperite tarziu à cost crescut
 Toate riscurile sunt incluse intr-un singur ciclu de dezvoltare

Adecvat pentru proiectele in care cerintele sunt bine intelese de la inceput si nu se modifica pe parcursul procesului de dezvoltare.
Experienta ultimelor decenii a demonstrat ca modelul este valoros.
Este utilizat si in prezent de multe organizatii mari.
Agile
Pentru orice proiect software exista o serie de factori de risc care pot periclita finalizarea cu succes a
proiectului, cum ar fi:factori de experienta ( conducatorului de proiect, a echipei), factori de
planificare, factori tehnologici, factori externi (modificarea cerintelor, modificarea interfetelor externe).
Cele mai multe metode de dezvoltare agila incearca sa minimizeze riscul dezvoltand software-ul in
intervale scurte de timp, numite "timeboxes", constand din 1-4 saptamani. Data de sfarsit a unui
"timebox" nu poate fi modificata. Daca echipa depaseste data, iteratia este anulata si replanificata.
Fiecare iteratie este un proiect software in miniatura si include toate activitatile necesare livrarii mini-
incrementului unei noi functionalitati: planificare, analiza cerintelor, proiectare, codificare, testare,
documentare.
Fiecare noua iteratie trebuie sa livreze un nou produs.
Agile
Sfarsitul unei iteratii presupune prezentarea la client ceea ce s-a lucrat in ultimele 2 3 saptamani.
Prezentarea a ceea ce s-a lucrat se face pe baza unui “demo” pe care il fac testerii din echipa
Ei pregatesc “Demo Agenda” unde sunt puse cateva scenarii de test generale pentru functionalitatile noi
implementate
Dupa ce s-au prezentat toate scenariile,clientul isi da cu parerea sau vine cu intrebari .
Atunci se petrece “User-Acceptance Testing”
Metodele "agile" pun in evidenta comunicarea directa intre participantii la elaborarea unei iteratii, in locul
documentelor scrise. Acestia lucreaza in aceeasi locatie, intre ei fiind cel putin programatorii si "clientii" lor (cei
care definesc produsul). Echipa poate include testeri, developeri, echipe de documentare tehnica si manageri.
Principala masura a progresului este considerata software-ul functional. Se produce foarte putina
documentatie, motiv pentru care metodele sunt criticate.
Agile
Avantaje:
Clientul poate sa vada frecvent si cat de repede ceea ce se lucreaza si ce urmeazasa fie livrat
Acest lucru ajuta la luarea deciziilor urgente daca ceva este rau inteles de catre programatori
Lucrul clientului direct cu echipa aduce un mare plus la intelegerea business-ului dar si la o implementare si o
testare mult mai buna si eficienta cu exemple din viata reala si din business
Daca apare presiunea timpului cand vine vorba de lansarea aplicatiei,cu ajutorul metodologiei Agile oricand poate
sa fie lansata pe piata o parte mai mica a programului si pe viitor sa se lanseze si celelalte parti care o sa fie
implementate
Programatorii sunt mult mai focusati sa implementeze ceea ce business-ul doreste cu adevarat

Dezavantaje:
Nu toti clientii dispun de timp pentru a se ocupa in detaliu de echipa de implementare
Avand in vedere ca se livreaza in bucati mici,se poate uneori sa fie livrata o functionalitate in mai multe iteratii

S-ar putea să vă placă și