Documente Academic
Documente Profesional
Documente Cultură
Cursul 2
care o anumit component nu le-a ntlnit n procesul de testare sau conflicte ntre anumite
componente (de exemplu, conflicte de partajare a resurselor). S-a constatat c atunci cnd se aplic
acest model, timpul de testare explodeaz, proiectul devenind greu de controlat; aceasta justific
denumirea de .big-bang.. Modelul incremental propune crearea unui nucleu al aplicaiei i
integrarea a cte o component la un moment dat, urmat imediat de testarea sistemului obinut.
Astfel, se poate determina mai uor unde anume apare o problema n sistem. Acest tip de integrare
ofer de obicei rezultate mai bune dect modelul big-bang;
Validarea: n procesul de validare ne asigurm c programul ndeplinete cerinele utilizatorului.
ntrebarea la care rspundem este: construim produsul corect? Un exemplu de validare este testul de
acceptare, n care produsul este prezentat clientului. Clientul spune dac este mulumit cu produsul
sau dac mai trebuie efectuate modificri;
Verificarea: n procesul de verificare ne asigurm c programul este stabil i c funcioneaz
corect din punctul de vedere al dezvoltatorilor. ntrebarea la care rspundem este: construim corect
produsul?
ntreinerea: Dup ce programul este livrat clientului, mai devreme sau mai trziu sunt
descoperite defecte sau erori ce trebuie reparate. De asemenea, pot aprea schimbri n specificaiile
utilizatorilor, care vor diverse mbuntiri. ntreinerea const n gestionarea acestor probleme.
Se poate constata uor c aceste activiti sunt n strns legtur cu cele patru faze ale
ingineriei programrii: analiza, proiectarea, implementarea i testarea.
2. Metodologii generice
n acest paragraf, vor fi prezentate trei categorii importante de metodologii: secvenial,
ciclic i hibrid. n metodologia secvenial (cascad), cele patru faze urmeaz una alteia ntr-o
modalitate serial. n metodologia ciclic (spiral), fazele sunt dispuse n cicluri care i genereaz
incremental contribuiile la sistemul final. Metodologia hibrid (ecluz) combin progresul constant
al metodologiei secveniale cu incrementele iterative ale metodologiei ciclice.
2.1. Metodologia secvenial
n metodologia secvenial, cunoscut i sub numele de metodologia "cascad", are loc mai
nti faza de analiz, apoi cea de proiectare, urmat de cea de implementare, iar n final se
realizeaz testarea. Echipele care se ocup de fiecare faz pot fi diferite, iar la fiecare tranziie de
faz poate fi necesar o decizie managerial.
Avantaje
Metodologia ciclic se bazeaz pe ideea perfecionrii incrementale ale metodologiei
secveniale. Permite feedback-ul de la fiecare echip n ceea ce privete complexitatea cerinelor.
Exist etape n care pot fi corectate eventualele greeli privind cerinele. Clientul poate arunca o
privire asupra rezultatului i poate oferi informaii importante mai ales n faza dinaintea lansrii
produsului. Echipa de implementare poate trimite echipei de analiz informaii privind
performanele i viabilitatea sistemului. Acesta se poate adapta mai bine progresului tehnologic: pe
msur ce apar noi soluii, ele pot fi ncorporate n arhitectura produsului.
Dezavantaje
Metodologia ciclic nu are nici o modalitate de supraveghere care s controleze oscilaiile
de la un ciclu la altul. n aceast situaie, fiecare ciclu produce un efort mai mare de munc pentru
ciclul urmtor, ceea ce ncarc orarul planificat i poate duce la eliminarea unor funcii sau la o
calitate sczut. Lungimea sau numrul de cicluri poate crete foarte mult. De vreme ce nu exist
constrngeri asupra echipei de analiz s fac lucrurile cum trebuie de prima dat, acest fapt duce la
scderea responsabilitii. Echipa de implementare poate primi sarcini la care ulterior se va renuna.
Echipa de proiectare nu are o viziune global asupra produsului i deci nu poate realiza o arhitectur
complet. Nu exist termene limit precise. Ciclurile continu fr o condiie clar de terminare.
Echipa de implementare poate fi pus n situaia nedorit n care arhitectura i cerinele sistemului
sunt n permanen schimbare.
2.3. Metodologia hibrid ecluz
Metodologia ecluz (engl. "watersluice"), propus de Ronald LeRoi Burback (1998), separ
aspectele cele mai importante ale procesului de dezvoltare a unui produs software de detaliile mai
puin semnificative i se concentreaz pe rezolvarea primelor. Pe msur ce procesul continu,
detaliile din ce n ce mai fine sunt rafinate, pn cnd produsul poate fi lansat. Aceast metodologie
hibrid preia natura iterativ a metodologiei spiral, la care adaug progresul sigur al metodologiei
cascad.
La nceput, ntr-un proces iterativ, fazele de analiz, proiectare, implementare i testare sunt
mprite n mai multe sarcini poteniale, fiecruia atribuindu-i-se o prioritate care reflect
beneficiul ndeplinirii sarcinii respective pentru scopul final. La fiecare moment se execut sarcina
cu prioritate maxim. n funcie de dimensiunea echipelor, mai multe sarcini pot fi realizate n
paralel. Sarcinile rmase, de prioritate minim, sunt pstrate pentru examinare ulterioar.
Descompunerea problemei este foarte important. Cu ct descompunerea i stabilirea prioritilor
sunt mai bune, cu att mai eficient este metodologia.
Pe msur ce sarcinile stabilite sunt ndeplinite, noi sarcini pot fi descoperite. Acestea sunt
adugate sarcinilor rmase nesoluionate i se reatribuie prioritile. Procesul continu pn cnd
produsul este gata de lansare.
Prioritile se stabilesc pe baza unei funcii de prioritate, care depinde att de domeniul
problemei i de normele firmei. Ea trebuie s realizeze un compromis ntre cantitate i calitate, ntre
funcionalitate i constrngerile privind resursele, ntre ateptri i realitate. Toate funciile de
prioritate ar trebuie s aib ca prim scop lansarea produsului.
Pe lng rolul evident de a stabili prioritile i deci ordinea de execuie a sarcinilor de lucru,
funcia mai trebuie s gestioneze sarcinile conflictuale i nemonotone. Ea trebuie s mpart aceste
sarcini n grupuri consistente, s reglementeze selecia grupurilor consistente i apoi s dirijeze
selecia sarcinilor din cadrul grupurilor. Pe msur ce sistemul crete, funcia de prioritate trebuie s
aleag sarcini consistente cu partea deja constituit din sistem. O sarcin nemonoton vine n
contradicie cu sistemul realizat deja i trebuie eliminat dac nu este absolut necesar pentru
succesul sistemului.
Odat ce o component este terminat i acceptat de echip, schimbrile asupra sa sunt
ngheate. Componenta va fi schimbat numai dac modificrile sunt absolut necesare iar echipa
este dispus s ntrzie lucrul la restul sistemului pentru a le efectua. Schimbrile trebuie s fie
puine la numr, bine justificate i documentate.
Etapele principale ale metodei sunt: schia de principiu, prototipul, versiunile alfa/beta i
produsul final.
n prima etap, schia de principiu, echipele lucreaz simultan la toate fazele problemei.
Echipa de analiz sugereaz cerinele. Echipa de proiectare le discut i trimite sarcinile critice de
implementare echipei de implementare. Echipa de testare pregtete i dezvolt mediul de test n
funcie de cerine. Echipa de implementare se concentreaz asupra sarcinilor critice, care n general
sunt cele mai dificile. Aceast abordare contrasteaz cu practica curent de realizare mai nti a
sarcinilor simple. Totui, majoritatea produselor care urmeaz acest model eueaz. Odat ce
componentele critice au fost realizate, sistemul este gata de a face tranziia ctre stadiul de prototip.
Unul din scopurile acestei etape este de a se convinge echipele c o soluie poate fi gsit i pus n
practic.
n cea de a doua etap, de prototip, cerinele i documentul cerinelor sunt ngheate.
Schimbrile n cerine sunt nc permise, ns ar trebuie s fie foarte rare i numai dac sunt absolut
necesare, deoarece modificrile cerinelor n acest stadiu al proiectului sunt foarte costisitoare. Este
posibil totui ajustarea arhitecturii, pe baza noilor opiuni datorate tehnologiei. Dup ce sarcinile
critice au fost terminate, echipa de implementare se poate concentra pe extinderea acestora, pentru
definirea ct mai multor aspecte ale aplicaiei. Unul din scopurile acestei etape este de a convinge
persoanele din afara echipelor c o soluie este posibil.
Acum produsul este gata pentru lansarea versiunilor alfa i beta. Arhitectura este ngheat,
iar accentul cade pe implementare i asigurarea calitii. Prima versiune lansat se numete n
general alfa. Produsul este nc imatur; numai sarcinile critice au fost implementate la calitate
5
ridicat. Numai un numr mic de clieni sunt n general dispui s accepte o versiune alfa i s-i
asume riscurile asociate. O a doua lansare reprezint versiunea beta. Rolul su este de a convinge
clienii c aplicaia va fi un produs adevrat i de aceea se adreseaz unui numr mai mare de
clieni.
Cnd o parte suficient de mare din sistem a fost construit, poate fi lansat n sfrit produsul.
n aceast etap, implementarea este ngheat i accentul cade pe asigurarea calitii. Scopul este
realizarea unui produs competitiv. n produsul final nu se accept erori critice.
Avantaje
Metodologia ecluz recunoate faptul c oamenii fac greeli i c nici o decizie nu trebuie s
fie absolut. Echipele nu sunt blocate ntr-o serie de cerine sau ntr-o arhitectur imobil care se pot
dovedi mai trziu inadecvate sau chiar greite. Totui, pentru respectarea termenelor limit,
metodologia impune date de ngheare a unor faze. Exist timp suficient pentru corectarea greelilor
decizionale pentru atingerea unui nivel suficient de ridicat de ncredere. Se pune mare accent pe
comunicarea ntre echipe, ceea ce reduce cantitatea de cod inutil la care ar trebui s se renune n
mod normal. Metodologia ncearc s mute toate erorile la nceputul procesului, unde corectarea,
sau chiar renceperea de la zero a lucrului, nu sunt foarte costisitoare.
Dezavantaje
Metodologia presupune asumarea unor responsabiliti privind delimitarea etapelor i
nghearea succesiv a fazelor de dezvoltare. Ea presupune crearea unui mediu de lucru n care
acceptarea responsabilitii pentru o decizie care se dovedete mai trziu greit s nu se
repercuteze n mod negativ asupra individului. Se dorete de asemenea schimbarea atitudinii
echipelor fa de testare, care are loc nc de la nceput, i fa de comunicarea continu, care poate
fi dificil, ntruct cele patru faze reprezint perspective diferite asupra realizrii produsului.
3. Metodologii concrete
3.1. Metodologia cascad
Metodologia cascad, propus de Barry Boehm, este una din cele mai cunoscute exemple de
metodologie de ingineria programrii. Exist numeroase variante ale acestui proces. ntr-o variant
detaliat, metodologia cascad cuprinde urmtoarele etape:
iteraiile frecvente (rentoarcerile n fazele anterioare atunci cnd n faza curent s-au detectat erori:
n timpul analizei se descoper erori de specificaii, n timpul implementrii se descoper erori de
specificaii/proiectare etc., astfel nct procesul poate implica multiple secvene de iteraii ale
activitilor de dezvoltare). nghearea prematur a cerinelor conduce la obinerea unui produs prost
structurat i care nu execut ceea ce dorete utilizatorul. Conduce de asemenea la obinerea unei
documentaii neadecvate deoarece schimbrile intervenite n iteraiile frecvente nu sunt actualizate
n toate documentele produse.
3.2. Metodologia spiral
Metodologia spiral, propus tot de Boehm, este un alt exemplu bine cunoscut de
metodologie a ingineriei programrii. Acest model ncearc s rezolve problemele modelului n
cascad, pstrnd avantajele acestuia: planificare, faze bine definite, produse intermediare. El
definete urmtorii pai n dezvoltarea unui produs:
studiul de fezabilitate;
analiza cerinelor;
proiectarea arhitecturii software;
implementarea.
Modelul n spiral recunoate c problema principal a dezvoltrii programelor este riscul.
Riscul nu mai este eliminat prin aseriuni de genul: .n urma proiectrii am obinut un model corect
al sistemului., ca n modelul cascad. Aici riscul este acceptat, evaluat i se iau msuri pentru
contracararea efectelor sale negative. Exemple de riscuri:
n timpul unui proces ndelungat de dezvoltare, cerinele noi ale clientului sunt ignorate;
clientul schimb cerinele;
o firm concurent lanseaz un program rival pe pia;
un dezvoltator/arhitect prsete echipa de dezvoltare;
o echip nu respect un termen de livrare pentru o anumit component.
n modelul spiral se consider c fiecare pas din dezvoltare conine o serie de activiti comune:
pregtirea: se identific obiectivele, alternativele, constrngerile;
gestionarea riscului: analiza i rezolvarea situaiilor de risc;
activiti de dezvoltare specifice pasului curent (de exemplu analiza specificaiilor sau
scrierea de cod);
planificarea urmtorului stadiu: termenele limit, resurse umane, revizuirea strii
proiectului.
Metodologia spiral cuprinde urmtoarele etape, grupate pe patru cicluri:
11
Exist mai multe limbaje pentru specificarea formal a funcionalitii programelor: Z, CSP
(Communicating Sequential Processes), VDM (Vienna Development Method), Larch, FDM
(Formal Development Methodology) etc.
n continuare, vom exemplifica cteva funcii simple de lucru cu o baz de date cu datele de
natere ale unor persoane, descris n limbajul Z (Spivey, 1989):
13