Programarea vizuală

Interfețe grafice utilizator, bazate pe agenți.

Mediile de dezvoltare din ziua de astăzi sunt din ce în ce mai complexe. O parte din utilizatori nu mai fac față complexității mediilor de dezvoltare, iar alții s-au săturat de bariera artificială creată între ei și aplicațiile software. Pentru înlăturarea acestor impedimente, trebuie introduse elemente din programarea vizuală, într-un context ușor de învățat și manipulat. Implementarea unor interfețe grafice utilizator, care să se bazeze pe agenți, este unul din răspunsurile la această problemă.
Având în vedere tendințele din dezvoltarea de produse software, se poate spune, fără a greși, indiferent de sistemul de operare ales sau de unelte software alese, că fereastra („window“) este elementul de bază în jurul căreia gravitează viață unui program software. Fereastra („window“) este suprafața de manipulare a informației - afișare, introducere date, afișare date. Pentru implementarea unei interfețe grafice utilizator ușor de manipulat, trebuie să se țină cont de următoarele concepte:
1. Modelarea aplicației ca un agent.
2. Folosirea agenților pentru menținerea consistenței vizuale GUI.
3. Modelarea paletelor cu unelte (tool box) ca un agent.
4. Modelarea zonei de lucru ca un agent.
5. Modelarea unui concept complex ca un agent.
6. Modelarea relației părinte-fiu ca un agent.
7. Modelarea abstracției printr-un agent.
8. Menținerea relației semantice dintre două entități prin intermediul unui agent.

În perspectiva apariției noilor tehnologii, crearea interfeței utilizator a unui sistem interactiv devine o sarcină din ce în ce mai complexă. Sistemele de operare care vor fi dezvoltate, trebuie să asigure un cadru de existență și suport pentru implementarea sistemelor multi-agent.

Noțiuni introductive

Notațiile vizuale au fost folosite, practic, de la inventarea programării, ele devenind tot mai complexe. Programatorii au realizat puterea pe care o pot oferi notațiile vizuale, în contextul unei tehnologii sofisticate.

Programarea vizuală este caracterizată prin două aspecte: entitățile descrise și modul de descriere a entităților amintite. Descrierea entităților se realizează, în general, prin sintaxa și semantica limbajului de programare. Când o parte a terminalelor gramaticii limbajului sunt elemente grafice, atunci se poate spune că limbajul are o sintaxă vizuală. Modul vizual de specificare a sintaxei poate include informații complexe, ca, de exemplu, informații referitoare la relațiile dintre entitățile din scena de obiecte a aplicației, poziția spațială a entităților, proprietăți sau atribute ale entității (culoare, denumire etc.). În ciuda etichetei de vizual, atribuite unui limbaj de programare, textul își poate găsi un loc în cadrul limbajului vizual. Exemple de folosire a textului într-un limbaj vizual sunt : comentarii, etichete text care denumesc entitățile folosite ș.a.m.d.

Programarea pur vizuală trebuie privită ca un mod de proiectare a unui program prin operare directă asupra unui set de elemente grafice (de aici vine denumirea de programare vizuală). Operarea directă se realizează prin intermediul unor tehnici de interacțiune. Programul se construiește fără a scrie textual instrucțiuni program. Dacă se notează cu PV mulțimea programelor posibile construite prin programare vizuală și cu SC mulțimea programelor (scenarii grafice) pe care ne propunem să le realizăm, între cele două mulțimi există relația : SC Ì PV.

Scenariile grafice reprezintă o formă de codificare a interfețelor utilizator grafice și cuprind definiri și operații grafice având ca suport modelul. Prin programare vizuala, utilizând diferite tehnici de interacțiune, se generează scenariul grafic și modelul grafic. Programul are două forme - forma internă din memoria operativă, care este o structura de date compusă din scenariul și modelul grafic și forma externă, text, care descrie scenariul și modelul grafic. Execuția scenariului grafic are ca rezultat următoarele:
• interogarea și modificarea modelului grafic,
• operarea cu entități program,
• interacțiunea cu utilizatorul,
• construirea prezentării grafice a scenei de obiecte.

Interogarea și modificarea modelului grafic cuprinde operații cu obiecte model, cu obiecte comportamente, cu acțiuni model. Sunt create, instanțiate și distruse entități model sau sunt modificate caracteristici ale lor, cum ar fi valori atribute, poziții, dimensiuni, parametri, evoluții, etc. Operarea cu entități program cuprinde crearea, modificarea, interogarea sau distrugerea unor instanțieri ale tipurilor abstracte de date, cum ar fi indicatori și variabile. Interacțiunea cu utilizatorul cuprinde schimbul de informații cu utilizatorul, prin intermediul tehnicilor de interacțiune. Sunt preluate, verificate și validate intrări utilizator, cum ar fi valori ale elementelor model (atribute grafice, atribute aplicație, parametri etc.), selecții ale elementelor prezentare (comenzi, obiecte, argumente, poziții etc.). Construirea prezentării grafice a scenei de obiecte este realizată de către prezentatori, apelați de către interpretorul scenariului grafic.

Programul, sub forma externă, conține o succesiune de definiri ale elementelor din program sau din modelul grafic și activități cu aceste elemente:

program_scenariu_grafic
 	  {
 	  definiri elemente model,
 	  . . .
 	  activități model;
 	  definiri elemente model;
 	  . . .
 	  activități model;
 	  }

Elementele program sunt instanțieri ale unor tipuri abstracte de date:
• indicatori interni sau grafici,
• variabile interne sau grafice.

Elementele modelului grafic sunt:
• obiecte simple sau complexe (agregate),
• comportamente ale obiectelor,
• acțiuni.

Activitățile cu aceste elemente sunt succesiuni de operații, organizate în procese și structurate cu ajutorul constructorilor program. Operațiile din cadrul scenariului grafic cuprind:
• operații identice cu operațiile care apar în definirea evoluției din cadrul comportamentului obiecte: operații grafice, crearea, instanțierea obiectelor, adăugarea obiectelor, distrugerea unor entități model, activarea obiectelor, etc.;
• operații cu datele program: indicatori și variabile.

Procesele sunt secvențe de operații indivizibile, numite activități. Constructorii program permit execuția condiționată a unor procese sau secvențe de activități.

Limbaje de programare vizuală

Termenul de „limbaj vizual“ are mai multe semnificații în literatura de specialitate. Uneori, se consideră că obiectele operate de limbaj sunt vizuale, alteori, că însuși limbajul este vizual. În primul caz, noțiunea de „limbaj vizual“ este asimilată cu un limbaj care prelucrează informații vizuale, iar în al doilea caz este asimilată cu un limbaj utilizat pentru programarea cu expresii vizuale sau „limbaj de programare vizuala“.

În cadrul limbajelor de prelucrare a informațiilor vizuale (VIPL - Visual Information Processing Language), obiectele operate au o reprezentare vizuală. Acestea sunt imagini care au asociată o interpretare logică. Limbajele se bazează, în general, pe o interpretare liniară clasică, iar obiectele sunt operate cu ajutorul unor rutine grupate în biblioteci sau pachete soft.

În cadrul limbajelor de programare vizuală (VPL - Visual Programming Language), obiectele nu au o reprezentare vizuală. Acestea includ tipuri tradiționale de date cum ar fi tablouri, stive, cozi, și tipuri de date orientate pe aplicație ca forme, documente, baze de date, etc. Pentru realizarea unei interfețe prietenoase om-mașină se utilizează, totuși, o reprezentare vizuală a obiectelor. Din aceleași motive, limbajele sunt prezentate vizual. De asemenea, construcțiile program și regulile de combinare a acestor construcții sunt prezentate vizual. Domeniul aplicațiilor limbajelor de programare vizuală include grafica pe calculator, proiectarea interfețelor utilizator, interfețe cu bazele de date, gestiunea formelor și proiectarea asistată de calculator.

Cele 5 criterii de evaluare a programării interfețelor utilizator și a performațelor limbajelor de programare vizuală sunt prezentate în caseta: criterii de evaluare.

Criterii de evaluare a programării și performanțelor:
1. posibilitatea specificării unor algoritmi generali (condiționări, iterații);
2. accesul la structurile de date (directoare de fișiere, reprezentarea structurală a obiectelor grafice), la operatori (selectori, operatori booleeni, operatori specifici aplicației);
3. ușurința programării (prin exemple, prin demonstrații, modularitate, transferul parametrilor) și editarea programelor;
4. apelarea și specificarea simplă a argumentelor (operare directă, tehnica bibliotecilor simple cu nume sugestive, execuție în context, vizualizarea rezultatelor);
5. nivel scăzut al riscului de eroare (programe fiabile, facilități de verificare a programelor, prin oprire și reluare a execuției, reluarea unor operații prin care să se permită corectarea erorilor de programare).

Sintaxa unui limbaj vizual poate include o serie de facilități întâlnite la limbajele de tip data-flow sau state transition. În literatura de specialitate, sub denumirea de limbaj de programare vizual, se înțelege un limbaj cu o sintaxă vizuală.

Modul în care un programator creează, modifică și examinează un program este strâns legat de mediul în care lucrează. Mediul de lucru este format dintr-un set de unelte de lucru și o interfață care permite accesul la aceste unelte. Sistemul are un mediu de lucru vizual, atunci când reprezentarea uneltelor de lucru este grafică și se folosesc tehnici grafice de manipulare a uneltelor și pentru afișarea structurii programului. Tehnicile folosite în construcția unui program se bazează pe următoarele tehnici :
• „point and click“ - pentru invocarea unei acțiuni sau selecție;
• „wiring“ - reprezentarea relațiilor dintre entități sau transmiterea unui mesaj.

Pentru a se afișa structura unui program într-un mediu vizual, se folosesc următoarele tehnici : diagrame dataflow, graf de dependență sau diagrame de tranziție.

Cele două forme de programare vizuală, limbajele de programare vizuală și mediile de dezvoltare vizuale au ca scop îmbunătățirea modului în care programatorii reprezintă informația, modul de procesare a ei, astfel încât să permită o înțelegere mai ușoară a programului și o modificare ușoară a conexiunilor logice și rezultatelor.

În acest domeniu, cercetătorii caută noi metode de reprezentare vizuală, și anume, soluții pentru explicitarea diagramelor de interdependență dintre entități, pentru găsirea unui limbaj care să permită utilizatorilor neprofesioniști utilizarea programării vizuale, pentru găsirea unui limbaj în care utilizatorul introduce exemple sau exemple de execuție, pentru a îmbunătății cunoștințele unui program.
În ceea ce privește mediile de cercetare, atenția specialiștilor se îndreaptă spre schimbul de informație și prezentare, unelte, integrarea uneltelor, interacțiunea cu utilizatorul și modul în care aceste idei pot fi integrate consistent în limbajele de programare.

În practică (vezi toate produsele comerciale prezente pe piață), toate limbajele de programare vizuale sunt strâns integrate în mediile vizuale sub care lucrează. Din această cauză, limbajele de programare vizuale sunt caracterizate de atribute specifice atât sintaxei proprii, cât și mediului (ex. feed-back-ul vizual asigurat : în momentul editării unui subansamblu, mediul răspunde prin reîmprospătarea și afișarea informațiilor ce se află într-o anumită relație cu subansamblul modificat ).

Concretețea este unul din atributele limbajelor și mediilor vizuale. Acest lucru este motivat prin faptul că suntem concreți în momentul specificării unei valori. Atributul „concretețe“ are două valențe în programarea vizuală : asigură un feed-back sau este folosită la specificarea unei părți de program sau a întregului program (se folosesc tehnici de point & click, specificare valori step-by-step).

Conceptul comun al acestor limbaje este operarea cu prezentări diferite ale simbolurilor generalizate numite icon-uri. Simbolurile grafice generalizate constau din icon-uri obiect și icon-uri proces. Un icon obiect este o reprezentare duală a unui obiect - notație (Xm, Xi), cu o parte logică, Xm (semnificație), și o parte fizică, Xi (imaginea). În limbajele de programare vizuală, se lucrează cu (Xm, e) - obiecte cu semnificație logică, dar fără o imagine vizuală. Simbolul 'e' reprezintă obiectul nul. Dacă se impune reprezentarea vizuală, trebuie să se facă transformarea (Xm ,e) în (Xm , X'i), pentru a putea realiza vizualizarea. În limbajele de prelucrare a informațiilor vizuale, se lucrează cu (e, Xi), deci cu obiecte cu imagine vizuală, dar cărora trebuie sa li se dea o semnificație logică. Prin urmare, trebuie să se facă transformarea (e, Xi) în (X'm, Xi). Obiectele operate prin limbajele vizuale pot fi vizuale sau nevizuale, dar cu reprezentare vizuală.

Obiectele operate de către limbajele vizuale pot fi deci icon-uri obiect sau icon, cu o parte logica și o parte fizică reprezentând un obiect. În mod asemănător constructorii program din limbajele vizuale pot fi considerați icon proces sau icon cu o parte logică și o parte fizică, reprezentând un proces de calcul (computațional). Deosebirea între un icon obiect și un icon proces depinde atât de context, cât și de interpretare. Conceptul de simbol sau icon generalizat cuprinde atât icon obiect, cât și icon proces (sau icon acțiune).

Conceptul de icon generalizat ca icon obiect și icon proces conduce la metoda generală de proiectare a limbajelor vizuale. Apar astfel câteva întrebări:
• cum se poate reprezenta logic un obiect vizual și cum se poate reprezenta vizual un obiect logic, întrebări care conduc la conceptul de icon obiect;
• cum se pot reprezenta vizual constructorii program și cum se pot specifica algoritmii în limbajul vizual, întrebări care conduc la conceptul de icon proces (sau icon acțiune).

Medii de programare vizuală.

Mediile de programare vizuală (VPE - Visual Programming Environment) sunt medii de dezvoltare rapidă a aplicațiilor (RAD - Rapid Application Development) proiectate pentru a accelera dezvoltarea și distribuția aplicațiilor cu un grad ridicat de elemente grafice.

Limbajele vizuale sunt unelte puse în scopul utilizatorului / programatorului, pentru a rezolva problemele ridicate de programare. Limbajele vizuale reușesc să realizeze acest lucru, deoarece au abilitatea de a reprezenta modelul mental al programatorului, model care este mai ușor de înțeles, modificat sau de restructurat. Modelul vizual permite utilizatorului să implementeze rapid modelul soluțiilor. Procesul de programare este ușurat, iar timpul necesar pentru implementarea completă sau parțială a programului este redus semnificativ.

Direcțiile de dezvoltare ale mediilor de programare vizuală sunt :
• unelte de dezvoltare / programare vizuală;
• programare bazată pe regulă intuitivă, bazată pe evenimente;
• generator de aplicații DBMS vizuale;
• suport pentru dezvoltare concurentă;
• curbă de învățare minimă;
• independență hardware și database;
• suport pentru aplicații vechi;
• utilizarea sistemelor multi-agent;
• suport calitativ, ș.a.m.d.

Proprietățile limbajelor de programare vizuală.

Caracteristica de bază a unui limbaj de programare vizual este imaginea sub diferitele forme de existență. Majoritatea limbajelor vizuale au ca element important diagramele. Diagramele sunt formate din elemente grafice însoțite de adnotări (text). Elementele grafice care se disting sunt : elementele „icon“, linii, săgeți, umbre. Unul din criteriile după care se clasifică limbajele vizuale este poziționarea bidimensională a elementelor grafice, aceasta fiind elementul care asigură denumirea de „vizual“ a limbajului de programare. Poziționarea elementelor grafice se realizează absolut sau relativ. În opoziție, sunt adiacența, conectivitatea sau includerea, care nu sunt elemente întâlnite la toate limbajele vizuale studiate.

Paradigmele programării vizuale.

Programarea vizuală folosește, în mod special, tehnologia vizuală, în detrimentul tehnologiei bazate pe text. Dezvoltarea limbajelor de programare vizuale este un pas înainte în cadrul evoluției spre un mediu de dezvoltare vizual integrat.

Limbajele de programare vizuale pot fi împărțite în două categorii generale.
• limbaje de programare transformate vizual - implementează anumite tehnici de reprezentare vizuală a informației;
• limbaje de programare vizuale propriu zise - limbaje caracterizate de o serie de paradigme a căror expresie naturală nu are ca echivalent textul ;

Paradigma: Dataflow. Limbajele de programare care au la bază paradigma „dataflow“ pot fi considerate limbaje de programare transformate vizual. Paradigma „dataflow“ conduce la ideea că programele care au la bază diagrame dataflow sunt formate din module funcționale, în care există un mecanism de conectare a ieșirilor cu intrările altor module. În limbajele de programare textuală ce se bazează pe această paradigmă, diagramele dataflow sunt consecință logică a procesului de proiectare software care, în final, sunt traduse / translatate într-o sintaxă text. Limbajele vizuale care se bazează pe aceeași paradigmă omit să realizeze această transformare.

Paradigme bazate pe constrângeri. Multe din limbajele de programare care au la bază programarea prin constrângeri se potrivesc unei reprezentări vizuale. Avantajul reprezentării vizuale a acestei paradigme este dat de natura complexă a unei constrângeri. Constrângerea poate afecta multe variabile, care, la rândul lor, pot influența alte entități. O relație de interdependență atât de complexă poate fi mai ușor modelată folosind o reprezentare vizuală (diagrame, etc.), decât o reprezentare textuală.

Paradigma : Programare prin exemple. Programarea prin exemple este un proces natural vizual, care nu are un echivalent textual. Programarea este realizată prin manipularea directă a reprezentării grafice a datelor pe ecran (suprafața de lucru), demonstrând calculatorului / programului ce trebuie să realizeze. Avantajul acestei metode este evident, deoarece programatorului îi este mult mai ușor să descrie vizual o anumită problemă, decât să realizeze același lucru printr-o specificare textuală.

Spre deosebire de programarea convențională, considerată unidimensională, programarea vizuală este bidimensională (sau multidimensională). Limbajele textuale cunoscute sunt compilate sau interpretate, prin prelucrarea lor pe o singură dimensiune, și anume de-a lungul frazelor text. Programarea vizuală este o programare grafică în care se analizează o sintaxă și o semantică spațială, descrisă, eventual de o gramatică multidimensională. De exemplu, limbajele de programare convențională cum ar fi: Sketchpad, conceput de Sutherland, în 1963, CORE, PHIGS, Postscript, al firmei Adobe, Macintosh Toolbox de la Apple sau X-11 Window Manager Toolkit nu sunt considerate limbaje de programare vizuală, ci, mai degrabă, limbaje de prelucrare a informațiilor vizuale.

Interfețele demonstraționale sunt sisteme cu programare bazată pe exemple. Programarea bazată pe exemple definește programarea vizuală în care programatorul utilizează exemple de intrări și ieșiri de date în timpul procesului de programare. Există două tipuri de programare bazată pe exemple : programarea prin exemple și programarea cu exemple.

În programarea prin exemple sistemul încearcă să deducă programul din exemplele de intrări și ieșiri sau din exemplele de trasări ale execuției. Programarea prin exemple face parte din domeniul programării automate și al cercetării din domeniul Inteligenței Artificiale.

Programarea cu exemple definește programarea în care programatorul specifică toate informațiile despre program, nu există inferența, iar programatorul realizează programul pentru un domeniu de cazuri specifice. Sistemul execută comenzile programatorului și le memorează pentru o utilizare ulterioară.

Utilizarea graficii în programarea vizuală.

Programarea vizuală utilizează grafică și operarea directă, pentru a construi și opera asupra obiectelor, operatorilor, structurilor de date sau constructorilor program, fapt care duce la următoarele avantaje:
• programarea convențională construiește formele sintactice pe o singură dimensiune și nu utilizează întreaga putere de analiză, imaginație și creativitate a omului. Un exemplu în acest sens sunt avantajele obținute prin utilizarea diagramelor de stare sau programarea structurată pe blocuri;
• programarea grafică folosește informații în format mult mai apropiat de reprezentarea mentală a utilizatorului și permite operarea obiectelor într-o manieră apropiată celei reale;
• programarea grafică este o descriere de nivel înalt a acțiunilor, elimină dificultățile impuse de sintaxă și permite un nivel mai înalt de abstractizare;
• vizualizarea informațiilor referitoare la starea program (variabile curente și structuri de date) este mult mai bogată decât afișarea textuală;
• specificările grafice descriu mai simplu programe complexe, cum ar fi procesele concurente sau sistemele în timp real.

Există, de asemenea, unele dificultăți, legate de utilizarea graficii în programarea vizuală. Pentru a obține tehnici de programare grafică și o metodologie consecventă de elaborare a programelor prin programare vizuală, următoarele inconveniente vor trebui rezolvate în viitor:
• dificultatea reprezentării programelor sau datelor de dimensiuni mari. Majoritatea reprezentărilor vizuale ocupă pe suprafața de afișat mult mai mult loc decât textul înlocuit;
• lipsa unor tehnici de specificare formală. Încă nu există o posibilitate de descriere formală riguroasă a Limbajului de Programare Vizuală. Este necesar ceva echivalent formalismului BNF, utilizat pentru limbajele textuale. Gramaticile multidimensionale nu sunt încă tehnici destul de bine fundamentate în practica proiectării;
• metrica utilizată pentru evaluarea programării vizuale. Este necesară o metrică, o metodologie de evaluare a rezultatelor experimentale, care să demonstreze avantajele utilizării tehnicilor de programare vizuală sau a limbajelor iconice față de utilizarea metodelor textuale, pentru realizarea aceluiași task. Metrica trebuie să se refere la timpul de învățare, viteza de execuție, domeniul aplicațiilor, fiabilitatea programelor, timpul de elaborare, editare și punere la punct a programelor etc.;
• insuficiența reprezentărilor. Multe reprezentări vizuale sunt insuficiente. Programele deja create sunt dificil de înțeles, depanat sau modificat. Aceste dificultăți sunt cu atât mai evidente la programe sau structuri de date de dimensiuni mari.

Interfața grafică utilizator

Conceptele proiectării interfețelor utilizator
Una dintre cele mai importante componente din sistemele software interactive este interfața cu utilizatorul în general și interfața utilizator grafică, ca cea mai avansata soluție. De obicei, interfața cu utilizatorul este ultima parte proiectată în cadrul unei aplicații. Interfețele grafice erau realizate prin metode intuitive și tehnici simpliste, stare de fapt care a dus la metode de proiectare inconsistente, cu efecte negative asupra structurării întregului program. Se consideră că timpul utilizat pentru proiectarea interfeței grafice interactive este 50% din timpul necesar dezvoltării întregului sistem și 60% din timpul total de întreținere și modificare ulterioară. În prezent este acceptată ideea că interfața cu utilizatorul este mult mai importantă decât o componentă auxiliară, ea fiind o parte integrantă din sistem.

Cercetările făcute în sensul dezvoltării interfețelor grafice interactive au condus la realizarea unor metode sistematice și unitare. S-au creat unelte pentru dezvoltarea și execuția interfețelor grafice interactive, reunite sub denumirea de Sisteme de Gestiune a Interfețelor Utilizator (UIMS - User Interface Management System). Tendința este ca, utilizând tehnicile de proiectare structurata, orientate obiectual, sa se construiască interfețe grafice în jurul unor aplicații, interfețe separabile de aplicație și ușor reconfigurabile. Pornind de la realizări semnificative în domeniul proiectării interfețelor utilizator, se disting câteva concepte:

Independența dialogului. Caracteristica unui sistem software interactiv care separă proiectarea dialogului de proiectarea componentei aplicație, astfel încât orice modificare în oricare componentă să nu determine schimbări în cealaltă componentă.

Modelarea structurală a interfeței utilizator. Descrierea procesului general de interacțiune om-calculator, care poate fi utilizat în procesul de proiectare a dialogului și uneltelor de dezvoltare a dialogului.

Reprezentarea interfeței utilizator. Tehnicile utilizate pentru reprezentarea definirii diferitelor instanțieri ale interacțiunii.

Uneltele interactive pentru dezvoltarea interfeței utilizator. Uneltele software și hardware necesare pentru dezvoltarea sistemelor și în special a interfețelor utilizator.

Prototipizarea rapidă. Posibilitatea de prezentare a unei versiuni executabile a sistemului parțial construit, care să permită observarea ușoară a comportării sistemului, în special a interfeței sale.

Metodologii pentru dezvoltarea sistemelor interactive. Procesul de dezvoltare și ciclul de viață al sistemului care consideră dezvoltarea interfeței ca o parte integrată în procesul de dezvoltare software generală.

Structuri de control. Organizarea componentelor dialog și aplicație și mecanismele care generează secvențierea logică și comunicarea internă a evenimentelor din părțile dialog și aplicație.

Modelarea interfeței utilizator
Principalele tehnici de modelarea a interfeței utilizator sunt : analiza taskurilor, descrierea structurală și reprezentarea interfeței.

Modelele orientate pe taskuri sunt folosite, în general, pentru proiectarea interfețelor specifice și constau în descrierea informațiilor despre task și execuția sa, folosindu-se la analiza și descrierea detaliată a unui task, prin descompunerea ierarhică în subtaskuri. La nivele de detaliu, descrierea taskului depinde foarte mult de dialog și dispozitivele utilizate, fiind specifică acțiunilor utilizatorului, prin dispozitivele de intrare. Aceste modele de detaliu nu sunt modele structurale ale interacțiunii utilizator-calculator, având importanță doar în cazuri particulare.

Modelele structurale sunt descrieri ale procesului general de comunicare om-calculator, deci descriu teoretic și generic structura comunicației utilizatorului cu calculatorul. De exemplu, unele modele lucrează cu obiectele dialogului, cum ar fi promptere, intrări, validări, ecouri, mesaje și relațiile dintre acestea.

Modelul structural are o importanță deosebită pentru dezvoltatorul dialogului și cititorul documentației. Modelarea structurală, descriptivă a interfeței utilizator este un concept fundamental al gestiunii interfeței, necesar înțelegerii naturii și interacțiunii cu calculatorul și foarte util în procesul de dezvoltare a interfeței.

Reprezentările interfeței (specificațiile), spre deosebire de modelele structurale, sunt scheme pentru reprezentarea instanțierilor interacțiunii. Se folosesc la descrierea detaliilor formei, conținutului și secvențierii părților unei interfețe specifice. Metodele de reprezentare se bazează pe un model descriptiv, structural.

Modelele analizate în continuare sunt pentru dialogul secvențial. Aceste modele pot fi utilizate la descrierea în particular a fiecărui task dintr-un dialog multi-task, cu treceri între taskuri conduse de un controler de pe un nivel superior. Modelarea structurală a dialogului asincron este dificilă. Dificultatea este determinată de faptul că dialogul asincron este mai puțin structurat decât dialogul secvențial.

Tehnici de interacțiune
Tehnicile simple de interacțiune sunt utilizate pentru specificarea valorii unei singure variabile de intrare. Tehnicile complexe de interacțiune reunesc mai multe tehnici elementare, care permit introducerea unor informații mult mai cuprinzătoare, având o orientare spre domeniu. O tehnică de interacțiune include intrarea utilizator și ieșirea program. Intrarea utilizator se executa prin acțiuni la dispozitivele de intrare text sau grafică. Acțiunile realizate la dispozitivele de intrare grafică, cum ar fi mouse sau tastatura, se numesc evenimente sau evenimente intrare. Evenimentele intrare sunt, de exemplu, apăsarea unui buton mouse, deplasarea cursorului mouse, eliberarea butonului, apăsarea unei taste etc. Tehnicile de interacțiune cuprind:
• gesturi - o secvență de evenimente având o anumită semnificație : tehnica de interacțiune care specifică legătura dintre evenimentele de intrare și conceptele comunicație. Evenimentele de intrare, în general, nu sunt interpretate izolat, ci în secvențe numite gesturi. Cele mai utilizate gesturi din interfețele utilizator grafice sunt: acționare (click), apăsare (press-down), eliberare (release), timp (press-timer), domeniu (range) și gestul deplasare (drag)
• tehnici elementare de interacțiune - unelte simple, prin care se precizează valoarea de intrare a unei singure variabile : tehnicile elementare de interacțiune reunesc mai multe gesturi și sunt utilizate pentru specificarea unei singure variabile aplicație sau interfață. Tehnicile elementare de interacțiune sunt prezente în majoritatea interfețelor utilizator grafice: butoane opțiune (radio buttons), casete opțiune (check boxes), buton comandă (command button), buton apăsare (push button) și bara de defilare (scroll bars sau slider). În MS-Windows, tehnicile elementare de interacțiune se numesc controale. Sunt clase predefinite care sunt instanțiate în programele de aplicație;
• tehnici complexe de interacțiune - unelte care permit definirea și operarea unor informații complexe, prin combinarea mai multor tehnici de interacțiune elementară (casete dialog - dialogue boxes, meniuri - sub toate formele de existență : meniu bară, pull-down sau pop-up, fix sau flotant, text sau grafic, zone de lucru, deplasări prin tragere).

Modele ale tehnicilor de interacțiune - Interactori
Unul dintre cele mai dificile taskuri la realizarea sistemelor interactive este controlul dispozitivelor de intrare, cum ar fi mouse sau tastatura.

S-a ajuns la concluzia că tehnicile de interacțiune din majoritatea interfețelor utilizator grafice sunt aproximativ aceleași. Standardele grafice GKS, CORE, PHIGS conțin conceptul de separare dintre dispozitivele de intrare și programele de aplicație. Pornind de la modelul definit de J. Foley și Wallace, s-au identificat șase tipuri de dispozitive logice de intrare: locator, stroke, valoare, alegere, culegere și text (PHIGS). Aceste abstracțiuni au câteva dezavantaje în cazul interfețelor utilizator moderne:
• nu permit dialogul asincron, ci numai dialogul secvențial;
• introduc prea multe restricții;
• există un control slab asupra stilului meniurilor, selecției obiectelor grafice sau a ecoului pe parcursul operării.

Modelul interfeței cuprinde informații referitoare la:

Semantica aplicației reprezintă operațiile și obiectele existente în programul de aplicație.

Prezentarea definește aspectul vizual al interfeței: părțile principale ale afișării, datele afișate în fiecare parte, metodele de prezentare a fiecărei părți (recursiv), poziționarea părților și condițiile de includere a părților în imagine.

Comportarea definește gesturile care se pot aplica obiectelor prezentate și efectele acestor gesturi asupra stării aplicației și interfeței. Modelarea comportării se bazează pe modelele de interactori definiți de către Brad Myers.

Secvențierea definește ordinea în care sunt permise operările sau setul de operări permise la un moment dat. Majoritatea constrângerilor referitoare la secvențiere derivă din constrângerile fluxului de date, specificate în descrierea aplicației (de ex., o comanda nu poate fi apelată dacă nu sunt corecte toate intrările). Pe parcursul proiectării dialogului, pot fi impuse constrângeri suplimentare.

Efectele laterale ale acțiunilor se refera la acțiunile realizate automat ca efect lateral al acțiunii de operare. De exemplu, un obiect nou creat poate fi în continuare automat selectat sau închiderea unei casete dialog poate inițializa toate opțiunile sale la valorile implicite.

Sistemul executiv este o componenta a oricărui program de aplicație care utilizează modelul interfeței descris înainte. Dezvoltatorii aplicației nu trebuie sa scrie cod pentru a executa modelele interfața, trebuie doar să modeleze comportarea dorita. Pentru interpretarea intrărilor, sistemul executiv folosește modelul prezentare, pentru a face corespondenta dintre evenimentele intrare și referințele la datele aplicație și lansarea comenzilor potrivite comportării aplicației și modelului de secvențiere. Pentru producerea sau actualizarea afișării structurii de date a aplicației, sistemul executiv caută în model o componentă prezentare care să poată afișa structura de date. Modelul returnează prezentarea cea mai potrivită pentru afișarea structurii de date în contextul dat (de exemplu, luând în considerare congruența tipurilor de date și restricțiile de dimensiune), iar sistemul executiv folosește prezentarea pentru a produce sau actualiza afișarea. Componenta prezentare obținută din model trebuie sa fie implicit moștenită din partea generică a modelului sau să fie o componentă prezentare specificată de către proiectantul interfeței.


BYTE România - august 1997


(C) Copyright Computer Press Agora