... Programare Multimedia ...

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 

    •  Modelul iterativ [1, 2].

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.

 

Legaturi utile

1. L. Maciaszek and B. Liong, "Practical Software Engineering", Addison Wesley, 2005

2. Ian Sommerville, "Software engineering (ed. 8)", Addison Wesley, 2007 (Google Books)

3. De Dan Brandon, "Software Engineering for Modern Web Applications: Methodologies and Technologies", IGI Global, 2008 (Google Books)