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ă. Î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 introductiveNotaț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 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: Elementele modelului grafic sunt: 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: 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: 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 : 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 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:
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 : 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.
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: 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: Interfața grafică utilizatorConceptele proiectării interfețelor utilizator 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 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 Modele ale tehnicilor de interacțiune - Interactori 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: 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 |