Programare Vizual i Modelare Curs pentru master S i s t e m e I n f o r m a t i c e A p l i c a t e n P r o -d u c i e i S e r v i c i i Dr.ing. Loredana STANCIU, PhD
Programare Vizual i Modelare
Pagina 2
Cuprins
1 PROGRAMAREA VIZUAL .............................................................................................................................. 4
1.1 INTRODUCERE ......................................................................................................................................................... 4
1.2 ISTORIC .................................................................................................................................................................. 6
1.3 STRATEGII N PROGRAMAREA VIZUAL ....................................................................................................................... 8
1.4 CLASICAREA LIMBAJELOR DE PROGRAMARE VIZUAL .................................................................................................. 9
1.5 TEORIA LIMBAJELOR DE PROGRAMARE VIZUAL ........................................................................................................ 11
1.5.1 Specificarea formal a Limbajelor de Programare Vizual....................................................................... 11
1.5.2 Analiza Limbajelor de Programare Vizual ................................................................................................ 12
1.6 PROBLEMELE LIMBAJELOR VIZUALE ........................................................................................................................... 13
1.6.1 Controlul fluxului .......................................................................................................................................... 13
1.6.2 Abstractizarea procedural ......................................................................................................................... 14
1.6.3 Abstractizarea datelor ................................................................................................................................. 14
1.7 EXEMPLE DE LIMBAJE DE PROGRAMARE VIZUAL ........................................................................................................ 14
1.7.1 Chimera. Programarea vizual imperativ prin demonstraie ................................................................. 14
1.7.2 Forms/3. Programarea vizual bazat pe foi de calcul tabelar ................................................................ 17
1.7.3 Prograph. Programarea vizual cu fluxuri de date.................................................................................... 20
1.7.4 KidSim/Cocoa. Programarea vizual bazat pe reguli .............................................................................. 21
1.7.5 Cube. Limbaje de programare vizual 3D .................................................................................................. 24
1.8 PROGRAMAREA VIZUAL I ABSTRACTIZAREA ............................................................................................................. 26
1.9 CONCLUZII PRIVIND PROGRAMAREA VIZUAL ............................................................................................................. 27
2 MODELARE CU REELE PETRI (19) ................................................................................................................ 28
2.1 INTRODUCERE ....................................................................................................................................................... 28
2.2 DESCRIEREA REELELOR PETRI ................................................................................................................................. 30
2.3 PROPRIETI ALE REELELOR PETRI .......................................................................................................................... 34
2.3.1 Accesibilitate ................................................................................................................................................ 34
2.3.2 Limitabilitate i siguran ............................................................................................................................ 35
2.3.3 Conservativitate ........................................................................................................................................... 35
2.3.4 Nivelul de activare ....................................................................................................................................... 36
2.3.5 Reversibilitate i starea de pornire ............................................................................................................. 38
2.4 METODE DE ANALIZ .............................................................................................................................................. 38
2.4.1 Arborele de acoperire .................................................................................................................................. 39
2.4.2 Matricea de inciden i ecuaia de stare .................................................................................................. 41
2.4.3 Un exemplu................................................................................................................................................... 42
2.5 REELE PETRI: CONCLUZII ........................................................................................................................................ 44
3 MODELARE CU APP INVETOR ...................................................................................................................... 47
3.1 SISTEMUL DE OPERARE ANDROID ............................................................................................................................. 47
3.1.1 Scurt istoric ................................................................................................................................................... 47
3.1.2 Caracteristici................................................................................................................................................. 48
3.1.3 Evoluia sistemului Android i impactul su pe pia ................................................................................ 49
Programare Vizual i Modelare
Pagina 3
3.1.4 Arhitectura Android ..................................................................................................................................... 50
3.1.5 SDK-ul Android ............................................................................................................................................. 51
3.2 MIT (GOOGLE) APP INVENTOR ............................................................................................................................... 52
3.2.1 Ce se poate face cu App Inventor? .............................................................................................................. 53
3.2.2 Capaciti i limitri ..................................................................................................................................... 54
3.2.3 Modul de lucru ............................................................................................................................................. 55
3.2.4 Selectarea componentelor pentru crearea de aplicaii ............................................................................. 56
3.2.5 Deschiderea editorului de blocuri i pornirea emulatorului ...................................................................... 57
3.2.6 Componente App Inventor .......................................................................................................................... 58
3.2.7 Blocuri din App Inventor .............................................................................................................................. 65
3.2.8 Exemplu de realizare a unei aplicaii cu App Inventor. ............................................................................. 69
4 MODELARE CU SIMULINK ............................................................................................................................ 74
4.1 CREAREA I REALIZAREA MODELELOR ........................................................................................................................ 75
4.2 SIMULAREA UNUI MODEL ........................................................................................................................................ 76
4.3 ANALIZA REZULTATELOR.......................................................................................................................................... 78
4.4 MODELARE N SIMMECHANICS ................................................................................................................................ 79
4.4.1 Studiul minii umane ................................................................................................................................... 79
4.4.2 Constrngeri ale minii umane ................................................................................................................... 84
4.4.3 Modelul cinematic i modelul SimMechanics ............................................................................................ 88
4.4.4 Conectarea la o lume virtual ..................................................................................................................... 96
5 BIBLIOGRAFIE ............................................................................................................................................ 100
Programare Vizual i Modelare
Pagina 4
1 Programarea Vizual
1.1 Introducere
Limbajele de programare convenionale sunt dificil de nvat i folosit, necesitnd abiliti pe care foar-
te muli oameni nu le au. Din acest motiv, interfeele cu utilizatorul de la o gam larg de programe au
nceput s vin cu faciliti care s suplineasc i s uureze capabilitile de programare. Spre exemplu,
succesul foilor de calcul poate fi parial atribuit abilitii utilizatorilor de a scrie programe (sub form de
colecii de formule).
Pe msur ce distribuia de calculatoare personale a crescut, foarte muli utilizatori au ajuns s dein
unul, fr ca marea majoritate s aib cunotine n a scrie programe. Ei cumpr calculatoarele i pa-
chetele software fr s fie capabili s aduc o modificare ct de mic software-ului. Pentru a permite
utilizatorului final s reconfigureze i s modifice sistemul, pachetele software ar trebui s ofere aceste
opiuni, fapt care ar putea induce transformarea sistemului ntr-unul i mai complex fr s rezolve pro-
blemele utilizatorului. Sisteme software uor de utilizat, precum sistemele de manipulare direct (Direct
Manipulation) nu fac dect s mreasc distana dintre utilizator i programator n condiiile n care
codul este mult mai complicat (din cauza suplimentului necesar manipulrii interfeelor pentru utiliza-
tor), chiar dac mai muli utilizatori vor putea folosi software-ul (fiind uor de utilizat). (1) Cel mai bun
exemplu de sistem cu manipulare direct este sistemul de operare cu pictograma Recycle Bin. Pentru a
terge ceva, utilizatorul selecteaz i duce efectiv cu mausul (prin tehnica drag and drop) elementele n
co.
Pe de alt parte, oamenii au comunicat mult vreme folosind imagini, ca urmare, pe parcursul anilor 80
i 90 s-au fcut numeroase eforturi pentru a pune n valoare abilitatea uman de a procesa informaii
vizuale. Spre exemplificare, se poate considera urmtoarea situaie: un om poate urmri pe ecranul
televizorului o imagine i s discearn un ablon constnd n milioane de pixeli pe secund, care se mo-
dific n timp i spaiu. Dac, ns, privete imaginea din Fig. 1.1 (2), probabilitatea este aproape nul ca
cineva s deslueasc ablonul reprezentat de urmtorul set de numere: un set de perechi X, Y, unde
prima linie reprezint valorile lui X, iar a doua linie valorile lui Y. Chiar i tiind c sunt perechi de coor-
donate n plan, majoritatea oamenilor tot ar avea probleme n a discerne un ablon din acest exemplu
numeric. Dac, ns, aceste puncte sunt desenate, ablonul reiese rapid, aa cum se poate observa n Fig.
1.2 (2).
47 42 93 122 68 85 105 133 137 58 100 95 46 126 133 181 108 68
Fig. 1.1 Perechi de coordonate X,Y
Din aceste considerente limbajele de programare vizual ntreab: de ce, atunci, s persistm n ncerca-
rea de a comunica cu calculatoarele noastre folosind limbaje de programare textuale? N-am fi mai pro-
ductivi i puterea de calcul a calculatoare moderne n-ar fi mai accesibil la o gam mai larg de oameni,
dac am fi capabili de a instrui un computer prin simpla desenare a imaginilor pe care le vedem cu ochii
Programare Vizual i Modelare
Pagina 5
minii noastre atunci cnd ne gndim la soluiile unor probleme speciale? Evident, susintorii limbajelor
de programare vizual susin c rspunsul la ambele ntrebri este afirmativ.
Fig. 1.2 Puncte
ntrebrile de mai sus subliniaz motivarea principal a cercetrii n limbajele de programare vizual. n
primul rnd, majoritatea oamenilor gndesc i i amintesc lucrurile n imagini. Ei se refer la lumea n-
conjurtoare ntr-un mod grafic i folosesc imaginile drept componente principale n gndirea creatoare.
Reducnd sau nlocuind n totalitate necesitatea traducerii ideilor vizuale n reprezentri textuale artifi-
ciale poate ajuta la diminuarea problemelor de nvare. Mai mult, numeroase aplicaii se mpac foarte
bine cu metodele de dezvoltare vizual. (3)
Programarea vizual este programarea n care mai mult de o dimensiune este folosit pentru a transmi-
te informaie. Exemple de astfel de dimensiuni adiionale sunt: folosirea obiectelor multi-dimensionale,
folosirea relaionrilor spaiale, sau folosirea dimensiunii timp pentru specificarea relaiilor semantice de
tip naintedup. Fiecare multi-dimensional sau relaie este un jeton (token), aa cum n limbajele de
programare textual tradiionale fiecare cuvnt este un jeton. O colecie de unul sau mai multe astfel de
jetoane este o expresie vizual. Exemple de expresii vizuale folosite n programarea vizual includ dia-
grame, schie, icoane sau demonstraii de aciuni realizate cu obiecte grafice. Atunci cnd sintaxa unui
limbaj de programare (semnificativ din punct de vedere semantic) include expresii vizuale, limbajul de
programare este un limbaj de programare vizual (LPV).
Dei limbajele de programare textual tradiionale adeseori ncorporeaz sintax bidimensional ntr-un
sens foarte limitat o dimensiune x pentru a transmite ir de caractere liniar legal n limbaj i o dimen-
siune y care permite spaierea opional a liniilor n document doar una dintre aceste dimensiuni
transmite semantic, pe cnd cea de-a doua dimensiune a fost limitat la o informaie legat de tastarea
relaiilor spaiale astfel nct s poat fi exprimate ntr-o gramatic unidimensional. Astfel, multidimen-
sionalitatea este principal diferen dintre LPV-uri i limbajele strict textuale.
Cnd expresiile vizuale sunt folosite ntr-un mediu de programare drept o facilitate de editare rapid
pentru generarea de cod, acesta este denumit mediu de programare vizual (MPV). Aceste medii de
programare vizual pentru limbajele de programare textual tradiionale reprezint o trecere ntre
LPV-uri i cunoscutele limbaje textuale. Spre deosebire de acum civa ani, cnd mediile de programare
strict textuale i n linie de comand reprezentau normalul, astzi MPV-urile pentru limbajele textuale
tradiionale au preluat controlul n lumea programatorilor. MPV-urile comerciale pentru limbajele tradi-
ionale sunt gndite pentru programatorii de profesie. Aceti programatori folosesc limbajele textuale
pe care le cunosc deja i sunt ajutai de tehnici de interfaare grafic cu utilizatorul i de nivelul de acce-
sibilitate al informaiei pe care metodele vizuale l pot aduce. MPV-urile pentru limbajele tradiionale
Programare Vizual i Modelare
Pagina 6
reprezint o modalitate de a transfera avansurile datorate cercetrii din LPV-uri n practic prin aplicarea
acestor noi idei limbajelor tradiionale deja familiare programatorilor. n acest fel se permite migrarea
gradual de la tehnicile de programare textuale ctre cele vizuale. (4)
1.2 Istoric
Programarea vizual a aprut din combinarea graficii pe calculator, a limbajelor de programare i a inte-
raciunii om-calculator. Nu este o surpriz, deci, faptul c dezvoltrile din programarea vizual au repre-
zentat avansuri n unul dintre aceste domenii. Sistemul revoluionar Sketchpad, dezvoltat de Ivan SUT-
HERLAND, este cel mai bun exemplu n acest sens. Sketchpad, realizat n 1963 pe calculatorul TX-2 la
MIT, a fost considerat prima aplicaie de grafic pe calculator. Sistemul permitea utilizatorilor s lucreze
cu un creion cu lumin pentru a crea grafice 2D prin combinarea unor primitive simple, precum linii i
cercuri, i aplicarea unor operaii (precum copierea) i a unor constrngeri asupra geometriei formelor.
Interfaa sa grafic i suportul pentru specificarea constrngerilor de ctre utilizator reprezint contribu-
iile cele mai importante ale lui Sketchpad la dezvoltarea LPV-urilor. Prin definirea constrngerilor potri-
vite, utilizatorii puteau realiza structuri complexe precum legturi mecanice complicate i s le mite n
timp real. Fratele lui Ivan SUTHERLAND, William, a adus, de asemenea, o contribuie important la dez-
voltarea programrii vizuale n 1965, cnd a folosit TX-2 pentru a implementa un limbaj vizual simplu de
fluxuri de date. Sistemul permitea utilizatorilor s creeze, s depaneze i s execute diagrame de fluxuri
de date ntr-un mediu vizual unificat.
Urmtorul jalon n geneza LPV-urilor la reprezentat publicarea n 1975 a tezei de doctorat a lui David
CANFIELD-SMITH intitulat Pygmalion: A Creative Programming Environment. Aceast lucrare a constitu-
it puncte de plecare pentru cteva direcii de cercetare n acest domeniu care continu i n ziua de as-
tzi. Spre exemplu, Pygmalion se baza pe o paradigm de programare bazat pe icoane n care utilizato-
rul crea, modifica i conecta mici obiecte, denumite icoane, care aveau proprieti definite pentru a
realiza calcule. De atunci s-au adus multe mbuntiri acestei metode, ns multe LPV-uri nc se bazea-
z pe aceast paradigm.
Pygmalion a folosit i conceptul de programare prin exemple, unde utilizatorul i arta sistemului cum s
realizeze o sarcin ntr-o situaie specific, iar sistemul folosea aceast informaie pentru a genera un
program care s realizeze sarcina n cazuri generale. n acest sistem, utilizatorul seta modul memorare,
realiza calculele de interes, reseta modul de memorare i primea ca ieire un program care realiza calcu-
le asupra unor intrri arbitrare. (3)
Iniial, dezvoltarea programrii vizuale a avut loc n dou direcii: abordri vizuale asupra limbajelor de
programare tradiionale (precum diagramele executabile de fluxuri de date) i noi abordri vizuale de
programare care s-au deprtat semnificativ de abordrile tradiionale (precum programarea prin de-
monstrarea pe ecran a aciunilor dorite). Multe dintre aceste sisteme incipiente au avut avantaje care
preau interesante i intuitive cnd au fost utilizate pe programe jucrie, dar care au indus probleme
dificile cnd s-a ncercat extinderea lor n programe realiste. Aceste probleme au dus la o decdere
Programare Vizual i Modelare
Pagina 7
incipient a programrii vizuale, fcndu-i pe muli s cread c programarea vizual este nepotrivit
pentru industrie, fiind doar un exerciiu academic.
Pentru a depi aceste probleme, cercettorii din domeniul vizual au nceput s dezvolte ci de folosire a
programrii vizuale doar n anumite domenii software, crescnd astfel numrul proiectelor n care pro-
gramarea vizual ar putea ajuta. n acest sens, tehnici vizuale au fost:
ncorporate pe larg n medii de programare care suport limbaje de programare textuale
folosite pentru a nlocui specificaiile textuale din interfeele grafice pentru utilizator
folosite pentru a realiza formele electronice ale diagramelor din ingineria software n crearea
i/sau vizualizarea relaionrilor dintre structurile de date
folosite pentru a combina vizual unitile programate textual pentru a construi noi programe
n curnd au nceput s apar MPV-uri comerciale de succes. Printre primele exemple au fost Microsoft
Visual Basic (pentru Basic) i sistemele VisualWorks (pentru Smalltalk) de la Cincom. Alt grup de MPV-uri
comerciale, orientate n principal pe programarea de tip large-grained, sunt uneltele CASE (Computer-
Aided Software Engineering) care suport specificaii vizuale (spre exemplu, folosind diagrame) ale rela-
iilor dintre modulele programului, culminnd prin generarea automat a codului.
Ali cercettori din programarea vizual au preferat o alt cale. Ei au contribuit la dezvoltarea acelor
proiecte potrivite pentru programarea vizual prin implementarea sistemelor specifice unor anumite
domenii. Folosind aceast strategie, prin determinarea unui nou domeniu care s suporte aceast facili-
tate au crescut numrul proiectelor care pot fi programate vizual. Un beneficiu imediat a fost creterea
nivelului de accesibilitate pentru utilizatorii care ajungeau n contact cu acele sisteme. Dezvoltatorii do-
meniilor specifice pentru LPV i MPV au descoperit c, gsind modaliti de a scrie programe pentru
rezolvarea unei anumite probleme dintr-un domeniu, au eliminat multe dintre dezavantajele metodelor
iniiale, deoarece au lucrat direct n stilul de comunicare al domeniului respectiv i au folosit artefacte
vizuale (spre exemplu, anumite icoane sau meniuri) care s reflecte nevoile particulare, diagramele de
rezolvare a problemelor i vocabularul specific acelui domeniu, nefiind niciodat obligai s prseasc
acel stil de comunicare. Aceast abordare a dat rezultate att n cercetare, ct i pe pia. Astzi exist
LPV-uri i MPV-uri pentru diverse domenii: programarea achiziiilor de date de laborator (LabView de la
National Instruments), programarea vizualizrilor specifice (AVS de la Advanced Visual Systems), pro-
gramarea telefoniei i a mail-ului de voce (PhonePro de la Cypress Research) i programarea simulrilor
grafice i a jocurilor (Cocoa de la Stagecoach Software). De asemenea, ageni pentru generarea de sof-
tware ncep s fie inclui n software-ul pentru calculatoarele personale, permind ca macro comenzi
care ajut cu sarcini repetitive s fie deduse prin manipulrile utilizatorului final (ca n Chimera, de
exemplu).
ncercarea iniial de a concepe LPV-uri cu destul putere i generalitate pentru a rezolva orice varie-
tate de probleme de programare reprezint un domeniu de cercetare n plin dezvoltare. Un scop al
acestei cercetri l reprezint mbuntirea continu a modalitilor prin care programarea vizual poa-
te fi folosit. Un alt scop este acela de a asigura aceleai modaliti de mbuntire n dezvoltarea sof-
tware n general, precum cele deja disponibile pentru programarea unor domenii specifice. Dei toate
Programare Vizual i Modelare
Pagina 8
acestea sunt nc la nivel de cercetare, au aprut deja LPV-uri comerciale cu caracteristici necesare pen-
tru programarea de uz general, fiind folosite pentru a produce pachete software comerciale. Un exem-
plu este Prograph CPX de la Pictorius International. (4)
1.3 Strategii n Programarea Vizual
n ceea ce privete cercetarea n programarea vizual n general i n LPV n particular, exist o prere
greit precum c acestea au drept scop eliminarea textului. n fapt, majoritatea LPV-urilor includ text
ntr-o oarecare msur ntr-un context multidimensional. Scopul lor este de a aduce mbuntiri desig-
nului limbajului de programare. ansa de a atinge acest deziderat se bazeaz pe simplul fapt c LPV-urile
au mai puine restricii sintactice privind modul n care un program poate fi exprimat (de ctre calculator
sau de ctre om), situaie ce ofer o libertate de a explora mecanismele programrii care nu a mai fost
atins din simplul motiv c nu era posibil n trecut.
elurile care s-au dorit a fi atinse prin cercetarea n LPV-uri au fost de a:
face programarea mai accesibil unei audiene particulare
mbunti corectitudinea cu care oamenii realizeaz sarcini de programare
mbunti viteza cu care oamenii realizeaz sarcini de programare.
Pentru a atinge aceste scopuri, exist patru strategii utilizate n LPV-uri:
Concret: este opusul lui abstract i presupune exprimarea unor aspecte ale programului folosind
instane particulare. Spre exemplu, unui programator i se permite specificarea unor aspecte se-
mantice privind un obiect sau o valoare specifice, sau sistemul s poat afia n mod automat
efectele unui poriuni din program asupra unui obiect sau valori specifice.
Direct: n contextul manipulrii directe, aceast strategie este descris ca fiind sentimentul pe
care l are cineva manipulnd direct un obiect. Din perspectiv cognitiv, direct n calculatoare
nseamn o distan ct mai mic ntre scop i aciunile necesare pentru a atinge acest scop. Un
exemplu n acest sens ar fi s i se permit programatorului s manipuleze un obiect sau o valoa-
re specifice n mod direct, prin semantic, n loc s descrie aceast semantic textual.
Explicit: anumite aspecte ale semanticii sunt explicite n mediu dac pot fi precizate direct (tex-
tual sau vizual), fr necesitatea ca programatorul s le specifice. Un exemplu l reprezint sis-
temul care genereaz explicit relaionri ntre fluxurile de date (sau pri din program) prin de-
senarea unor arce direcionale ntre variabilele relaionate ale programului.
Rspuns vizual imediat (feedback vizual): n contextul programrii vizuale, acest deziderat pre-
supune afiarea imediat a efectelor produse prin editarea programului. Tanimoto (5) a introdus
termenul de liveness (adaptat n limba romn ca timp de rspuns), termen care caracterizea-
z ct de imediat este rspunsul semanticii oferit n mod automat pe parcursul procesului de
editarea a programului. Tanimoto descrie patru niveluri de timp de rspuns:
Programare Vizual i Modelare
Pagina 9
o Nivelul 1: nu se aplic nicio semantic, deci sistemul nu ofer niciun rspuns programa-
torului. Un exemplu n acest sens l reprezint diagramele de tip entitate-relaionare
pentru documentaie.
o Nivelul 2: programatorul poate s obin rspuns despre o poriune a programului, dar
acest rspuns nu este automat. Compilatoarele suport minimal acest nivel, iar interpre-
toarele ceva mai mult deoarece nu sunt restricionate doar la valorile finale de ieire.
o Nivelul 3: un rspuns semantic incremental este asigurat n mod automat de fiecare da-
t cnd programatorul realizeaz o editare incremental a programului, caz n care toate
valorile afiate pe ecran i afectate de modificare sunt retiprite automat. Aceasta asi-
gur consistena dintre starea afiat i starea sistemului dac singura aciune care de-
termin schimbarea strii sistemului este editarea programului. Facilitatea de recalcula-
re automat a foilor de calcul tabelar suport acest nivel de timp de rspuns.
o Nivelul 4: sistemul rspunde la editrile programului ca n nivelul 3, dar i la alte eveni-
mente, precum ntreruperi de la ceasul de timp al sistemului sau clicuri de maus, asigu-
rnd n orice moment acurateea dintre datele afiate i starea curent a sistemului pe
tot parcursul rulrii.
1.4 Clasicarea Limbajelor de Programare Vizual
Pe msur ce domeniul LPV a nceput s se maturizeze, a aprut interesul crerii unei clasificri standard
i robuste pentru tot ce s-a descoperit. O astfel de clasificare nu este de interes doar pentru cercettori,
care vor putea gsi mai uor lucrri asemntoare, ci asigur i o baz pentru compararea i evaluarea
diferitelor sisteme. Aceast clasificare se datoreaz unor nume importante din domeniu, incluznd pe
Chang, Shu sau Burnett, care s-au strduit s identifice caracteristicile care definesc principalele catego-
rii de LPV. Urmtoarea list (3) prezint un sumar al schemei de clasificare ce va fi dezvoltat pe parcur-
sul acestui subcapitol:
Limbaje vizuale pure
Sisteme hibride (text i vizuale)
Sisteme de programare prin exemplificare
Sisteme orientate pe constrngeri
Sisteme bazate pe formulare
n fapt, aceste categorii nu sunt mutual exclusive, numeroase limbaje putnd fi ncadrate la mai mult de
o categorie.
n contextul acestui curs, cea mai important categorie o reprezint limbajele pur vizuale. Aceste limbaje
sunt caracterizate de faptul c ele se bazeaz pe tehnici vizuale pe toat durata procesului de programa-
re. Programatorul manipuleaz icoane sau alte reprezentri grafice pentru a-i crea programul care, apoi,
este depanat i executat n acelai mediu vizual. Programul este compilat direct prin reprezentarea sa
vizual i nu este niciodat tradus ntr-un limbaj intermediar bazat pe text. Exemplu de astfel de sistem
Programare Vizual i Modelare
Pagina 10
complet vizual este Prograph. n literatura de specialitate a domeniului, aceast categorie este subdivi-
zat n seciuni precum limbaje cu icoane i fr icoane, orientate pe obiect, funcionale i imperative.
Un subset important al LPV ncearc s combine elementele vizuale cu cele textuale. Aceast categorie
de sisteme hibride include att sistemele n care programele sunt create vizual i apoi translatate ntr-un
limbaj textual de nivel nalt, ct i sistemele care folosesc elemente grafice ntr-un limbaj textual. Exem-
ple din aceast categorie includ Rehearsal World i rezultatul cercetrii lui Erwing i a echipei sale (6). n
Rehearsal World, utilizatorul antreneaz sistemul s rezolve o problem particular prin manipularea
unor actori grafici, dup care sistemul genereaz un program Smalltalk pentru implementarea soluiei.
Erwing a dezvoltat extensii la limbajele C i C++ care permit programatorilor s insereze n cod diagrame.
Spre exemplu, se poate defini textual o structur de date de tip list nlnuit, dup care se realizeaz
asupra listei operaii (precum tergerea unui nod) prin desenarea pailor n cadrul procesului.
Pe lng aceste dou categorii majore, numeroase LPV-uri sunt clasificate ntr-o varietate de ramificaii.
Spre exemplu, o parte dintre LPV-uri se aseamn cu Pygmalion, permind utilizatorului s creeze i s
manipuleze obiecte grafice cu care s nvee sistemul s realizeze o anumit sarcin. i Rehearsal
World, pomenit n paragraful anterior, se ncadreaz n aceast categorie de programare prin exemple.
Alte LPV-uri se bazeaz pe manipularea constrngerilor, creat de Sutherland n Sketchpad. Aceste sis-
teme orientate pe constrngeri sunt populare pentru design de simulare, n care programatorul mode-
leaz obiectele fizice ca obiecte ale mediului vizual crora li se impun constrngeri gndite s copieze
comportamentul legilor naturale (precum gravitatea). De asemenea, sisteme orientate pe constrngeri
se mai folosesc i n dezvoltarea de interfee grafice pentru utilizatori. Thinglab i ARK, ambele LPV-uri
de simulare, reprezint exemple de limbaje bazate pe constrngeri.
Cteva LPV-uri au mprumutat modul de vizualizare i metaforele de programare de la foile de calcul
tabelar. Aceste limbaje pot fi clasificate drept LPV-uri bazate pe formulare. Ele neleg programarea ca
modificarea n timp a unui grup de celule interconectate, deseori permind programatorului s vizuali-
zeze execuia programului ca pe o secven de stri diferite ale celulelor care progreseaz n timp.
Form/3 este un exemplu de astfel de LPV. Este important de evideniat faptul c n fiecare dintre catego-
riile menionate anterior se pot gsi att exemple de LPV-uri de uz general, ct i limbaje speciale pentru
aplicaiile unor anumite domenii.
Domeniul programrii vizuale s-a dezvoltat foarte mult n ultimii ani. Dezvoltarea continu i rafinarea
limbajelor din categoriile menionate mai sus au dus la unele rezultate care au fost iniial considerate ca
fcnd parte din domeniul vizual, dar ulterior au fost reclasificate ca apropiate de domeniu pentru c nu
exemplific, de fapt, programarea vizual. Aceste LPV-uri orfane includ sisteme de animare folosind
algoritmi, precum BALSA, care asigur display grafic interactiv al execuiei programelor i unelte de dez-
voltare a interfeelor grafice, precum cele livrate cu numeroase compilatoare moderne (precum Micro-
soft Visual C++). Ambele tipuri de sisteme includ, cu certitudine, componente vizuale, dar acestea sunt,
mai degrab, aplicaii grafice sau generatoare de abloane dect limbaje de programare. (3)
Programare Vizual i Modelare
Pagina 11
1.5 Teoria Limbajelor de Programare Vizual
Pentru a stabili un cadru pentru discuiile teoretice privind limbajele de programare vizuale, este nece-
sar prezentarea ctorva definiii (7):
icoan (icoan generalizat): un obiect cu reprezentare dual: partea logic (sensul) i partea fi-
zic (imaginea).
sistem iconic: un set structurat de icoane relaionate.
propoziie iconic (propoziie vizual): o aranjare spaial a icoanelor pentru sistemul iconic.
limbaj vizual: un set de propoziii iconice construit pe baza unei sintaxe i a unei semantici date.
analiz sintactic (analiz spaial): analiza unei propoziii iconice pentru determinarea structu-
rii de baz.
analiz semantic (interpretare spaial): analiza unei propoziii iconice pentru determinarea
sensului de baz.
Detaliile care urmeaz sunt restrnse la limbajele vizuale 2D, dar tot ce este expus poate fi generalizat
pentru 3D (sau mai mult).
1.5.1 Specificarea formal a Limbajelor de Programare Vizual
Un aranjament spaial care constituie o propoziie vizual reprezint omologul bidimensional al unui
aranjament unidimensional de jetoane n limbajele de programare convenionale (textuale). n acele
limbaje, un program este exprimat sub forma unui ir de caractere n care jetoane terminale sunt conca-
tenate pentru a forma o propoziie ale crei structur i sens sunt determinate prin analiz sintactic i
semantic. Astfel, regula de construcie este implicit n limbaj i nu trebuie s fie precizat explicit ca
parte a specificaiilor limbajului. Invers, n limbajele de programare vizual se disting trei reguli de con-
strucie care sunt folosite pentru aranjarea icoanelor: concatenare orizontal (notat cu &), concatenare
vertical (notat cu ^) i suprapunere spaial (notat cu +).
Pentru a putea formaliza limbajele de programare vizual, trebuie fcut distincia dintre icoanele de
proces (care exprim calcule) i icoanele obiect. Acestea din urm pot fi subdivizate n icoane obiect
elementare (identific obiecte primitive n limbaj) i icoane obiect compozite (identific obiecte formate
printr-o aranjare spaial a icoanelor obiect elementare). De fapt, termenul icoane elementare se refer
att la icoanele de proces, ct i la icoanele obiect elementare i specific acele icoane care sunt primiti-
ve n limbaj. i cum o imagine (sau icoan, n acest caz) valoreaz 1000 de cuvinte, toate aceste concepte
sunt ilustrate n Fig. 1.3, care prezint cteva icoane din setul de icoane Heidelberg (8) i o propoziie
vizual complet.
Un limbaj de programare vizual este specificat de o triplet de forma (DI,G0,B), unde DI este dicionarul
de icoane, G0 este gramatica i B este o baz de cunotine specific unui anumit domeniu (9). Diciona-
rul de icoane este setul de icoane generalizate, fiecare fiind reprezentat printr-o pereche de forma
(Xm,Xi), cu o parte logic Xm (sensul) i o parte fizic Xi (imaginea). Gramatica G0 precizeaz modul n
care icoanele obiect compozite pot fi construite din icoane elementare folosind operatori de aranjare
spaial. Trebuie remarcat faptul c este obligatorie specificarea acestor operatori spaiali de compoziie
Programare Vizual i Modelare
Pagina 12
ca elemente terminale deoarece ei nu mai fac parte implicit din definirea limbajului. Baza de cunotine
B conine informaii specifice domeniului necesare pentru construirea sensului propoziiei vizuale dorite.
Aceasta conine informaii privind numele evenimentelor, relaii conceptuale, numele obiectelor rezul-
tate i referinele la obiectele rezultate.
Fig. 1.3 Cteva icoane din setul Heidelberg. Icoane obiect elementare: (a) un caracter i (b) un caracter selectat. Icoane de proces: (c) operaia de inserie i (d) operaia de tergere. Icoane obiect compozite: (e) un ir de caractere (compus din carac-tere) i (f) un ir selectat (compus dintr-un caracter i dou caractere selectate). Propoziie vizual (g) reprezentnd nlocuirea unui subir ntr-un ir.
1.5.2 Analiza Limbajelor de Programare Vizual
Propoziiile vizuale sunt construite din icoane elementare cu ajutorul operatorilor iconici. Analiza sintac-
tic a propoziiilor vizuale (cunoscut i sub denumirea de analiz spaial (10)) se bazeaz pe cteva
abordri (7):
Gramatici pentru procesarea imaginilor: iniial gndite pentru distribuirea imaginilor digitale pe
o reea de ptrate, aceste gramatici se bazeaz pe faptul c imaginile digitale sunt compuse din
pixeli. Aceste gramatici descoper structura unei propoziii vizuale compunnd pixelii n elemen-
te vizuale recognoscibile (linii, arce etc.) (11). Aceast metod este folositoare cnd un sistem
iconic trebuie s recunoasc icoane cu o anumit toleran de eroare (spre exemplu, digii din
scrisul de mn).
Gramatici de preceden: aceste gramatici de analiz spaial pot fi folosite pentru analiza ex-
presiilor matematice bidimensionale. Ele sunt foarte potrivite pentru analiza sintactic a propo-
ziiilor vizuale construite din icoane elementare i operatori iconici. Arborele de analiz este
Programare Vizual i Modelare
Pagina 13
construit prin compararea precedenei operatorilor ntr-un ablon principal i subdivizarea a-
blonului ntr-unul sau mai multe abloane secundare.
Gramatici independente de context i gramatici dependente de context: aceste gramatici sunt
folosite pentru a determina compoziia propoziiile vizuale folosind formalisme cunoscute.
Gramatici gen graf: acestea sunt, de departe cele mai puternice (dei mai puin eficiente) speci-
ficaii ale limbajelor vizuale. Aceste formalisme prevd cele mai multe mijloace pentru stabilirea
unor relaii contextuale i mare parte din cercetarea recent n acest domeniu a fost dedicat
ncercrii de a face analiza cu gramatici de acest tip fezabile din punct de vedere computaional.
Arborele de analiz determinat printr-una dintre metodele enunate anterior este analizat ulterior folo-
sind metode tradiionale de analiz semantic.
1.6 Problemele limbajelor vizuale
n cele ce urmeaz vor fi prezentate cteva dintre problemele comune ale limbajelor vizuale (4). Aceste
probleme se ntlnesc mai ales n limbajele vizuale de uz general (potrivite pentru a genera programe
executabile de dimensiuni rezonabile), dei unele dintre ele apar i n limbajele vizuale specifice unor
anumite domenii (proiectate pentru domenii particulare precum ingineria software sau vizualizarea ti-
inific).
1.6.1 Controlul fluxului
La fel ca n limbajele de programare convenionale, limbajele vizuale folosesc dou metode pentru con-
trolul fluxului n programe:
Metoda imperativ: n acest caz, programul vizual realizeaz una sau mai multe diagrame de
control al fluxului sau diagrame de flux de date, care indic modul n care se realizeaz controlul
pe parcursul programului. Un avantaj particular al acestei metode l reprezint faptul c asigur
o reprezentare vizual efectiv a paralelismului. Dezavantaj este faptul c programatorul trebuie
s fie atent la modul n care secvenierea operaiilor modific starea programului, ceea ce nu es-
te o caracteristic dorit pentru sistem (mai ales dac este destinat unor nceptori)
Metoda declarativ: este o alternativ la metoda imperativ i presupune c programatorul tre-
buie s prevad ce calcule se efectueaz i nu cum se execut acele calcule. Modificarea explici-
t a strii este evitat prin folosirea atribuirii singulare: programatorul creeaz un nou obiect
prin copierea unuia existent i precizarea diferenelor dorite i nu prin modificarea strii obiec-
tului existent. De asemenea, n loc s specifice o secven de modificrii ale strii, programatorul
definete operaii prin specificarea dependenelor dintre obiecte. Spre exemplu, dac progra-
matorul definete Y ca X+1, atunci aceast formulare, de fapt, stabilete explicit c Y trebuie cal-
culat folosind obiectul X, iar sistemul nelege c valoare lui X trebuie calculat prima. Astfel, n-
c este prezent secvenierea operaiilor, dar ea trebuie dedus de ctre sistem i nu definit de
programator. n acest caz, sistemul are de rezolvat problema dependenelor circulare, care tre-
buie detectate i semnalizate ca eroare.
Programare Vizual i Modelare
Pagina 14
1.6.2 Abstractizarea procedural
Exist dou niveluri de abstractizare procedural. Limbajele de programare vizual de nivel nalt nu sunt
limbaje de programare complete deoarece, spre exemplu, nu este posibil scrierea i meninerea unui
ntreg program ntr-un astfel de limbaj i, inevitabil, exist i module non vizuale care sunt incluse n
limbaj. Aceast metod de programare vizual este ntlnit n diverse sisteme orientate pe un anumit
domeniu, precum uneltele de mentenan software i mediile de vizualizare tiinific. De cealalt parte
sunt limbajele vizuale de nivel sczut care nu permit programatorului s combine n modulele procedu-
rale logic fin granulat. Aceast metodologie este folosit n limbaje orientate pe domenii specifice,
precum simulatoarele logice. Limbajele de programare vizual de uz general acoper ntregul spectru de
faciliti de programare, pornind de la proprieti de nivel sczut (incluznd condiionrile, recursivitatea,
iteraia) la proprieti de nivel ridicat care permit combinarea logicii de nivel sczut n module abstracte
(proceduri, clase, biblioteci etc.).
1.6.3 Abstractizarea datelor
Facilitile de abstractizare a datelor sunt ntlnite doar n limbajele de programare de uz general. Noi-
unea de date abstracte n programarea vizual este foarte similar cu cea din limbajele de programare
convenionale, cu singura deosebire c tipurile de date abstracte trebuie definite vizual (i nu textual),
au o reprezentare vizual (iconic) i asigur un comportament vizual.
1.7 Exemple de limbaje de programare vizual
n aceast seciune vor fi prezentate cteva exemple de LPV-uri pentru a demonstra cteva modaliti
prin care au fost implementate strategiile prezentate anterior.
1.7.1 Chimera. Programarea vizual imperativ prin demonstraie
Chimera este o exemplificare a modului prin care programarea imperativ este suportat n LPV-uri, prin
punerea programatorului s i demonstreze aciunile dorite. Sistemul a fost conceput de D.J. Kurlander
n cadrul tezei sale de doctorat (12). n cazul Chimera, programatorul este un utilizator final, ca urmare
este i un exemplu de LPV destinat mbuntirii nivelului de accesibilitate al programrii anumitor tipuri
de sarcini.
Domeniul Chimera este editarea grafic. Pe msur ce un utilizator final lucreaz la o scen grafic, poa-
te constata apariia unor sarcini de editare repetitive, caz n care poate indica o secven de manipulri
tocmai realizate asupra unei scene ca putnd fi generalizate i tratate ca un macro. Acest lucru este po-
sibil deoarece istoricul aciunilor utilizatorului este prezentat folosind o tehnic de benzi desenate, iar
utilizatorul poate selecta paneluri din istoric. Istoricul folosete acelai limbaj vizual ca interfaa, deci
utilizatorul le va nelege fr probleme. Spre exemplu, Fig. 1.4 a) prezint o ilustraie coninnd dou
ptrate i o sgeat. Istoricul generat prin crearea ilustraiei este prezentat n Fig. 1.5.
Programare Vizual i Modelare
Pagina 15
Fig. 1.4 Dou versiuni ale unei scene simple. Scena initial (a) i modificat (b)
Primul panel al Fig. 1.5 nfieaz activarea grilei din panelul de control al editorului. Numele comenzii
(Toggle-Grids) apare deasupra panoului. Al doilea panel prezint un dreptunghi creat n scena editorului
cu ajutorul comenzii Add-Box. n panelul trei dreptunghiul este selectat, n caseta Text Input este tastat
o culoare (galben) i este invocat comanda Set-Fill-Color. Acest panel este mprit pentru a vizualiza
att partea de control, ct i partea de editare. Urmtoarele paneluri prezint modificri ale grosimii i
culorii marginii dreptunghiului, adugarea unei linii paralel cu dreptunghiul i a nc dou linii deasupra
acesteia pentru a forma o sgeat. A doua parte a istoricului nfieaz adugarea unui nou dreptunghi,
tragerea sgeii pn la acest dreptunghi, rotirea sgeii pentru a-i alinia baza cu primul dreptunghi i, n
final, ntinderea sgeii pentru a atinge primul dreptunghi.
Fig. 1.5 Programarea prin demonstraie n Chimera. n acest exemplu, utilizatorul a desenat o cutie cu o sgeat indicnd spre ea (ca ntr-o diagram), iar aceast demonstraie este prezentat dup realizarea ei printr-o serie de paneluri. Acest set de demonstraii poate fi generalizat ntr-un macro pentru utilizarea sa ulterioar.
Pentru a face istoricele mai scurte i mai simplu de neles, se folosesc mai multe strategii. Mai multe
operaii nrudite se unesc ntr-un singur panel. Spre exemplu, panelul doi conine mai multe operaii:
selectarea unei scene obiect i modificarea culorii fundalului pentru obiectele selectate. Eticheta panelu-
lui indic numrul de comenzi pe care le reprezint i poate fi desfcut pentru a vizualiza panelurile in-
cluse. Panelul doi se deschide n primele dou paneluri prezentate n Fig. 1.6. Pentru ca istoricul s nu fie
foarte ncrcat, fiecare panel arat doar obiectele care particip n operaiile sale i contextul adiacent
Programare Vizual i Modelare
Pagina 16
cu el al scenei. Obiectele n panel sunt distribuite conform cu rolul pe care l au n explicaie. Spre exem-
plu, n primul panel sunt importante caseta pentru marcaj i eticheta ei, motiv pentru care sunt eviden-
iate, dar nu i celelalte elemente de control ale panelului.
Fig. 1.6 Folosirea istoricului pentru modificarea unei scene: (a) panourile selectate pentru refolosire, (b) noi operaii adugate n istoric
Istoricul grafic editabil poate fi folosit pentru revizuirea operaiilor dintr-o sesiune, pentru anularea (un-
do) sau reluarea (redo) unei secvene din aceste operaii. Pentru exemplul din Fig. 1.4, se dorete aplica-
rea pentru dreptunghiul de sus a comenzilor care stabilesc culoarea de umplere, grosimea i culoarea
linei la fel ca la dreptunghiul de jos. Se selecteaz dreptunghiul de jos, se caut n istoric panelurile rele-
vante i se selecteaz i ele (n cazul exemplului de fa, ultimele trei paneluri din Fig. 1.6), panelurile
selectate fiind evideniate cu etichete albe pe fundal negru. n pasul urmtor se apeleaz operaia
Redo-Selected-Panels, iar dreptunghiul de sus se va modifica n mod corespunztor.
Istoricele grafice editabile din Chimera reduc repetiia prin faptul c ofer o interfa pentru operaia de
reluare a operaiilor. Chimera are i un mecanism pentru inserarea de operaii noi n orice punct al unui
istoric. Istoricele pot fi fcute editabile, ceea ce transform fiecare panel static ntr-un editor grafic. n
acest fel, panelurile pot fi modificate, iar comenzile invocate i propag modificrile n ntreg istoricul.
Pentru a insera o comand nou n mijlocul unui istoric, sistemul anuleaz toate comenzile ulterioare
panelului afectat, execut noile comenzi, dup care le reface pe cele anulate. Spre exemplu, dac se
dorete modificarea sgeii (Fig. 1.6 b), se modific ultimul panel din primul rnd al istoricului din Fig. 1.5.
Se modific acest panel i nu altul pentru c, ulterior, sgeata nu mai este aliniat cu axele grilei, iar
modificarea ar fi mult mai dificil. Dup propagarea acestor modificri, o nou scen va fi disponibil (Fig.
1.4 b).
Fig. 1.7 Istoric grafic prezentnd crearea i alinierea a dou dreptunghiuri
Chimera include i o component de programare prin exemple, sau macro-uri prin exemple, care folo-
sete istoricele grafice editabile ca reprezentare vizual pentru revizuirea, editarea, generalizarea pro-
gramului i raportarea erorilor. Spre exemplu, se consider problema de aliniere la stnga a dou drep-
tunghiuri. Paii necesari sunt capturai n istoricul grafic din Fig. 1.7. Se creeaz iniial cele dou dreptun-
Programare Vizual i Modelare
Pagina 17
ghiuri (panelurile 1 i 2), dup care se activeaz liniile pentru aliniere de 0 i 90 de grade (panelurile 3 i
4) i se selecteaz colul din stnga sus al dreptunghiului de jos (panelul 5) i colul din dreapta jos al
dreptunghiului de sus (panelul 6) pentru generarea acestor linii. La final se selecteaz dreptunghiul de
sus i se trage pn ajunge la intersecia celor dou linii.
Fig. 1.8 Fereastra pentru construirea macro-ului, care conine un macro pentru alinierea la stnga a dou dreptunghiuri
Dac se dorete generalizarea acestei proceduri i ncapsularea ei ntr-un macro, nu se repet procedura
ntr-un mod special de nvare, ci se parcurge istoricul, se selecteaz panelurile relevante i se execut
comanda de transformare n macro. Pentru exemplul anterior, se selecteaz toate panelurile, cu excep-
ia celor de creare a dreptunghiurilor, deoarece ele vor fi argumente al macro-ului. Va aprea o fereastr
de construcie a macro-ului coninnd panelurile selectate. n pasul urmtor se vor alege argumentele,
prin selectarea obiectelor dorite (cele dou dreptunghiuri), se vor denumi i se va invoca comanda
Make-Argument. Efectul va fi adugarea a dou paneluri la nceputul istoricului pentru declararea argu-
mentului (Fig. 1.8). Pentru a folosi macro-ul ulterior, pentru un alt set de dreptunghiuri, va aprea o
fereastr de invocare (Fig. 1.9) ce va permite selectarea i vizualizarea argumentelor.
Fig. 1.9 Fereastra de invocare a unui macro
Chimera folosete inferena pentru determinarea versiunii generalizate a unui macro. Folosirea inferen-
ei este un lucru comun n limbajele prin demonstraie, iar succesul ei depinde de limitabilitatea dome-
niului de aplicare (aa cum este cazul Chimera). Cu toate acestea, sunt i limbaje prin demonstraie care
nu folosesc inferena i un exemplu este Cocoa.
1.7.2 Forms/3. Programarea vizual bazat pe foi de calcul tabelar
Forms/3 este un exemplu de LPV bazat pe paradigma foilor de calcul tabelar, implementat de ctre
Margaret Burnett n 1991, ca prototip al lucrrii sale de disertaie (13). n acest caz, programatorul i
realizeaz programul prin crearea unui formular i specificarea coninutului acestuia. Aceast paradigm
este folosit uzual n foile de calcul tabelar comerciale, unde formularul este sub form de gril marcat,
iar coninutul este specificat prin formulele celulelor.
Programare Vizual i Modelare
Pagina 18
Programele Forms/3 includ formulare (foi de calcul tabelar) cu celule, doar c celulele nu sunt ncastrate
ntr-o gril. Un programator Forms/3 creeaz un program manipulnd direct celulele pentru a le plasa pe
formular i definind o formul pentru fiecare celul prin folosirea unei combinaii flexibile de indicare,
tastare i gesturi (Fig. 1.10). Calculele unui program sunt determinate complet de aceste formule. For-
mulele se combin ntr-o reea (unidirecional) de constrngeri, iar sistemul asigur n mod continuu c
toate valorile afiate pe ecran satisfac aceste constrngeri.
Fig. 1.10 Definerea suprafeei unui ptrat folosind celule de tip calcul tabelar i formule n Forms/3. Tipurile grafice sunt suportate ca valori de prim clas, iar programatorul poate crea celula cu formula ptratului fie desennd un ptrat, fie tastnd textual specificaiile (spre exemplu, box 30 30)
Forms/3 este un limbaj Turing complet. Scopul lui este s mreasc domeniul de utilitate al conceptului
de foi de calcul tabelar prin suportul funcionalitilor avansate necesare pentru programare. Astfel,
suport faciliti precum grafic, animaie i recursivitate, dar fr a recurge la macrouri de modificare a
strii sau conexiuni cu limbajele de programare tradiionale. Spre exemplu, Forms/3 ofer o colecie de
tipuri bogat i extensibil prin faptul c permite ca atributele unui tip s fie definite prin formule, iar o
instan a unui tip s fie valoare a unei celule, care poate fi referit ca o celul. n Fig. 1.10, o instan a
tipului box a fost specificat prin desenarea grafic. Aceast specificare poate fi modificat, dac este
necesar, prin ntinderea elementului grafic prin manipulare direct. n ambele cazuri este asigurat un
rspuns vizual imediat, conform nivelului 4 de timp de rspuns. Facilitatea concret este prezent prin
faptul c elementul grafic rezultat este vzut imediat ce suficiente formule au fost oferite pentru a face
acest lucru posibil. Facilitatea direct este prezent prin mecanismul de manipulare direct pentru spe-
cificarea elementului grafic, deoarece programatorul demonstreaz specificaiile direct pe elementul
grafic creat.
Grupul int al Forms/3 sunt viitorii programatori, adic aceia a cror treab va fi s creeze aplicaii,
dar a cror formare nu a pus accent pe limbajele de programare tradiionale actuale. Un scop al lui
Forms/3 a fost s reduc numrul i complexitatea mecanismelor necesare pentru programarea aplica-
iilor, cu sperana c programatorilor le va fi mai uor dect dac ar folosi limbajele tradiionale, iar pro-
gramarea va fi mai corect i/sau accelerat. n studii empirice, programatorii au demonstrat corectitu-
Programare Vizual i Modelare
Pagina 19
dine mai ridicat i vitez att n crearea programului, ct i n depanarea lui, folosind Forms/3 n com-
paraie cu o varietate de tehnici alternative.
1.7.2.1 Exemplu de calcul al ariei unui ptrat n Forms/3
Fereastra principal a Forms/3 (versiune recent de implementare) (13), prezentat n Fig. 1.11, apare
pe ecran la pornirea aplicaiei. Formularul System, listat n fereastra principal a formularelor, este n-
totdeauna ncrcat la pornirea sistemului. Pentru a crea un formular nou se apas butonul New Form,
aciune urmat de apariia unei ferestre de dialog (Fig. 1.12) pentru specificarea numelui formularului.
Dup crearea unui nou formular, acesta apare listat n fereastra principal.
Fig. 1.11 Fereastra principal a Forms/3
Fig. 1.12 Caseta de dialog pentru New Form
Dup deschiderea formularului Area_box creat anterior (Fig. 1.13), se selecteaz butonul de introducere
a unei celule cu butonul din stnga al mausului (butonul din stnga este folosit pentru selecie, butonul
din dreapta este folosit pentru alte sarcini). Cu un clic n spaiul formularului se introduce o nou celul,
care const ntr-un chenar i un tab pentru formul. Dup inserare, apare un cursor pe numele implicit
al celulei, care poate fi modificat (n cazul exemplului, Abox). Pentru a introduce o formul se apas pe
butonul ce indic un cursor pe paleta din stnga, dup care se acioneaz butonul asociat tabului formu-
lei pentru celul. Va aprea un cmp unde se tasteaz formula (Fig. 1. 14), n cazul de fa valoarea 5,
dup care se apas butonul Apply. Valoarea celulei este acum afiat. Acesta este un exemplu de rs-
puns imediat: de fiecare dat cnd se introduce o formul toate valorile afectate sunt reafiate n mod
automat.
Fig. 1.13 Formular coninnd o celul nou
Fig. 1. 14 Caset pentru formula n care se insereaz o for-
mul
Programare Vizual i Modelare
Pagina 20
Repetnd procedura se creeaz o nou celul n care se va calcula aria ptratului (Fig. 1.15,) ca fiind
formula Abox * Abox. Noua celul (denumit Area) va afia numrul 25. Modificarea valorii lui Abox va
atrage dup sine modificarea valorii celulei Area.
Fig. 1.15 Formularul finalizat pentru calculul ariei ptratului
1.7.3 Prograph. Programarea vizual cu fluxuri de date
Prograph a fost conceput n 1983 de ctre Tomasz Pietrzykowski i Philip T. Cocs (14). Cel de-al doilea
rmnnd n proiect mai mult vreme i-a adus mbuntiri de-a lungul anilor. Prograph este un LPV
bazat pe fluxuri de date destinat programatorilor profesioniti. Paradigma bazat pe fluxuri de date este
modalitatea de programare vizual folosit larg n industrie, dar i de mediile vizuale de programare
pentru anumite domenii, precum sistemele de vizualizare tiinific i sistemele de simulare
Prograph este un limbaj funcional i uor de folosit. Datele sunt reprezentate prin linii, iar metodele
prin diverse dreptunghiuri. Fiecare dreptunghi conine noduri pentru intrri i ieiri. Datele sunt transmi-
se prin valori, ceea ce permite metodelor s foloseasc drept intrri, ieirile de la alte metode. Prograph
nu are variabile, ci doar date care curg prin metode.
Prograph este un limbaj de programare Turing complet, adic orice program care poate fi scris n C++
(sau orice alt limbaj de nivel nalt) poate fi scris i n Prograph. Programele sunt create construind dia-
grame de fluxuri de date n cadrul editorului. Clasele, metodele i atributele Prograph sunt reprezentate
i manipulate grafic.
Fig. 1.16 prezint un program care calculeaz valoarea ipotenuzei unui triunghi dreptunghic. Datele sunt
introduse textual i curg de-a lungul liniilor conectate la operaii. Operaiile colecteaz datele i le tran-
smit spre alte operaii pn se obine rezultatul final, care este vizualizat.
Prograph asigur un mecanism puternic pentru depanare, folosind extensiv tehnici de vizualizare dina-
mic. Pentru valorile datelor nivelul de timp de rspuns este 2, deoarece programatorul cere explicit
vizualizarea acestora cnd dorete s le vad. Cu toate acestea, activitile din timpul rulrii i ordinea
de execuie a nodurilor pot fi vizualizate pe tot parcursul execuiei, iar dac programatorul modific o
parte din date sau cod, acestea sunt n mod automat aplicate asupra sistemului. Acest aspect are nive-
lul 3 de timp de rspuns.
Programare Vizual i Modelare
Pagina 21
Fig. 1.16 Programarea prin fluxuri de date n Prograph. Programatorul folosete operaii de nivel sczut (primitive) pentru a calcula ipotenuza unui triunghi dreptunghic. Prograph permite numirea i compunerea unor astfel de prafuri de nivel sczut n grafuri de nivel ridicat, care pot fi compuse ulterior n alte grafuri etc.
O cale prin care aceast paradigm de programare se distinge de alte paradigme (prin prezentarea expli-
cit a arcelor n graf) este explicitatea sa privind relaionrile fluxurilor de date n cadrul programului.
Cum numeroase limbaje bazate pe fluxul de date guverneaz chiar i fluxul de control prin fluxul de date,
arcele sunt suficiente i pentru a reflecta, n mod explicit, fluxul de control.
1.7.4 KidSim/Cocoa. Programarea vizual bazat pe reguli
Cocoa (denumit iniial KidSim) este un LPV bazat pe reguli, n care programatorul specific reguli pentru
demonstrarea unei postcondiii plecnd de la o precondiie. Programatorii vizai sunt copiii, iar dome-
niul asociat este specificarea simulrilor grafice i jocuri. Cocoa este un limbaj Turing complet, doar c
facilitile lui nu au fost proiectate pentru programarea de uz general, ci pentru a facilita accesul copiilor
la programarea propriilor simulri.
Felul n care atributele concret i direct sunt atinse n Cocoa sunt similare cu Chimera, deoarece ambele
folosesc demonstraia ca modalitate de a specifica semantica. Cu toate acestea, nivelul de timp de rs-
puns este diferit, n Cocoa fiind ntre 2 i 3. Nu este nivel 3 pentru anumite tipuri de modificri ale pro-
gramului (spre exemplu, adugarea unor noi reguli) care nu afecteaz afiarea curent a variabilelor
pn la cererea expres a programatorului de reluare a rulrii. Pentru alte modificri ale programului
(modificarea aspectului unui obiect), modificrile sunt imediat propagate pe afiaj.
n indicarea proprietilor comune tuturor sistemelor bazate pe reguli, Hayes-Roth include abilitatea de
a le explicita comportamentul (15). n Cocoa, un copil poate crea lumi care s conin o varietate de
caractere, aspecte i proprieti. O regul specific ce face un caracter ntr-o situaie particular, aspec-
tul permite caracterului s i modifice nfiarea, iar proprietile sunt folosite pentru a reine informa-
ii despre caracter. Simularea se face pe baza unui ceas, astfel nct la fiecare tact al acestuia fiecrui
caracter din scen i se permite funcionarea conform propriilor lumi. Fig. 1.17 (16) prezint un ecran
Cocoa tipic.
Programare Vizual i Modelare
Pagina 22
Fig. 1.17 Ecranul Cocoa. Fereastra din colul stnga sus constituie placa de lucru, cu caseta de copiere sub ea. n dreapta, utilizatorul a deschis carneele pentru cele dou personaje de pe plac
Fiecare caracter are o list de reguli. Cnd unui caracter i vine rndul s acioneze, sistemul parcurge
lista de reguli, selecteaz prima regul aplicabil strii curente i o execut. Regulile se creeaz prin spe-
cificarea propriu-zis de ctre programator a aciunilor care vor fi incluse, dup care sistemul le generali-
zeaz (creeaz regula) pentru a putea fi folosite n mod automat de cte ori este nevoie.
Fig. 1.18 Crearea unei noi reguli
Cea mai simpl regul este cea care mut un caracter. Fig. 1.18 (16) prezint un exemplu de creare a
unei reguli care permite mutarea unui caracter un ptrel la dreapta. Dup apsarea butonului New
Rule, ntreaga plac se ntunec, cu excepia unui spot de lumin n jurul caracterului, care poate fi di-
mensionat pentru a include contextul regulii (ptratul din dreapta caracterului). n pasul urmtor, se
demonstreaz regula prin mutarea caracterului n zona dorit (Fig. 1.18). Reprezentarea vizual a unei
reguli prezint o imagine cu starea regulii nainte (stnga) i dup (dreapta), unite cu o sgeat. Regula
Programare Vizual i Modelare
Pagina 23
se interpreteaz: dac este spaiu liber la dreapta mea, m mut n el. Cum regulile sunt revizuite la
fiecare tact al ceasului, doar aceast simpl regul este suficient pentru deplasarea caracterului de-a
lungul plcii.
Fig. 1.19 Regula de salt. Caseta aciunii din dreapta a fost expandat pentru a vizualiza aciunile realizate de regul
Pot fi create i reguli pentru modificarea aspectului unui caracter. Fig. 1.19 (16) prezint realizarea unei
reguli pentru saltul unui gard. Programatorul mut caracterul un ptrat deasupra gardului, duce aspectul
de salt n caseta aspectului curent (current appearance box) de pe pagina de aspect din carneelul
caracterului, mut caracterul un ptrat la dreapta gardului, dup care revine la aspectul normal.
Fig. 1.20 Modificarea regulii de mers la dreapta
De multe ori simulrile devin interesante deoarece caracterele se modific pe parcurs: mbtrnesc,
obosesc, devin mai puternice sau mai detepte. Pentru a permite modificarea strii interne a caractere-
lor, Cocoa ofer atribuirea de proprieti, care pot fi predefinite sau create de utilizator. Spre exemplu,
utilizatorul poate crea proprieti precum vrst sau flmnd pentru un anumit caracter. Aceste
proprieti joac rolul instanelor din programarea orientat pe obiecte. Fig. 1.20 (16) prezint modifica-
rea regulii de mers la dreapta astfel nct caracterul s flmnzeasc. Utilizatorul creeaz proprietatea
denumit hunger n lista de proprieti a caracterului cu valoare iniial 0. Pentru a modifica regula, se
folosete butonul Add On pentru acea regul, care execut aciunile asociate regulii, dup care permite
utilizatorului s demonstreze noi aciuni. n acest caz, utilizatorul modific valoarea din proprietatea
hunger din 0 n 1. Sistemul generalizeaz aceast demonstraie, dndu-i sensul Adun 1 la foamea
Programare Vizual i Modelare
Pagina 24
mea. Dac nu este aceasta interpretarea demonstraiei, utilizatorul i poate edita descrierea. Cocoa
include i un calculator pentru a permite editarea unor reguli complicate.
n fiecare ciclu de execuie, regulile asociate fiecrui caracter sunt parcurse n lista acestuia de sus n jos
(Fig. 1.21). Indicatorul din dreptul unei reguli este off (gri) nainte ca regula s fie luat n consideraie.
Apoi, dac regula nu poate fi aplicat la starea curent a caracterului, indicatorul devine rou. Dac re-
gula poate fi aplicat, este executat i indicatorul din dreptul ei devine rou. Dup aplicarea unei reguli
pentru un caracter, acesta este oprit i nu se mai verific nicio regul pentru el pn n urmtorul ciclu.
(4)
Fig. 1.21 Un crtor de zid n Cocoa care urmeaz regulile demostrate pentru el. Tocmai a terminat regula 2, care l pune n poziia cerut de regula 1 (n pasul urmtor)
1.7.5 Cube. Limbaje de programare vizual 3D
Cube, realizat de M. Najork, reprezint un avans important n design-ul limbajelor de programare vizuale,
fiind primul limbaj vizual 3D. Deoarece programele Cube sunt traduse n reprezentri interne mai simple
pentru verificare i interpretare, limbajul ar fi mai degrab unul hibrid. Cu toate acestea, utilizatorul nu
este expus niciodat la nicio reprezentare textual, ca urmare este mai corect dac se spune c limbajul
este foarte aproape de a fi complet vizual.
Cube folosete o paradigm de flux de date pentru construcia programelor. Lucrul n 3D asigur un
numr de avantaje asupra limbajelor 2D tradiionale. Spre exemplu, lucrul n 3D i permite sistemului s
afieze mai multe informaii ntr-un mediu cu care este mai uor de interacionat dect cu o reprezenta-
re 2D care folosete aceleai dimensiuni ale ecranului (3). ntr-o vizualizare 3D, programatorul este liber
s i modifice punctul de vedere n interiorul lumii virtuale pentru a se uita la orice seciuni particular a
programului. Acest tip de flexibilitate nu este disponibil n LPV-urile 2D
Programare Vizual i Modelare
Pagina 25
Fig. 1.22 Function to compute the factorial of a number in Cube
Fig. 1.22 prezint principalele componente ale unui program Cube, folosite pentru a descrie o funcie
recursiv pentru calculul factorialului unui numr dat (17). Programele Cube sunt compuse din cuburi
suport, cuburi predicat, cuburi de definire, porturi, conducte i planuri. ntreaga structur din Fig. 1.22
este nconjurat de un cub de definire care asociaz icoana ! cu funcia definit n interiorul cubului.
Cubul de definire are dou porturi conectate la el, unul la stnga i unul la dreapta. Portul din stnga
asigur intrarea, iar portul din dreapta este ieirea, dei, tehnic vorbind, ambele porturi pot asigura am-
bele funcii, n Cube porturile fiind bidirecionale. Cele dou porturi sunt conectate prin conducte la
cuburile suport n planul de jos al diagramei, care reprezint cazul de baz al recursivitii. Fiecare plan
reprezint o diagram de fluxuri de date. Pentru situaia de start, diagrama asigur valorile implicite
pentru porturi i indic ce tip de valori poate accepta sau produce fiecare port. Dac valoarea de la por-
tul de intrare este zero, atunci planul de jos este activ i valoarea din cubul de suport din dreapta (unu)
pleac spre portul de ieire. Dac intrarea este mai mare dect zero, atunci este satisfcut predicatul din
planul de sus, este extras valoarea unu din intrare de ctre ramura de jos a diagramei de fluxuri de date
din partea de sus. Diferena este introdus n apelul recursiv al funciei factorial, iar rezultatul este mul-
tiplicat cu valoarea de intrare. Rezultatul este trimis la portul de ieire. Dup definirea funciei factorial
n program, ea poate fi apelat prin simpla conectare a cubului predicat etichetat cu icoana ! la cuburi
de suport, prin cele dou porturi (Fig. 1.23 (18)).
Programare Vizual i Modelare
Pagina 26
Fig. 1.23 Folosirea programului factorial, dup evaluare
1.8 Programarea vizual i abstractizarea
Una dintre provocrile legate de programarea vizual o reprezint scalarea limbajelor pentru a dezvolta
programe ct mai extinse. Aceasta este o problem mai mare pentru LPV-uri dect pentru limbajele
tradiionale textuale din motive legate de reprezentare, designul i implementarea limbajului i nouta-
tea relativ a domeniului. Spre exemplu, unele mecanisme vizuale folosite pentru a obine caracteristici
precum explicit pot ocupa un spaiu att de mare nct devine dificil meninerea contextului. De ase-
menea, este dificil de aplicat tehnici dezvoltate pentru limbajele tradiionale, deoarece ele pot aduce cu
sine reintroducerea complexitii pe care LPV-urile au ncercat s o nlture sau s o simplifice.
Dezvoltri recente n domeniul abstractizrii au fost foarte importante pentru scalabilitatea LPV-urilor.
Cele dou tipuri de abstractizare, cele mai rspndite att n programarea vizual, ct i n programarea
textual, sunt abstractizarea procedural i abstractizarea datelor. n particular, abstractizarea procedu-
ral s-a demonstrat a fi suportat ntr-o varietate de LPV-uri. Un atribut cheie n suportul abstractizrii
procedurale n LPV-uri l-a reprezentat consistena cu restul programrii n acelai LPV. Soluii reprezen-
tative includ: posibilitatea programatorului de a selecta, numi i iconifica o seciune a unui graf de flux
de date (Fig. 1.16), care adaug un nod, reprezentnd subgraful, la o bibliotec de noduri funcii ntr-un
limbaj de tip flux de date; setarea unor foi de calcul separate (Fig. 1.10), care pot fi generalizate n mod
automat pentru a permite funcii definite de utilizator ntr-un limbaj bazat pe formulare; nregistrarea
i generalizarea unei secvene de manipulri directe (Fig. 1.5), ntr-un limbaj prin demonstrare.
Abstractizarea datelor a cunoscut un proces mai lent de dezvoltare n LPV-uri, mai ales pentru c, de
multe ori, este dificil de gsit o cale pentru a menine caracteristici precum concret i rspuns direct, i a
aduga suport pentru ideile centrale legate de abstractizarea datelor, precum generalitate i ascunderea
informaiei. Cu toate acestea, n anumite LPV-uri a aprut suport pentru abstractizarea datelor. Spre
Programare Vizual i Modelare
Pagina 27
exemplu, n Form/3, un nou tip de dat este definit n foaia de calcul tabelar astfel: cu celule obinuite se
definesc operaii sau metode i cu dou celule difereniate se permite compunerea obiectelor complexe
din cele simple i definirea modului de vizualizare pe ecran al obiectului. n Cocoa, aspectul fiecrui ca-
racter este desenat folosind un editor grafic i fiecare demonstraie a unui noi reguli aparine tipului
caracterului manipulat, asigurnd aproximativ funcionalitatea unei operaii sau metode. Ambele,
Form/3 i Cocoa, asigur i un suport limitat pentru motenire.
1.9 Concluzii privind programarea vizual
Domeniul limbajelor de programare vizual abund cu exemple ale eforturile de a lrgi accesibilitatea i
mri puterea programrii calculatoarelor. Dei numeroasele proiecte existente variaz n detaliile oferite,
n special n metafora vizual implicat i n domeniul de aplicare intit, toate mprtesc scopul comun
al mbuntirii procesului de programare. n plus, cercetrile recente pentru solidificarea fundamente-
lor teoretice ale programrii vizuale i eforturile serioase depuse pentru dezvoltarea unor clasificri for-
male standard ale LPV-urilor indic faptul c domeniul a nceput s se reevalueze i s se maturizeze.
Chiar dac domeniul s-a dezvoltat n ultimii douzeci de ani, contribuii incipiente importante, precum
Sketchpad i Pygmalion, i-au meninut influena n numeroase design-uri de LPV-uri.
n ciuda migrrii spre afiajele grafice i a interaciunilor incluse n LPV-uri, un studiu al domeniului arat
c nu se justific, nc, excluderea n totalitate a textului. n timp ce multe LPV-uri pot reprezenta toate
aspectele unui program n mod vizual, aceste programe sunt, n general, mai greu de citit i de folosit
dect cele care folosesc text pentru etichete i anumite operaii atomice. Spre exemplu, dei o operaie
precum adunarea poate fi reprezentat grafic n LPV-uri, fcnd acest lucru se poate ncrca foarte mult
afiajul. Pe de alt parte, folosind text pentru a reprezenta o astfel de operaie atomic se obine un
afiaj mult mai simplu, fr a pierde metafora vizual global.
n condiiile n care grafica computerizat, att hardware, ct i software, continu s-i mbunteasc
performana i s-i scad preul, LPV-uri tridimensionale, precum Cube, atrag atenia comunitii de
cercettori. LPV-urile 3D nu doar rezolv problema includerii unei cantiti mari de informaii pe un
ecran destul de mic, ci i exemplific sinergia inerent dintre limbajele de programare, grafica pe calcu-
lator i interfeele om-calculator, ceea ce a fost o marc a programrii vizuale nc de la nceputurile sale.
Programare Vizual i Modelare
Pagina 28
2 Modelare cu reele Petri (19)
2.1 Introducere
Creterea n complexitate a sistemelor industriale moderne, precum producia, controlul procesului,
sisteme de comunicaii etc., a indus apariia a numeroase probleme privind dezvoltarea acestora. n faza
de planificare apare confruntarea cu capabilitile crescute ale acestor sisteme, datorit combinaiilor
unice de hardware i software care opereaz sub un numr mare de constrngeri ce rezult din resurse-
le limitate ale sistemului. n condiiile naturii complexe i intensive a capitalului sistemelor moderne
industriale, designul i operarea acestora necesit modelare i analiz pentru selectarea alternativei
optime de design i a politicii de operare. Este binecunoscut faptul c fluxul n procesul de modelare
poate contribui substanial la timpul i costul de dezvoltare. Chiar i eficiena operaional poate fi afec-
tat. Din acest motiv, o atenie special trebuie acordat corectitudinii modelor care sunt folosite la
toate nivelurile de planificare.
Ca unelte grafice i matematice, reelele Petri asigur un mediu uniform pentru modelare, analiz for-
mal i design al sistemelor cu evenimente discrete. Unul dintre principalele avantaje al folosirii reelelor
Petri l constituie faptul c acelai model este folosit att pentru analiza proprietilor comportamentale
i evaluarea performanelor, ct i pentru construcia sistematic a simulatoarelor i controlerelor cu
evenimente discrete. Reelele Petri au fost numite dup Carl A. Petri, care a creat n 1962 o unealt ma-
tematic sub form de reea pentru studiul comunicrii cu automatele. Dezvoltarea lor ulterioar a fost
uurat de faptul c reelele Petri pot fi folosite pentru modelarea unor proprieti precum sincroniza-
rea proceselor, evenimente asincrone, operaii concurente, rezolvarea conflictelor sau partajarea resur-
selor. Aceste proprieti caracterizeaz sistemele cu evenimente discrete care includ sistemele automa-
te industriale, sistemele de comunicare i sistemele bazate pe calculator. Toate acestea transform ree-
lele Petri ntr-o unealt promitoare i o tehnologie pentru aplicaii n automatizri industriale.
Ca unealt grafic, reelele Petri asigur un puternic mediu de comunicare ntre utilizator (de regul,
inginer) i client. Cerinele complexe din caietele de sarcini pot fi reprezentate grafic folosind reele Petri
n locul unor descrieri textuale ambigue sau al unor notaii matematice dificil de neles de ctre client.
Acest aspect, combinat cu existena unor unelte computerizate care permit simularea grafic interactiv
a reelelor Petri, asigur inginerilor de dezvoltare o unealt puternic ce s i asiste n procesul de dez-
voltare al sistemelor complexe.
Ca unealt matematic, un model de reea Petri poate fi descris de un set de ecuaii lineare algebrice
sau de alte modele matematice care s reflecte comportamentul sistemului. Acest lucru permite o veri-
ficare formal a proprietilor asociate comportamentului sistemului vizat (relaii de preceden ntre
evenimente, operaii concurente, sincronizrile necesare, eliminarea situaiilor de blocare (deadlock),
activitile repetitive i excluderile mutuale ale resurselor partajate, pentru a aminti cteva dintre ele).
Validarea modelului prin simulare poate doar produce un set limitat de stri ale sistemului modelat, i
astfel poate arta doar prezena (nu i absena) erorilor din model i specificaiile sale de baz. Abilita-
tea reelelor Petri de a verifica formal modelul este important n mod special pentru sistemele n timp
Programare Vizual i Modelare
Pagina 29
real critice din punct de vedere al securitii, precum sistemele de control al traficului aerian, sistemele
de control al traficului feroviar, sistemele de control al reactoarelor nucleare etc. Reelele Petri au fost
folosite pentru modelarea sistemelor de timp real tolerante la defectare i critice din punct de vedere al
securitii, pentru detectarea erorilor i pentru monitorizarea proceselor.
Un domeniu de succes de aplicare al reelelor Petri l constituie modelarea i analiza protocoalelor de
comunicare (nc de la nceputul anilor 70). n ultimii ani au fost propuse cteva abordri care permit
construirea modelelor de reele Petri pentru protocoale din specificaiile scrise ntr-un limbaj relativ
nespecializat.
Reele Petri, ns, au fost folosite n mod extensiv pentru modelarea i analiza sistemelor de producie.
n acest domeniu, reeaua Petri reprezenta linii de producie cu buffer-e, sisteme automate de producie,
sisteme flexibile de producie, linii automate de asamblare, sisteme cu partajarea resurselor i, recent,
sisteme de producie de tip just-in-time.
Un alt domeniu de succes l constituie aplicarea reelelor Petri n modelarea controlerelor secveniale.
Controlerele logice programabile (PLC) sunt folosite n mod uzual pentru controlul secvenial al sisteme-
lor automate. Ele sunt proiectate folosind diagrame logice scar (ladder logic diagrams), care sunt cu-
noscute ca fiind dificile de depanat i modificat. Controlerele secveniale bazare pe reele Petri, pe de
alt parte, sunt uor de proiectat, implementat i ntreinut. La nceputul anilor 80, Hitachi Ltd. a dezvol-
tat un controler secvenial bazat pe reele Petri care a fost folosit cu succes n aplicaii reale pentru con-
trolul sistemului de asamblare a pieselor i n sistemul automat de ncrcare/descrcare din depozit.
Utilizatorii reelelor Petri, conform statisticilor, au redus substanial timpul de dezvoltare, n comparaie
cu metodele tradiionale.
Reele Petri au fost folosite extensiv i n dezvoltri software. Utilizarea n acest domeniu s-a concentrat
pe modelarea i analiza sistemelor software, iar cea mai complex dezvoltare a implicat folosirea reele-
lor Petri colorate. S-a demonstrat c acest tip de reele Petri este un limbaj folositor pentru proiectarea,
specificarea, simularea, validarea i implementarea sistemelor software complexe.
Ca unealt matematic, reelele Petri permit evaluarea performanelor sistemelor modelate. Perfor-
manele deterministe i stocastice pot fi msurate i evaluate folosind o gam larg de modele de reele
Petri care ncorporeaz n definiia lor funcii de timp determinist i/sau probabilistic. Evaluarea perfor-
manelor poate fi realizat fie prin tehnici analitice, bazate pe rezolvarea proceselor (semi)Markov de
baz, sau prin simularea cu evenimente discrete. Folosirea modelelor care ncorporeaz funcii de timp
cu distribuie probabilistic permit obinerea ratelor de producie pentru modelele sistemelor de fabri-
caie, capacitatea de producie, ntrzieri, capacitatea pentru comunicare i modelele sistemelor cu mi-
croprocesor, utilizarea resurselor critice i msuri de fiabilizare ale acestora. n ultimii ani, aceast clas
de reele Petri a fost folosit extensiv pentru modelarea i studiul performanelor analitice ale sisteme-
lor multiprocesor, ale magistralelor sistemelor multiprocesor, ale canalelor de comunicare DSP, ale arhi-
tecturilor paralele de calculatoare, precum i ale algoritmilor paraleli i distribuii.
Un alt domeniu de aplicare l constituie reelele de comunicare. S-a lucrat pe reele locale cu fibr optic
(Fiber Optics Local Area Networks) precum Expressnet, Fastnet, D-Net, U-Net, Token Ring. Protocoalele
Programare Vizual i Modelare
Pagina 30
de tip fieldbuss, precum FIP i ISA-SP50 au atras foarte mult atenie n ultimii ani, acest lucru fiind oare-
cum normal, ele fiind reele importante pentru sistemele industriale complexe. De asemenea, s-a sem-
nalat un interes n cretere pentru modelarea i evaluarea reelelor de mare vitez (High Speed
Networks), cruciale pentru dezvoltarea cu succes a sistemelor multimedia.
Reelele Petri cu extindere de timp, combinate cu tehnici euristice de cutare, au fost folosite pentru
modelarea i studiul problemelor de dispecerizare din sistemele de fabricaie i din sistemele cu roboi.
De asemenea, acest tip de reele Petri au fost folosite i pentru modelarea i analiza proceselor chimice
continue.
2.2 Descrierea reelelor Petri
O reea Petri poate fi identificat cu un tip particular de grafuri orientate bipartite populate cu trei tipuri
de obiecte. Aceste obiecte sunt locuri, tranziii i arce orientate care conecteaz locuri cu tranziii sau
tranziii cu locuri. Din punct de vedere grafic, locurile sunt reprezentate prin cercuri iar tranziiile prin
bare sau dreptunghiuri. Un loc este intrare pentru o tranziie dac exist un arc orientat de la acel loc la
tranziie. Un loc este ieire pentru o tranziie dac exist un arc orientat de la tranziie la loc. n forma sa
cea mai simpl, o reea Petri poate fi reprezentat printr-o tranziie mpreun cu locurile sale de intrare
i de ieire. Aceast reea elementar poate fi folosit pentru reprezentarea unor aspecte diverse ale
sistemelor modelate. Spre exemplu, locurile de intrare (ieire) pot reprezenta precondiii (postcondiii),
iar tranziiile evenimente. Locurile de intrare pot semnifica disponibilitatea resurselor, tranziia
utilizarea lor, iar locurile de ieire eliberarea resurselor. Un exemplu de reea Petri este prezentat n
Fig. 1.24. Aceast reea este format din cinci locuri, reprezentate prin cercuri, patru tranziii, reprezen-
tate prin bare i arce orientate ce conecteaz locurile cu tranziiile i tranziiile cu locurile. n reea, locul
p1 este intrare pentru tranziia t1, iar locurile p2, i p3 sunt ieiri pentru tranziia t1.
Fig. 1.24 Exemplu de reprezentare grafic a unei reele Petri
Pentru a studia comportamentul dinamic al sistemului modelat, adic strile acestuia i modificrile lor,
fiecare loc poate deine niciunul sau un numr pozitiv de jetoane, reprezentate grafic prin mici cercuri
Programare Vizual i Modelare
Pagina 31
solide, aa ca n Fig. 1.24. Prezena sau absena unui jeton dintr-un loc poate indica faptul c o condiie
asociat cu acel loc este adevrat sau fals. Pentru un loc care reprezint disponibilitatea unor resurse,
numrul de jetoane n loc indic numrul resurselor disponibile. La un anumit moment dat de timp, dis-
tribuia jetoanelor n locuri, denumit marcajul reelei Petri, definete starea curent a sistemului mode-
lat. Marcajul unei reele Petri cu m locuri este reprezentat de un vector M cu dimensiunea (m x 1), ale
crui elemente, notate M(p), sunt numere ntregi pozitive reprezentnd numrul de jetoane n locurile
corespunztoare. O reea Petri ce conine jetoane se numete reea marcat. Spre exemplu, n modelul
de reea Petri din Fig. 1.24, M = (1,0,0,0,0)T.
Formal, o reea Petri poate fi definit astfel:
RP = (P, T, I, 0, Mo); unde
1) P = {p1, p2, pm} este un set finit de locuri,
2) T = { t1, t2, tm } este un set finit de tranziii, , i 0,
3) : ( ) este o funcie de intrare care definete arcele orientate de la locuri la tranzi-
ii, unde N este un set de ntregi pozitivi,
4) : ( ) este o funcie de ieire care definete arcele orientate de la tranziii la locuri
i
5) : este marcajul iniial.
Dac I(p, t) = k (O(p, t) = k), atunci exist k arce orientate (paralele) conectnd locul p cu tranziia t (tran-
ziia t cu locul p). Dac I(p, t) = 0 (O(p, t) = 0), atunci nu exist niciun arc orientat care s conecteze p cu t
(t cu p). Frecvent, n reprezentarea grafic, arcele paralele care conecteaz un loc (tranziie) cu o tranzi-
ie (loc) sunt reprezentate printr-un singur arc etichetat cu multiplicitatea sa, sau ponderea k. Aceast
reprezentare compact a arcelor multiple este reprezentat n Fig. 1.25.
Fig. 1.25 (a) Arce multiple. (b) Reprezentare compact a arcelor multiple.
Modificnd distribuia jetoanelor n locuri, lucru care poate reflecta apariia unor evenimente sau execu-
ia unor operaii, se poate studia comportamentul dinamic al sistemului modelat. Urmtoarele reguli
sunt folosite pentru controlul fluxului de jetoane:
Regula de activare. O tranziie t se spune c este activat dac fiecare loc de intrare p al lui I conine cel
puin numrul de jetoane egal cu ponderea arcelor orientate ce conecteaz p cu t.
Regula de execuie:
Programare Vizual i Modelare
Pagina 32
(a) O tranziie activat t poate sau nu s fie executat dependent de interpretarea adiional asoci-
at i
(b) Execuia unei tranziii activate t nltur din fiecare loc de intrare p un numr de jetoane egal cu
ponderea arcului orientat care conecteaz p cu t. De asemenea, depoziteaz n fiecare loc de ie-
ire p un numr de jetoane egal cu ponderea arcului direcional care conecteaz t cu p.
Fig. 1.26 (a) Tranziia t1 activat. (b) Tranziia activat t1 este executat
Regulile de activare i de execuie sunt ilustrate n Fig. 1.26. n Fig. 1.26 (a), tranziia t1 este activat
deoarece locul de intrare p1 al tranziiei t1 conine dou jetoane i I(p1, t1) = 2. Execuia tranziiei activate
t1 nltur din locul de intrare p1 dou jetoane, deoarece I(p1, t1) = 2, i depoziteaz un jeton n locul de
ieire p3, O(p3, t1) = 1 i dou jetoane n locul de ieire p2, O(p2, t1) = 2. Toate acestea sunt reliefate n Fig.
1.26 (b).
Fig. 1.27 Reea Petri cu un arc inhibitor
Puterea de modelare a reelelor Petri poate fi crescut prin adugarea abilitii de testabilitate zero,