DEVELOPING SOFTWARE FOR THE USER INTERFACE
Procesul proiectarii si construirii interfetelor cu utilizatorul este de importanta majora în dezvoltarea de sisteme care sa satisfaca necesitatile utilizatorului, atât cele prezente, cât si cele viitoare. Acest proces include:
designul original al interfetei
implementarea sistemului
modificari ale sistemului operational (partea cea mai delicata în cazul sistemelor interactive). Intrucât interfata cu utilizatorul reprezinta circa 50% din costurile totale ale ciclului de viata la sistemele interactive, inginerul de software are un interes justificat în crearea unei interfete care satisface cerintele utilizatorului si este dezvoltata utilizând cele mai bune unelte si tehnici pe care le are la dispozitie.
Interfata cu utilizatorul este mediatorul între cei doi protagonisti, operatorul sistemului interactiv (omul) si hardware-ul si software-ul computerului, care implementeaza sistemul interactiv. Fiecare dintre participanti formuleaza anumite solicitari din partea produsului final.
Operatorul este cel ca 23123j923x re apreciaza utilitatea si cât de adecvata este interfata; hardware-ul si software-ul sunt uneltele cu care este construita interfata. Ca urmare, o interfata utila si adecvata pentru operator trebuie construita cu uneltele hard si soft disponibile. Datorita complexitatii ambelor componente, constructia interfetei cu utilizatorul implica luarea multor decizii în privinta utilizarii uneltelor disponibile, în vederea satisfacerii cât mai complete a operatorului. Dezvoltarea interfetei cu utilizatorul se complica si mai mult atunci când utilizatorul nu are o idee clara asupra specificatiilor sistemului de realizat, sau are idei preconcepute, costisitoare si dificil de implementat.
Ciclul de dezvoltare a interfetei cu utilizatorul este un proces care implica un numar de persoane.
Cercetatorii în software engineering recomanda sase faze în designul si dezvoltarea unui sistem informatic:
Definirea cerintelor. Consta în formularea, formala sau semi-formala, a problemei de rezolvat. Aici se specifica proprietatile si serviciile pe care trebuie sa le ofere sistemul, într-un mediu specific, supus unui set de constrângeri. Cerintele sunt definite de client, totusi, clientul nu este neaparat necesar sa fie operatorul sistemului final.
Elaborarea specificatiilor. Consta în proiectarea functionala de nivel înalt si proiectarea interna. Pe parcursul proiectarii de nivel înalt sunt subliniate functiunile pe care le va vedea operatorul. În cadrul proiectarii interne se subliniaza organizarea programului, pentru a satisface specificatiile proiectarii de nivel înalt. În aceasta faza se definesc structurile de date, algoritmii, modulele, limbajele de programare etc.
Implementarea este exprimarea specificatiilor interne, prin intermediul unui set de limbaje de programare si de unelte.
Testarea cuprinde depanarea modulelor si a seturilor de module.
Instalarea
Intretinerea presupune în principal efectuarea de modificari si rezolvarea efectelor lor colaterale.
Desi aceste activitati sunt definite ca faze, în realitate majoritatea proceselor de dezvoltare urmeaza un proces iterativ de rafinare: faza specificatiilor poate sa evidentieze cerinte suplimentare, constrângerile relevate la faza de implementare pot afecta constructia interfetei cu utilizatorul, odata ce sistemul este instalat, poate sa apara necesitatea modificarii interfetei cu utilizatorul si alte rafinari. Ca urmare, procesul de rafinare continua pe parcursul întregului ciclu de viata.
Operatorul ruleaza sistemul interactiv final. Ca urmare, el este cel care trebuie sa fie capabil sa înteleaga si sa utilizeze interfata oferita de cei care joaca celelalte patru roluri.
Proiectantul de sistem precizeaza arhitectura generala a sistemului interactiv, specificând ce sarcini sunt de îndeplinit, în cadrul carei portiuni a sistemului. Aceste decizii determina ce se cere din partea operatorului.
Proiectantul Interfetei cu Utilizatorul utilizeaza specificatiile proiectantului de sistem pentru a defini interfata cu care interactioneaza operatorul. Aceasta persoana trebuie sa înteleaga ce trebuie rezolvat, cerintele speciale ale operatorului, costurile si avantajele unor interfete particulare, din punct de vedere al operatorului cât si din punct de vedere al costurilor de implementare si de întretinere.
Proiectantul software-ului functional creaza structura software necesara implementarii task-urilor de efectuat de catre portiuni ale sistemului, altele decât interfata cu utilizatorul.
Proiectantul software-ului interfetei cu utilizatorul creaza structura software care va implementa interfata definita de proiectantul interfetei cu utilizatorul.
În general, decurge la fel cu cel al oricarui proiect software. Sunt de facut însa doua observatii importante:
Proiectarea si dezvoltarea interfetei cu utilizatorul este un proces iterativ de rafinare, care dureaza atât timp cât exista suficienta motivatie pentru modificarea sistemului interactiv. Ca urmare orice implementare se va baza pe o arhitectura software care suporta modificarea interfetei cu utilizatorul.
De fiecare parte a interfetei avem reprezentari abstracte ale componentelor. Pe latura umana, aceste abstractizari fac obiectul studiului psihologilor. De cealalta parte, a calculatorului, aceste abstractizari sunt descrise printr-o ierarhie de masini abstracte, care ofera diferitele nivele de servicii. Orice interfata cu utilizatorul trebuie sa tina cont de ambele componente.
La fiecare stadiu al ciclului de viata al interfetei cu utilizatorul, persoanele cu rolurile definite mai sus pot aduce modificari:
Operatorul poate solicita modificari în orice stadiu . El poate dori sa aiba la dispozitie informatii suplimentare, sau sa se aduca modificari în aspectul prezentarii, sau functionalitati noi;
Proiectantul de sistem poate modifica functionalitatea întregului sistem;
Proiectantul interfetei cu utilizatorul poate face modificari din cauza ratei mari a erorilor de operare sau a insatisfactiei operatorului;
Proiectantul software-ului functional poate modifica structura task-urilor componentelor sistemului, altele decât interfata cu utilizatorul;
Proiectantul software-ului interfetei cu utilizatorul poate face modificari datorita constrângerilor introduse de uneltele disponibile.
In cazul proiectarii interfetei cu utilizatorul, faza aceasta presupune definirea problemei, modelarea operatorului si analiza task-urilor. Analiza task-urilor implica proiectarea de nivel înalt a interfetei cu utilizatorul. Pentru a proiecta o asemenea interfata pentru un sistem interactiv, proiectantul de sistem trebuie mai întâi sa înteleaga functionalitatea ceruta din partea sistemului si posibilitatile operatorului. Apoi proiectantul de sistem construieste modelele abstracte ale operatorului si ale task-urilor de efectuat - functionalitatea de baza a aplicatiei.
Modelul operatorului contine presupuneri legate de cunostintele despre domeniul aplicatiei, caracteristicile umane si cunostintele în materie de calculatoare. Modelul sistemului interactiv contine o versiune rudimentara a functionalitatii de implementat. Aceste modele pot fi prezentate explicit de catre proiectantul sistemului sau, preferabil, pot fi manipulate implicit si explicitate doar într-un stadiu mai avansat al procesului.
Important este ca inginerii software implicati în construirea interfetei utilizator sa înteleaga conceptele si terminologia utilizate de psihologi în privinta acestor interfete. Cu cât acestia cunosc mai bine asemenea concepte, cu atât vor fi mai în masura sa proiecteze interfata. Chiar si atunci când lucreaza într-un grup care dezvolta cerintele si specificatiile, inginerii soft trebuie sa se consulte cu proiectantul interfetei utilizator. În acest caz, este important ca inginerul software sa înteleaga terminologia si vocabularul proiectantului interfetei, pentru ca cei doi sa poata comunica.
În aceasta faza proiectantul interfetei cu utilizatorul specifica interfata cu care va interactiona operatorul. Se determina obiectele interactiunii, cum ar fi ferestre, comenzi, meniuri. Tot în aceasta faza se fac teste pentru determinarea posibilitatilor de utilizare, respectiv de învatare. De asemenea, în aceasta faza, proiectantul software-ului functional defineste functiunile în detaliu.
Ca urmare, ambele modele - cel al operatorului si cel al functionalitatii sistemului - sunt rafinate. Proiectantul interfetei cu utilizatorul este cel care rafineaza modelul operatorului, iar proiectantul softului functional - modelul functionalitatii sistemului. Aceste rafinari vor fi influentate de interactiunea cu beneficiarul si de tipurile uneltelor aflate la dispozitie. Într-un stadiu oarecare al procesului, proiectantul interfetei cu utilizatorul va exprima o interfata care sa reflecte notiunile curente referitoare la modelul operatorului si la modelul functionalitatii aplicatiei. Interfata cu utilizatorul poate fi exprimata printr-o varietate de modalitati, inclusiv un prototip, care apoi trebuie evaluat de catre operator.
si pe parcursul acestei faze, ca de altfel si în celelalte faze, se continua rafinarea.
Structura software necesara generarii unei interfete cu utilizatorul este mai bine înteleasa si mai usor de analizat decât comportamentul operatorului. Interfata cu utilizatorul prezinta o masina abstracta cu care interactioneaza operatorul. Aceasta masina abstracta este realizata prin interactiunea dintre software cu hardware-ul particular pe care se executa sistemul interactiv. Un mod de structurare a software-ului este ca o ierarhie de alte masini abstracte, fiecare oferind anumite servicii de la nivelele inferioare.
Aceste nivele sunt nivele de abstractizare si pot fi implementate într-o varietate de modalitati. Una dintre acestea este sa tratam nivelele abstracte ca nivele fizice si sa le implementam pe masura ce le descriem.
Divizarea software-ului în masini abstracte conduce la un mecanism de protejare a unui nivel la modificarile nivelelor inferioare lui. La baza notiunii de masina abstracta stau principiile fundamentale de modularizare si de ascundere a informatiei.
Vom distinge urmatoarele nivele:
Un driver de dispozitiv, care controleaza dispozitivul fizic, de exemplu trimite instructiuni la nivel de pixel pentru afisarea cursorului în pozitia dorita.
Un manager de resurse, care controleaza resursele actuale implicate în interactiuni. El gestioneaza atât resursele dispozitivului fizic, cât si ofera abstractizari utilizate în cadrul interactiunilor. În cazul cel mai des întâlnit, acesta este un sistem de ferestre.
Un obiect al interactiunii - este o entitate pe care operatorul o percepe si pe care o manipuleaza cu ajutorul dispozitivelor fizice cum ar fi mouse-ul sau tastatura. Un obiect de interactiune include atât o prezentare (output) cât si o interactiune (input). Un exemplu de asemenea obiect de interactiune este un meniu.
Controller-ul de dialog - este portiunea din software-ul interfetei utilizator care controleaza suportul si succesiunea interactiunilor utilizatorului. El determina logica interactiunilor, ca de exemplu când un obiect de interactiune sa fie accesibil user-ului. De asemenea, el controleaza stilul interactiunilor, de exemplu - daca se utilizeaza meniuri sau linii de comanda.
Suportul functional implementeaza cunostintele despre domeniu, cum ar fi caracteristicile unui avion într-un sistem de control al traficului aerian. Suportul functional, în principiu, nu cunoaste deloc modul în care structurile sale de date si functiunile sunt prezentate utilizatorului prin obiectele de interactiune. La fel, nu trebuie sa cunoasca suportul utilizat pentru intrari si iesiri si nici forma specifica în care este transmisa informatia. De exemplu, nu are nevoie sa cunoasca daca iesirea se face printr-un sistem de ferestre sau prin sinteza vorbirii, în ce limba este prezentat textul sau daca intrarea vine de la meniuri sau de la o linie de comanda. Pe de alta parte, suportul functional nu va ignora faptul ca el comunica cu un operator. Acest lucru este necesar, de exemplu, pentru detectarea erorilor si indicarea optiunilor posibile în cazul unor operatii particulare.
Fiecare nivel reprezinta o masina abstracta care ofera o serie de servicii. Cel care utilizeaza aceste servicii se numeste client. Nivelul care ofera serviciile se numeste server. Clientul, deci, poate fi orice nivel superior serverului. De exemplu, client al nivelului ferestrelor poate fi suportul functional, controlorul de dialog sau toolkit-ul.
Operatorul unui sistem interactiv comunica cu suportul functional prin intermediul nivelelor interfetei cu utilizatorul: driver-ul de dispozitiv, sistemul de ferestre, toolkit-ul si controller-ul de dialog. Nivelele controleaza concepte tot mai abstracte.
Fiecare dintre nivelele intermediare are doua functiuni: el trebuie sa controleze portiunea care îi revine din întreaga interfata cu utilizatorul, si trebuie sa ofere o corespondenta între nivelele superioare lui si cele inferioare. Ca urmare, interfetele dintre nivele sunt importante în orice implementare.
|