Cap 2. Proiectarea aplicatiilor multimedia
Fazele de dezvoltare
(ciclul de viata) ale unui sistem software sunt:
- Analiza cerintelor
- Proiectarea sistemului
- Implementarea
- Instalarea si integrarea
- Operarea si mentenanta
Faze independente, aplicate pe toate
nivelele:
- Testarea si validarea
- Managementul
Înainte de proiectare trebuie întelese clar
cerintele. Dupa intelegerea cerintelor trebuie selectat un model de
dezvoltare potrivit.
Modele
ale ciclului de viata [L. Maciaszek, “Practical
Software Engineering”, Addison Wesley, 2005, Cap. 1]:
- Modelul in cascada cu reactie
[1, 2].

- Modelul in cascada cu
suprapuneri [1, 2].

Avantajele modelelor in cascada:
- Simplu si usor de utilizat
- Usor de gestionat datorita rigiditatii
- Fazele si procesele sunt terminate pe rând (usor de urmarit)
- Bun pentru proiectele mici unde cerintele sunt bine întelese înca de
la început
Dezavantaje:
- Modificarea cerintelor este foarte greu de gestionat
- Nu sprijina dezvoltarea orientata pe obiecte
- Nu se produce prototipuri executabile decât foarte
târziu

Ciclul de viata iterativ presupune iteratii scurte între variante succesive.
Iteratia este o repetitie a unui proces cu scopul de adauga
functionalitati.
Ciclul de viata bazat pe iteratii presupune cresteri
succesive (increments) – versiuni îmbunatatite sau extinse ale
produsului la sfârsitul fiecarei iteratii. Presupune de asemenea versiuni
succesive îmbunatatite (builds) – sub forma de cod executabil livrabil
la încheierea fiecarei iteratii. Exemple de modele iterative:
Spirala (Boehm, 1988), IBM Rational Unified Process -
RUP (IBM, 2003), Model Driven Architecture -
MDA (OMG, 2003), Agile (Agile Alliance,
2001).
Avantajele modelelor iterative:
- Permite planificare continua si gestionare usoara
- Versiunile succesive permit corectarea cerintelor intelese sau
interpretate gresit
- Permite o mai mare flexibilitate la modificarea
cerintelor
Dezavantaje:
- faze rigide si care nu se suprapun
- nu exista o planificare initiala foarte clara, costurile se pot
modifica drastic pe parcurs
Dezvoltarea aplicatiilor
multimedia.
In cazul aplicatiilor
aplicatiilor multimedia exista o serie de cerinte specifice care necesita o
abordare oarecum diferita. Aici accentul se va pune in primul rand pe realizarea
unei interfete adecvate si pe satisfacerea cerintelor de timp real si de
sincronizare a datelor multimedia. Si aici insa este necesara alegerea unui
ciclu de viata adecvat si urmarirea unor proceduri si standarde de dezvoltare in
scopul obtinerii unei calitati maxime.
Aspecte specifice diferitelor faze ale ciclului de viata:
- Analiza: Analiza va porni
de la stabilirea cat mai precisa a grupurilor tinta carora le este adresata
aplicatia. Apoi se vor analiza tipul si cantitatea de date avute in vedere. Se
va tine cont in special ca planificarea fazelor sa aiba in vedere
disponibilitatea acestor date. In multe situatii colectarea datelor poate avea
o pondere foarte importanta in timpul total de dezvoltare. Pentru o cat mai
buna planificare vor trebui consultati pe langa beneficiari si programatorii,
web-designerii, adminitratorii sistemelor
etc.
Intrari: discutii cu clientii, documente de la
clienti, modele oferite de clienti etc.
Iesiri:
planul de lucru, estimarea costurilor, estimarea personalului necesar,
specificarea necesarului de software/hardware, consemnarea cerintelor,
aprobari.
- Specificarea
cerintelor: La specificarea cerintelor se va pleca de la
consemnarea cerintelor identificate in faza de analiza. Acestea sunt analizate
de echipa de dezvoltare si daca este necesar sunt discutate individual cu
clientii, propunandule eventual si variante alternative. Dupa ce toata
lumea le aproba acestea sunt trecute explicit in documentul final impreuna cu
responasbilitatile, termenle de executie si costuri
implicate.
Intrari: raportul de consemnare a
cerintelor.
Iesiri: documentatie de specificare
completa a cerintelor, folosita atat de catre beneficiar cat si
de echipa de dezvoltare.
- Proiectarea
aplicatiei: La dezvoltarea unei aplicati multimedia se pleaca de
obicei prin crearea unui prototip care sa prefigureze atat aranjarea
interfetei si cat si aspecetele legate de navigare. Urmatoarea faza o
presupune proiectarea stocarii datelor (de obicei intr-o baza de date) si
rutinelor de afisare/prelucrare a acestora. Datorita complexitatii datelor de
obicei se prefera identificarea a cat mai multor componente externe care vor
putea fi integrate in aplicatie.
Intrari:
documentul de specificare a cerintelor.
Iesiri:
proiectul aplicatiei incluzand prototipul interfetei sau machete utilizabile
la implementare.
- Implementarea aplicatiei: O faza initiala
presupune conlucrarea resposabililor cu crearea interfetei cu persoanele
responsabile cu editarea continutului. Importanta aceastei faze se
datoreaza faptului ca la o astfel de aplicatie accentul este pus pe
continut si maniera de prezentare, nu pe prelucrea complexa
a datelor. Urmeaza apoi scrierea codului utilizand unul sau mai
multe limbaje de uz general sau specializate. In aceasta faza atentia este
concentrata pe integrarea armonioasa a aspectelor dinamice astfel incat sa nu
se modifice aspectul creat la proiectarea interfetei. In acest scop se vor
folosi extensiv machetele propuse de catre designeri. Eventualele
elemente de interactiune necesare suplimentar vor fi create impreuna cu
responsabili cu crearea interfetei. In aceasta faza se va scrie si
documentatia de implementare si cea de utilizare. Implementarea fiecarei
functionalitati va fi urmata de un set de teste care sa o
valideze.
Intrari: documentul de specificare a
cerintelor.
Iesiri: proiectul aplicatiei incluzand
prototipul interfetei sau machete utilizabile la
implementare.
- Testarea: Si in
cazul acestor aplicatii se pot folosi metode de testare clasice. Cu toate
acestea exista si particularitati ale fazei de testare. O prima
particularitate se refera la testele relationate de verificarea ratelor de
transfer a datelor si uneori a perceptiei de calitate din partea unui
utilizator uman. O alta particularitate este specifica mai ales aplicatiilor
Web si se refera la testarea latimii de banda a aplicatiei, care va rula
implicit intr-un mediu multiutilizator. Acest test de scalabilitate este greu
de realizat pentru ca numarul de conexiuni care vor apare in situatia reala
este greu de estimat. Un alt factor util este testarea timpului mediu de
incarcare completa a unei pagini Web. In acest sens de un real folos este
considerarea utilizarii tehnologiei Ajax pentru evitarea unor eventuale
probleme.
Intrari: executabilul (sau site-ul Web
ruland pe un server), specificatia cerintelor si documentatia de utilizare a
programului.
Iesiri: rapoarte de testare, fisiere
log de erori.
- Instalarea, rularea si
intretinerea: Instalarea aplicatiei necesita incarcarea pe un
server Web si respectiv instalarea bazei de date aferente (daca este cazul).
In cazul aplicatiilor Web trebuie avuta in vedere copierea tuturor fisierelor
care sunt utilizate de respectivul site. Tot in acest caz in cadrul acestei
faze apare si o operatie suplimentara numita "Promovare". Aceasta se refera la
inregistrarea adresei pe site-uri de cautare, adaugarea unor meta-taguri
utilizate de robotii de cautare Web si eventual plasarea unor bannere pe alte
site-uri Web. Rularea aplicatiei implica verificari continue a scalabilitatii
raportat in general la un contor de accese. Operatia de intretinere se
aplica de obicei la modificarea datelor cuprinse in aplicatie (daca
acestea nu sunt preluate "live" dintr-o baza de date a companiei). Tot aici
trebuiesc facute si corectii daca se constata deficiente la rulare sau
modificari dictate de aparitia unor noi tehnologii la serverele si browserele
de Web.
Intrari: executabilul (sau arhiva site-ul),
date ale aplicatiei.
Iesiri: aplicatie in stare de
rulare.