Documente Academic
Documente Profesional
Documente Cultură
Albu Andrei
Profesor coordonator :
Conf.Univ.Dr. Cosmin Olteanu
2016
Introducere
n aceast proiect voi prezenta detaliat demersul realizri unei aplicatii, despre ceea ce
trebuie cunoscut i ceea ce trebuie luat n considerare cnd se dezvolta un asemenea program.
Voi trece n revist principiile de design pentru interfee de web siteuri: layout, culori, tipografie
i limitele impuse de tehnologiile web i modul de implementare tehnic a design-urilor. Pe
parcursul lucrrii voi pune accent pe importana accesibilitii aplicatiilor. Voi defini
caracteristicile importante la nivel vizual i tehnic pentru diferite tipuri de aplicatii, clasificate
dup scop. Comportamentul i ateptrile utilizatorilor care navigheaz pe Internet sunt corelate
cu tipurile de aplicatii. Voi vorbi despre cum trebuie s fie redactate textele deoarece o aplicatie
nu se rezum doar la grafic sau design; orice vizitator pune accent pe calitatea coninutului.
Calitatea unei aplicatii se poate determina pe baza aspectelor vizuale, tehnice (programare) i
coninut. Voi face un studiu comparativ pe mai multe web site-uri academice strine i romneti.
Analiza se va efectua la nivel tehnic, vizual i de coninut cu scopul de a extrage concluzii n
vederea realizrii proiectului. Dup aceea voi face o prezentare analiznd aceleai aspecte ale
aplicatiei .
Programul informatic este reprezentarea sau implementarea unui algoritm ntr-un cod
surs, scris ntr-un anumit limbaj de programare. O colecie de programe individuale alctuite
pentru ndeplinirea unui scop comun se numete de obicei software. Programul este un produs
finit al activitii de programare informatic. Considerat formal, un program informatic este un
transformator de aseriuni ce descriu proprietile datelor corecte: att ale datelor de intrare n
sistem, ct i cele ale datelor de ieire din sistem. De obicei programele se creeaz pentru un
anumit tip de calculator sau aparat inteligent. Tot de obicei, o condiie pentru funcionare este
i ca pe calculator s existe un sistem de operare (SO).
Pentru ca un program s fie eficient (de ex. s livreze rezultatele n scurt timp), el trebuie
s aib la baz un algoritm eficient, iar tehnicile de implementare i programare s fie i ele
eficiente.
Sarcinile i funciile programelor au crescut i cresc permanent, simultan cu
dezvoltarea hardului i a sistemelor de operare. i totui, pentru rezolvarea unor probleme
complexe nu este suficient un singur program. Este nevoie de mai multe programe, care atunci,
mpreun, se numesc aplicaie.
Notiuni teoretice
tiina calculatoarelor este un domeniu relativ nou. Primele calculatoare au fost construite
la mijlocul anilor 1940 i de atunci au avut loc dezvoltri spectaculoase. n anul 1946 Goldstine
i von Neumann apreciau c 1000 de instruciuni reprezint o limit superioar rezonabil pentru
complexitatea problemelor ce pot fi concepute ca rezolvabile cu ajutorul calculatorului. Dup ce
a prevzut n 1981 c nici un program pentru calculatoare personale nu va necesita vreodat mai
mult de 640 KB de memorie RAM, Bill Gates admitea n 1995 c lucrurile s-au schimbat n
ultimele dou decenii.
Urmtoarele exemple ofer o imagine asupra gradului de complexitate la care au ajuns
programele n zilele noastre1 : - Un sistem de control al navetelor spaiale include aproximativ
25 milioane linii de cod i un efort pentru dezvoltare de 22.000 man-years (unitate de msur
pentru costul dezvoltrii software ex., dac un program presupune efortul a 100 de persoane iar
finalizarea dezvoltrii necesit 2 ani atunci costul total de dezvoltare va fi de 200 man-years); Un sistem de control al traficului aerian include aproximativ 1 milion de linii de cod i
1600 man-years pentru scriere i 500 man-years pentru dezvoltare; - Majoritatea produselor
software dezvoltare astzi, din cauza complexitii, nu pot fi pe deplin nelese de ctre o singur
persoan; - Testarea programelor reprezint o problem de imposibilitate (un program tipic, de
nivel mediu, avnd 100 de posibile intrri, 2100 posibile stri va presupune 1020 ani
presupunnd efectuarea a 100 de teste pe secund) nu e de mirare c apar bug-uri tot timpul.
Astfel, n anul 1968, apare termenul de ingineria programrii. Prin acest termen se dorea
ca arta programrii s mprumute din rigoarea tiinelor inginereti pentru a putea livra programe
la timp i n mod economic. Prima definiie dat ingineriei programrii a fost enunat astfel (F.
L. Bauer): Ingineria programrii este stabilirea i utilizarea de principii inginereti solide pentru a
obine n mod economic programe sigure i care funcioneaz eficient pe maini de calcul reale.
Astzi ingineria programrii este vzut ca abordarea sistematic a dezvoltrii, funcionrii,
ntreinerii i retragerii din funciune a programelor (cf. IEEE Standard Glossary of Software
Engineering Technology, 1983).
Aceast viziune nu face referiri la cost sau la eficien, ns adaug referiri la perioade
importante din viaa unui program, ce urmeaz crerii i funcionrii, i anume ntreinerea i
retragerea din funcionare. Ingineria software urmrete toate aspectele privind producia
software de la primele stagii ale specificaiilor de sistem i pn la mentenana sistemului dup
ce a fost dat n funciune. innd cont de toate cerinele organizaionale i de restriciile
financiare ale unei organizaii, ingineria software definete teorii, metode i instrumente de lucru
al cror numr sporete continuu i care devin tot mai complexe datorit ncercrilor de a
descoperi noi soluii la problemele specifice unor organizaii Considerm c ingineria
programrii are urmtoarele caracteristici importante: - este aplicabil n producerea de programe
mari; - este o tiin inginereasc; - scopul final este ndeplinirea cerinelor clientului.
Programele mici se pot scrie relativ uor, de ctre un singur programator, ntr-o perioad destul
de scurt de timp. Un program de 100 de instruciuni este cu siguran un program mic. Nu
putem identifica precis grania dintre un program mic i unul mare, ns pe msur ce
dimensiunea programului crete, apar provocri noi, calitativ diferite. ntruct un singur sau
civa programatori nu pot avea timpul fizic pentru terminarea programului, este necesar
crearea uneia sau mai multor echipe de lucru. Este necesar coordonarea i comunicarea ntre
echipe.
Complexitatea sistemului software i a organizaiei care realizeaz sistemul software
devine important, putnd depi capacitatea de nelegere a unui singur individ. Apare ca
dezirabil o abordare riguroas a acestor probleme, ce include stilul de lucru, modul de scriere a
codului, instrumente adecvante pentru dezvoltarea programelor. Alegerea instrumentelor de
dezvoltare adecvate n funcie de scopul i natura proiectului software devine cel puin la fel de
important precum alegerea unor stiluri de lucru sau metode de dezvoltare adecvate pentru c ele
sunt interdependente.
Introducerea unora dintre cele mai frecvent utilizate instrumente pentru dezvoltarea
programelor reprezint de altfel scopul acestui curs. Spunem c un produs software reprezint
programe i documentaia aferent. Produsele software pot fi generice (off-the-shelf)
dezvoltate pentru a fi vndute mai multor clieni - sau specifice (custom) dezvoltate pentru a fi
vndute unui singur client, conform cu specificaia acestuia. Un program bun este acela care: Ofer utilizatorilor funcionalitile cerute; - Este uor de meninut programul trebuie s
evolueze odat cu schimbarea nevoilor utilizatorilor; - Este sigur (nu conine defecte de
funcionare sau defectele sunt remediate imediat ce sunt descoperite de ctre productor); - Este
eficient (nu irosete resurse ale sistemului); - Este uor de folosit. Spunem c un program este
fiabil dac funcioneaz i continu s funcioneze fr ntreruperi un interval de timp.
Aceast noiune exprim de fapt rezistena la condiiile de funcionare.Un motor trebuie
s fie fiabil pentru c trebuie s funcioneze o perioad suficient de lung de timp fr
ntreruperi, chiar dac nu totdeauna la performane optime. Programul este sigur dac
funcioneaz corect, fr operaii nedorite. Un automat bancar trebuie s fie sigur, pentru a
efectua tranzaciile n mod absolut corect, chiar dac funcionarea sa poate fi ntrerupt din cnd
n cnd.
Atunci cnd funcioneaz ns, trebuie s funcioneze foarte bine. 4 Un program are o
eroare (engl. bug) dac nu se comport corect. Se presupune c dezvoltatorul tia ce ar fi
trebuit programul s fac, iar comportamentul greit nu este intenionat. Iat cteva erori
celebre34: - n primii ani n care calculatoarele au fost introduse la staiile de benzin din SUA,
consumatorii primeau cecuri pe sume enorme. Faptul era privit n general cu umor i reclamaiile
erau rezolvate repede; - Sistemul de operare IBM OS360 coninea aproximativ 1.000 de greeli
la fiecare nou versiune care ncerca s rezolve greelile din versiunea precedent; - Un vehicul
de explorare a planetei Venus a fost pierdut deoarece programul primit de pe Pmnt pentru
rectificarea orbitei coninea linia 'DO 3 I = 1.3'; instruciunea corect n limbajul FORTRAN ar fi
trebuit s conin virgul n loc de punct; - n 1979 s-a descoperit o eroare n programele pentru
sistemele de rcire n centralele nucleare din SUA; din fericire, nu fusese niciodat nevoie de
execuia rutinelor ce conineau erorile; - Din cauza unei erori n sistemul de avertizare mpotriva
atacului cu rachete balistice, procedurile de contraatac au fost declanate nainte de a se
descoperi c a fost o eroare; - Racheta Arianne 5 a explodat n iunie 1996 din cauza unei greeli
de programare; costurile s-au ridicat la 500 milioane dolari. Procesul software presupune
folosirea unor tehnici i instrumente adecvate avnd n vedere: - Problema care trebuie rezolvat;
- Restriciile impuse; - Resursele disponibile.
Exist patru faze fundamentale ale metodologiilor ingineriei programrii: - analiza (ce
dorim s construim); - proiectarea (cum vom construi); - implementarea (construirea propriuzis); - testarea (asigurarea calitii). Dei aceste faze se refer n mod special la ciclul de via al
produsului software, ele pot fi aplicate i altor stadii de existen prin care trece un program de la
natere pn la moarte: lansare, ntreinere, ieire din uz. 1. Faza de analiz Aceast faz
definete cerinele sistemului, independent de modul n care acestea vor fi ndeplinite. Aici se
definete problema pe care clientul dorete s o rezolve. Rezultatul acestei faze este documentul
cerinelor, care trebuie s precizeze clar ce trebuie construit.
Documentul ncearc s redea cerinele din perspectiva clientului, definind scopurile i
interaciunile la un nivel descriptiv nalt, independent de detaliile de implementare, cum ar fi, de
exemplu: formularea problemei, ateptrile clientului sau criteriile pe care trebuie s le
ndeplineasc produsul. Grania dintre descrierile de nivel nalt i cele de nivel sczut nu este
foarte bine trasat. Uneori, dac un detaliu tehnic important trebuie specificat, el va aprea n
document. Totui, aceasta trebuie s fie excepia i nu regula.
Un scenariu atipic trebuie s fie ndeplinit de sistem numai n cazuri speciale. Clientul
poate s spere, de exemplu, c o eroare neprevzut este un eveniment atipic. Totui, sistemul
trebuie s gestioneze un numr ct mai mare de categorii de erori, prin tehnici stabilite, precum
handler-ele de excepii, monitorizarea proceselor etc.; - Cerine incomplete sau nemonotone: O
enumerare complet a cerinelor pentru toate situaiile care pot aprea n condiii de lucru reale
nu este posibil. n logica tradiional, o teorie este definit de o mulime finit de axiome.
Teoremele din teoria respectiv sunt propoziii adevrate.
Dac se adaug ulterior noi axiome, teoremele existente rmn valide iar noile teoreme
dezvoltate sunt adugate teoremelor stabilite. n logica nemonoton, adugarea de noi axiome
poate invalida unele teoreme care au fost demonstrate anterior. O nou teorie nu mai este o
simpl extensie a teoriei vechi, ci o mulime de teoreme noi, mpreun cu o parte din teoremele
vechi. Procesul de stabilire a cerinelor are o natur iterativ i nemonoton. Mulimea iniial de
cerine (axiomele) definete posibilitile (teoremele) sistemului.Noile cerine pot infirma
soluiile vechi.
Pe msur ce un sistem crete n dimensiuni i complexitate, stabilirea cerinelor devine
din ce n ce mai dificil, mai ales cnd procesul de colectare a cerinelor este distribuit, fiind
realizat de indivizi cu specializri diferite. 2. Faza de proiectare Pe baza cerinelor din faza de
analiz, acum se stabilete arhitectura sistemului: componentele sistemului, interfeele i modul
lor de comportare: - Componentele sunt blocurile de construcie ale produsului. Acestea pot fi
create de la zero sau reutilizate dintr-o bibliotec de componente. Componentele rafineaz i
captureaz semnificaia detaliilor din documentul cerinelor; - Interfeele ajut la mbinarea
componentelor. O interfa reprezint grania dintre dou componente, utilizat pentru
comunicarea dintre acestea. Prin intermediul interfeei, componentele pot interaciona; Comportamentul, determinat de interfa, reprezint rspunsul unei componente la stimulii
aciunilor altor componente.Documentul de proiectare descrie planul de implementare a
cerinelor. Se identific detaliile privind limbajele de programare, mediile de dezvoltare,
dimensiunea memoriei, platforma, algoritmii, structurile de date, definiiile de tip globale,
interfeele, etc. 7
n aceast faz trebuie indicate i prioritile critice pentru implementare. Acestea
sugereaz sarcinile care, dac nu sunt executate corect, conduc la eecul sistemului. Totui, chiar
dac prioritile critice sunt ndeplinite, acest fapt nu duce automat la succesul sistemului, ns
crete nivelul de ncredere c produsul va fi o reuit. Folosind scenariile tipice i atipice, trebuie
realizate compromisurile inerente ntre performan i complexitatea implementrii. Analiza
performanelor presupune studierea modului n care diferitele arhitecturi conduc la diferite
caracteristici de performan pentru fiecare scenariu tipic. n funcie de frecven de utilizare a
scenariilor, fiecare arhitectur va avea avantaje i dezavantaje. Un rspuns rapid la o aciunea a
utilizatorului se realizeaz deseori pe baza unor costuri de resurse suplimentare: indeci,
managementul cache-ului, calcule predictive etc.
Dac o aciune este foarte frecvent, ea trebuie realizat corect i eficient. O aciune mai
rar trebuie de asemenea implementat corect, dar nu este evident care e nivelul de performan
necesar n acest caz. O situaie n care o astfel de aciune trebuie implementat cu performane
maxime este nchiderea de urgen a unui reactor nuclear. Planul de implementare i planul de
test pot fi considerate i ca aparinnd fazelor de implementare i respectiv testare. ns unul din
scopurile fazei de proiectare este stabilirea unui plan pentru terminarea sistemului. Planul de
implementare stabilete programul dup care se va realiza implementarea i resursele necesare
(mediul de dezvoltare, editoarele, compilatoarele etc.). Planul de test definete testele necesare
pentru stabilirea calitii sistemului. Dac produsul trece toate testele din planul de test, este
declarat terminat. Cu ct testele sunt mai amnunite, cu att este mai mare ncrederea n sistem
i deci crete calitatea sa. Un anume test va verifica doar o poriune a sistemului. Acoperirea
testului reprezint procentajul din produs verificat prin testare. n mod ideal, o acoperire de
100% ar fi excelent, ns este rareori ndeplinit.
De obicei, un test cu o acoperire de 90% este simpl, ns ultimele 10% necesit o
perioad de timp semnificativ. De exemplu, s considerm BIOS-ul (Basic Input/Output
System) construit de IBM la nceputul anilor 80 n strns legtur cu sistemul de operare DOS
(Disk Operating System) al firmei Microsoft. Din raiuni de performan, BIOS-ul a fost plasat
ntr-un chip ROM, i deci patch-urile pentru eventualele erori erau imposibile. Astfel, au fost
necesare teste cu acoperire de 100%.Codul propriu-zis al BIOS-ului era destul de mic, cteva mii
de linii. ns deoarece BIOS-ul are o natur asincron, testul a presupus mai nti crearea unui
mediu asincron care s aduc sistemul n starea dorit i apoi trebuia generat un eveniment care
s declaneze un test. Foarte repede, setul de test a devenit mult mai mare dect BIOS-ul.A
aprut astfel problema testrii nsui a mediului de test! n final, o acoperire de 100% a fost
atins, dar cu un cost foarte ridicat. O soluie mai ieftin a fost nscrierea BIOS-ului ntr-o
combinaie dintre EPROM (Electronic Programmable Read Only Memory) i ROM. Cea mai
mare parte a produsului era plasat n ROM, iar patch-urile erau plasate n EPROM. Aceasta a fost
abordarea adoptat de Apple pentru Macintosh. n general, este suficient ca testele s cuprind
scenariile tipice i atipice, fr s verifice ntregul sistem, cu absolut toate firele de execuie.
Acesta poate conine ramificaii interne, erori sau ntreruperi care conduc la fire de
execuie netestate.Majoritatea sistemelor sunt pline de bug-uri nedescoperite.De obicei, clientul
particip n 8 mod logic la testarea sistemului i semnaleaz erori care vor fi ndeprtate n
versiunile ulterioare. 3. Faza de implementare n aceast faz, sistemul este construit, ori plecnd
de la zero, ori prin asamblarea unor componente pre-existente. Pe baza documentelor din fazele
anterioare, echipa de dezvoltare ar trebui s tie exact ce trebuie s construiasc, chiar dac
rmne loc pentru inovaii i flexibilitate. De exemplu, o component poate fi proiectat mai
restrns, special pentru un anumit sistem, sau mai general, pentru a satisface o direcie de
reutilizare.
Echipa trebuie s gestioneze problemele legate de calitate, performan, biblioteci i
debug. Scopul este producerea sistemului propriu-zis. O problem important este ndeprtarea
erorilor critice. ntr-un sistem exist trei tipuri de erori: - Erori critice: mpiedic sistemul s
satisfac n mod complet scenariile de utilizare. Aceste erori trebuie corectate nainte ca sistemul
s fie predat clientului i chiar nainte ca procesul de dezvoltare ulterioar a produsului s poat
continua; - Erori necritice: Sunt cunoscute, dar prezena lor nu afecteaz n mod semnificativ
calitatea observat a sistemului.
De obicei aceste erori sunt listate n notele de lansare i au modaliti de ocolire bine
cunoscute; - Erori necunoscute: Exist ntotdeauna o probabilitate mare ca sistemul s conin un
numr de erori nedescoperite nc. Efectele acestor erori sunt necunoscute. Unele se pot dovedi
critice, altele pot fi rezolvate cu patch-uri sau eliminate n versiuni ulterioare. 4. Faza de testare
Calitatea produsului software este foarte important. Multe companii nu au nvat ns acest
lucru i produc sisteme cu funcionalitate extins, dar cu o calitate sczut. E mai simplu s-i
explici clientului de ce lipsete o anumit funcie dect s-i explici de ce produsul nu este
performant. Un client satisfcut de calitatea produsului va rmne loial firmei i va atepta noile
funcii n versiunile urmtoare. n multe metodologii ale ingineriei programrii, faza de testare
este o faz separat, realizat de o echip diferit dup ce implementarea s-a terminat. Motivul
este faptul c un programator nu-i poate descoperi foarte uor propriile greeli. O persoan nou
care privete codul poate descoperi greeli evidente care scap celui care citete i recitete
materialul de multe ori.
Din pcate, aceast practic poate determina o atitudine indiferent fa de calitate n
echipa de implementare. Tehnicile de testare sunt abordate preponderent din perspectiva
productorului sistemului. n mod ideal, i clientul trebuie s joace un rol important n aceast
faz. Testele de regresiune (engl. regression test) sunt colecii de programe care testeaz una
sau mai multe trsturi ale sistemului. Rezultatele testelor sunt adunate i dac exist erori, bugul este corectat. Un test de regresiune valid genereaz rezultate verificate, numite standardul de
aur. Validitatea rezultatului unui test ar trebui s fie determinat 9 de documentul cerinelor. n
practic, echipa de implementare este responsabil de interpretarea validitii. Testele sunt
colectate, mpreun cu rezultatele standardelor de aur, ntr-un pachet de test de regresiune. Pe
msur ce dezvoltarea continu, sunt adugate mai multe teste noi, iar testele vechi pot rmne
valide sau nu. Dac un test vechi nu mai este valid, rezultatele sale sunt modificate n standardul
de aur, pentru a se potrivi ateptrilor curente. Pachetul de test este rulat din nou i genereaz noi
rezultate. Acestea sunt comparate cu rezultatele standardelor de aur. Dac sunt diferite, n sistem
a aprut o greeal. Greeala este corectat i dezvoltarea continu. Acest mecanism detecteaz
situaiile cnd starea curent de dezvoltare a produsului invalideaz o stare existent. Astfel, se
previne regresiunea sistemului ntr-o stare de eroare.Exist patru puncte de interes n testele de
regresiune pentru asigurarea calitii.
Testarea intern trateaz implementarea de nivel sczut. Fiecare funcie sau component
este testat de ctre echipa de implementare. Aceste teste se mai numesc teste clear-box sau
white-box, deoarece toate detaliile sunt vizibile pentru test. Testarea unitilor testeaz o
unitate ca un ntreg. Aici se testeaz interaciunea mai multor funcii, dar numai n cadrul unei
singure uniti. Testarea este determinat de arhitectur. De multe ori sunt necesare aa-numitele
schele, adic programe special construite pentru stabilirea mediului de test. Numai cnd
mediul este realizat se poate executa o evaluare corect. Programul schel stabilete stri i
valori pentru structurile de date i asigur funcii externe fictive. De obicei, programul schel nu
are aceeai calitate ca produsul software testat i adesea este destul de fragil. O schimbare mic
n test poate determina schimbri importante n programul schel. Aceste teste se mai numesc
teste black-box deoarece numai detaliile interfeei sunt vizibile pentru test.Testarea intern i a
unitilor poate fi automatizat cu ajutorul instrumentelor de acoperire (engl. coverage tools),
care analizeaz codul surs i genereaz un test pentru fiecare alternativ a firelor execuie.
Depinde de programator combinarea acestor teste n cazuri semnificative care s valideze
rezultatelor fiecrui fir de execuie.
De obicei, instrumentul de acoperire este utilizat ntr-un mod oarecum diferit: el
urmrete liniile de cod executate ntr-un test i apoi raporteaz procentul din cod executat n
cadrul testului. Dac acoperirea este mare i liniile surs netestate nu prezint mare importan
pentru calitatea general a sistemului, atunci nu mai sunt necesare teste suplimentare. Testarea
aplicaiei testeaz aplicaia ca ntreg i este determinat de scenariile echipei de analiz. Aplicaia
trebuie s execute cu succes toate scenariile pentru a putea fi pus la dispoziia clientului. Spre
deosebire de testarea intern i a unitilor, care se face prin program, testarea aplicaiei se face
de obicei cu scripturi care ruleaz sistemul cu o serie de parametri i colecteaz rezultatele. n
trecut, aceste scripturi erau create manual. n prezent, exist instrumente care automatizeaz i
acest proces.Majoritatea aplicaiilor din zilele noastre au interfee grafice (GUI).Testarea
interfeei grafice pentru asigurarea calitii poate pune anumite probleme. Cele mai multe
interfee, dac nu chiar toate, au bucle de evenimente, care conin cozi de mesaje de la mouse,
tastatur, ferestre etc.
Asociate cu fiecare eveniment sunt coordonatele ecran. Testarea interfeei presupune deci
memorarea tuturor acestor informaii i elaborarea unei modaliti prin care mesajele s fie
trimise din nou aplicaiei, la un moment ulterior. 10 Testarea la stres determin calitatea aplicaiei
n mediul su de execuie. Ideea este crearea unui mediu mai solicitant dect cel n care aplicaia
va rula n mod obinuit. Aceasta este cea mai dificil i complex categorie de teste. Sistemul
este supus unor cerine din ce n ce mai numeroase, pn cnd acesta cade. Apoi produsul este
reparat i testul de stres se repet pn cnd se atinge un nivel de stres mai ridicat dect nivelul
ateptat de pe staia clientului. Deseori apar aici conflicte ntre teste. Fiecare test funcioneaz
corect atunci cnd este fcut separat. Cnd dou teste sunt rulate n paralel, unul sau ambele teste
pot eua. Cauza este de obicei managementul incorect al accesului la resurse critice. Mai apar i
probleme de memorie, cnd un test i aloc memorie i apoi nu o mai dezaloc. Testul pare s
funcioneze corect, ns dup ce este rulat de mai multe ori, memoria disponibil se reduce iar
sistemul cade. 2. Metodologii de dezvoltare a programelor Cnd pornim la dezvoltarea unui
program avem nevoie de: - nelegere clar a ceea ce se cere; - un set de metode i instrumente de
lucru; - un plan de aciune. Planul de aciune se numete metodologie de dezvoltare.
Dezvoltarea unui anumit program const ntr-un set de pai ce se fac pentru a-l realiza.
Lund n considerare tipul pailor ce se efectueaz se creeaz un model de lucru, ce poate fi
aplicat unei serii mai largi de proiecte. Acesta este motivul pentru care planul de aciune este
numit model: el poate fi privit ca un ablon al dezvoltrii de programe. n timpul dezvoltrii
programelor s-a constatat c exist anumite tipuri de activiti care trebuie fcute la un moment
dat: Analiza cerinelor: Se stabilete ce anume vrea clientul ca programul s fac. Scopul este
nregistrarea cerinelor ntr-o manier ct mai clar i mai fidel. Claritatea se refer la lipsa
ambiguitii iar fidelitatea la nregistrarea ct mai exact (posibil cuvnt cu cuvnt); - Proiectarea
arhitectural: Din motive de complexitate, programele mari nu pot fi concepute i implementate
ca o singur bucat. Programul va trebui construit aadar din module sau componente.
Proiectarea arhitectural mparte sistemul ntr-un numr de module mai mici i mai simple, care
pot fi abordate individual; - Proiectarea detaliat: Se realizeaz proiectarea fiecrui modul al
aplicaiei, n cele mai mici detalii; - Scrierea codului: Proiectul detaliat este transpus ntr-un
limbaj de programare. n mod tipic, aceasta se realizeaz modular, pe structura rezultat la
proiectarea arhitectural; - Integrarea componentelor: Modulele programului sunt combinate n
produsul final.
Rezultatul este sistemul complet. n modelul numit big-bang componentele sunt
dezvoltate i testate individual. Apoi ele sunt integrate n sistemul final. Avnd n vedere c
funcionarea corect a componentelor individuale a fost testat, integrarea 11 ar trebui s fie o
formalitate. Din pcate, componentele nu pot fi testate exhaustiv, iar cnd acestea lucreaz
mpreun pot s apar situaii pe 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 apare 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.
Dup cum a fost explicat anterior, un model al unui proces software reprezint o
reprezentare abstract a unui proces software. Un model de proces reprezint procesul privit
dintr-o anumit perspectiv. n continuare introducem cteva modele generale de proces (numite
i paradigme de proces). Modelele descrise sunt: - Modelul cascad. Activitile fundamentale de
proces specificaia, dezvoltarea, validarea i evoluia sunt reprezentate ca faze separate precum
specificarea cerinelor, proiectarea software, implementare, testare, etc. - Dezvoltarea
evoluionar. Abordarea prespune ntreptrunderea activitilor de specificaie, dezvoltare i
validare. Se pornete de la dezvoltarea unui sistem iniial pornind de la un set de specificaii
abstracte. Sistemul este ulterior rafinat pe baza intrrii furnizate de utilizator pentru a produce n
final un sistem ce satisface n totalitate cerinele utilizatorului. 12 - Dezvoltarea bazat pe
componente. Abordarea se bazeaz pe existena unui numr considerabil de componente
unui prototip de aruncat, scopul este exclusiv obinerea unei specificaii. De aceea nu se acord
nici o importan stilului de programare i de lucru, punndu-se accent pe viteza de dezvoltare.
Odat stabilite cerinele, codul prototipului este aruncat, sistemul final fiind rescris de la
nceput, chiar n alt limbaj de programare.
n cazul realizrii unui prototip evoluionar, scopul este de a crea un schelet al aplicaiei
care s poat implementa n prim faz o parte a cerinelor sistemului. Pe msur ce aplicaia
este dezvoltat, noi caracteristici sunt adugate scheletului existent. n contrast cu prototipul de
aruncat, aici se investete un efort considerabil ntr-un design modular i extensibil, precum i n
adoptarea unui stil elegant de programare.
Aceast metod are urmtoarele avantaje: - permite dezvoltatorilor s elimine lipsa de
claritate a specificaiilor; - ofer utilizatorilor ansa de a schimba specificaiile ntr-un mod ce nu
afecteaz drastic durata de dezvoltare; - ntreinerea este redus, deoarece validarea se face pe
parcursul dezvoltrii; - se poate facilita instruirea utilizatorilor finali nainte de terminarea
produsului.
Dezavantajele principale ale prototipizrii sunt prezentate n continuare: - deoarece
prototipul ruleaz ntr-un mediu artificial, anumite dezavantaje ale produsului final pot fi scpate
din vedere de clieni; - clientul nu nelege de ce produsul necesit timp suplimentar pentru
dezvoltare, avnd n vedere c prototipul a fost realizat att de repede; - deoarece au n fiecare
moment ansa de a face acest lucru, clienii schimb foarte des specificaiile; - poate fi
nepopular printre dezvoltatori, deoarece implic renunarea la propria munc. Dezvoltarea
bazat pe componente n majoritatea proceselor software exist un grad de reutilizare software.
Acest aspect apare cu precdere atunci cnd dezvoltatorii ce lucreaz n cadrul unui
proiect cunosc proiecte sau module de cod ce realizeaz funcionaliti similare celor cerute de
proiectul curent.
Dezvoltatorii adesea ajung s caute astfel de componente reutilizabile i, prin eventuala
lor modificare, le integreaz n proiect. Dezvoltarea bazat pe componente se bazeaz aadar pe
refolosirea sistematic a unor componente anterior implementate sau pe modificarea unor
sisteme COTS (Commercialoff-the-shelf).
- Analiza componentelor. Plecnd de la specificarea cerinelor se realizeaz o cutare a
componentelor cu ajutorul crora se pot implementa acestea. Adesea e greu de gsit o
component care s se potriveasc exact unei anumite cerine sau componenta care ar putea fi
folosit adesea implementeaz funcionalitatea numai parial.
- Modificarea cerinelor. n aceast etap cerinele sunt analizate folosind diversele
informaii disponibile despre componente.Cerinele pot fi ulterior modificate n funcie de
componentele disponibile.Atunci cnd modificrile sunt imposibil de fcut poate fi reluat
activitatea de analiz a componentelor pentru gsirea unor soluii alternative.
- Proiectarea sistemului prin refolosire. n aceast etap este proiectat framework-ul
sistemului (sau se poate opta pentru refolosirea unui framework deja existent). Proiectanii
utilizator) fiind implementate cel mai devreme. Dup ce au fost identificate incrementrile
sistemului cerintele serviciilor ce trebuie implementate odat cu primul incrementat sunt
analizate n detaliu i se trece la implementarea respectivului increment. n timpul fazei de
dezvoltare alte analize ale cerintelor pentru incrementri viitoare pot aprea, dar nu se accept
modificri ale cerinelor pentru incrementarea curent.
Odat ce a fost finalizat i livrat un increment clienii pot trece la punerea n producie a
funcionalitii respective. Aceasta nseamn c utilizatorii pot trece la experimentarea n
producie a unora dintre funcionalitile cele mai prioritare, de baz, nainte ca ntreg sistemul s
fie dezvoltat.
Dezvoltarea incremental. Dezvoltarea incremental are i ea o serie de avantaje. Clienii
nu sunt obligai s atepte pn cnd ntregul sistem este livrat i pot trece la folosirea unor
funcionaliti prioritare nainte chiar ca ntreg sistemul s fie finalizat. Clienii pot, de asemenea,
folosi incrementrile iniiale ca prototip i pot experimenta cerinele ulterioare ce sunt propuse
apoi pentru dezvoltrile viitoare ale sistemului final. Riscul de eec al ntregului proces este
redus. Chiar dac n unele incrementri pot aprea probleme, totui unele incrementri, cu o
mare probabilitate, ajung s fie livrate clientului. n fine, deoarece serviciile avnd cea mai mare
prioritate sunt livrate iniial, inevitabil aceste servicii vor fi i testate cel mai ndelung nainte de
punerea n producie a sistemului final.Utilizatorii vor ntlni mai puine erori de funcionare n
cadrul unor dintre componentele critice ale sistemului final.
Modelul spiral Modelul spiral (Fig. 5) este un 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. n locul
reprezentrii procesului software ca o secven de activiti, procesul este reprezentat n acest caz
sub forma unei spirale. Fiecare bucl a spiralei reprezint o faz a procesului software. Astfel,
bucla cea mai din centru corespunde activitii de stabilire a fezabilitii sistemului, urmtoarea
bucl corespunde definirii cerinelor, urmtoarea proiectrii sistemului i aa mai departe.
Fiecare bucl a spiralei este mprit n patru sectoare: 1. Stabilirea obiectivelor. Sunt definite
obiective specifice pentru faza curent a proiectului. Sunt identificate, de asemenea, constrngeri
asupra proceselor i 19 produsului i este trasat un plan detaliat de management. Tot aici sunt
stabilite riscurile asociate procesului. Pot fi planificate strategii alternative, n funcie de riscurile
identificate. 2. Evaluarea i reducerea riscurilor. n cazul fiecrui risc anterior identificat este
realizat o analiz detaliat. Sunt trasai pai pentru reducerea riscului.
De exemplu, dac apare un risc legat de faptul c cerinele sunt necorespunztoare atunci
se poate trece la dezvoltarea unui sistem prototip. 3. Dezvoltarea i validarea. Dup etapa de
evaluare a riscurilor se alege un model de dezvoltare. De exemplu, dac riscurile interfeelor
utilizator sunt dominante, atunci un model corespunztor de dezvoltare ar putea fi prototiparea
evoluionar. Dac riscurile legate de siguran sunt dominante atunci se poate alege un model de
dezvoltare formal a modelului. Modelul cascad poate fi ales atunci cnd riscul principal
identificat l reprezint integrarea sub-sistemelor. 4. Planificarea. Proiectul este revizuit i se ia o
decizie legat de posibila continuare cu o nou bucl a spiralei. Dac se ia decizia de continuare
atunci sunt trasate planuri pentru continuarea cu urmtoarea faz a proiectului.
Modelul spiral. Principala diferen ntre aceast abordare i ale modele de procese
software este dat de recunoaterea explicit a riscurilor. Riscul reprezint orice ar putea merge
ru. De exemplu, dac intenia este de a utiliza un nou limbaj de programare, un posibil risc ar
putea fi reprezentat de posibilitatea ca compilatoarele existente s nu fie de ncredere sau s nu
produc cod eficient. Riscurile duc la probleme legate de planificare i depirea costurilor.Un
ciclu al spiralei ncepe prin elaborarea obiectivelor precum performan i funcionalitate.
Modaliti alternative de atingere a acestor obiective i constrngerile impuse de fiecare obiectiv
sunt apoi enumerate. Fiecare alternativ este evaluat n termeni de riscuri posibile i sunt
identificate posibilele surse de riscuri. Urmtpatoarea etapa presupune rezolvarea acestor riscuri
prin activiti de informare precum analiza detaliat, prototiparea i simularea.
Studiu de caz
Amadeus CARE
Provocare
business Amadeus. In esenta, se identifica necesitatea integrarii de procese interne din categorii
tehnologice extrem de diferite din compania Amadeus, cum sunt: distributie si content, vanzari si
comert electronic, business management, servicii si consultanta. Alaturi de acestea, aplicatia a
trebuit sa faca posibila administrarea unei retele largi de clienti si parteneri cu profiluri si
necesitati diferite.
Rezolvare
Intranet
Extranet
In aceasta sectiune, clientii si partenerii Amadeus pot accesa cele mai recente informatii
despre serviciile si produsele Amadeus, stiri din industrie, newslettere, statistici (productivitatea
nivelului de rezervari, evidenta biletelor emise), chestionare, documentatie de training si alte
materiale cu caracter specific.
Rezultate
Feedback
Gestionarea rapida si usoara a bazei de date de clienti, obtinerea automata a diferite tipuri
de rapoarte si statistici legate de productivitatea clientilor nostri, gestionarea automata a
sesiunilor de scolarizare sunt activitati esentiale pentru optimizarea activitatii noastre si pentru
succesul nostru. Prin parteneriatul cu ZITEC beneficiem de posibilitatea de a asigura permanent
clientilor nostri acces la informatiile de care acestia au nevoie pentru evaluarea activitatii lor
(rapoarte configuratie, statistici rezervari/bilete, inscrieri la curs, newsletter etc.). De-a lungul
celor peste 5 ani de colaborare, ZITEC s-a dovedit a fi un partener profesionist care actioneaza
proactiv, ajutandu-ne astfel sa imbunatatim functionalitatile aplicatiei dezvoltate.
Bibliografie
Notiuni teoretice :
1. http://andrei.clubcisco.ro/cursuri/f/f-sym/4idp/1_Etapele_dezvoltarii_doc.pdf
2. https://ro.wikipedia.org/wiki/Pagina_principal