18.04.2013 Views

Tehnici de implementare a concurentei în analiza si proiectarea ...

Tehnici de implementare a concurentei în analiza si proiectarea ...

Tehnici de implementare a concurentei în analiza si proiectarea ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UML (Unified Mo<strong>de</strong>ling Language). UML este un limbaj <strong>de</strong> mo<strong>de</strong>lare <strong>de</strong> generatia<br />

a treia care <strong>de</strong>fineste semanticile metamo<strong>de</strong>lului obiect <strong>si</strong> furnizeaza o notatie grafica<br />

pentru specificarea structurii <strong>si</strong> a comportamentului obiectelor.<br />

UML este un limbaj executabil, facând po<strong>si</strong>bila generarea automata <strong>de</strong> <strong>si</strong>steme<br />

executabile pe baza mo<strong>de</strong>lelor realizate. Executabilitatea reprezinta o trasatura<br />

importanta a unui limbaj <strong>de</strong>oarece contribuie la reducerea efortului <strong>de</strong> translatare a<br />

mo<strong>de</strong>lelor abstracte <strong>în</strong> cod sursa, permite parcurgerea rapida a "distantei" dintre<br />

mo<strong>de</strong>larea unui concept <strong>si</strong> validarea acestuia <strong>si</strong> <strong>în</strong>curajeazeaza explorarea spatiului<br />

solutiilor unei anumite probleme.<br />

În UML diagramele <strong>de</strong> tranzitie a starilor sunt utilizate pentru mo<strong>de</strong>larea<br />

comportamentului atât a claselor cât <strong>si</strong> a activitatilor [OMG99], [DOU99]. În cele ce<br />

urmeaza vom con<strong>si</strong><strong>de</strong>ra tratarea acestora numai din perspectiva claselor in<strong>si</strong>stând <strong>în</strong><br />

special pe aspectele legate <strong>de</strong> concurenta. În UML clasele pot fi asociate cu una sau<br />

mai multe diagrame <strong>de</strong> tranzitie a starilor. În documentatia UML se arata ca <strong>în</strong><br />

majoritatea cazurilor va fi suficienta specificarea unei <strong>si</strong>ngure ma<strong>si</strong>ni <strong>de</strong> stari pentru<br />

<strong>de</strong>scrierea comportamentului unei clase (sau, mai general, al unui element din<br />

mo<strong>de</strong>lul intern) fara a se preciza care ar fi cazurile <strong>în</strong> care este benefica specificarea<br />

mai multor astfel <strong>de</strong> ma<strong>si</strong>ni (probabil ca <strong>în</strong>tr-o faza timpurie <strong>de</strong> <strong>analiza</strong>, când <strong>de</strong>cizia<br />

stabilirii unui anumit mo<strong>de</strong>l este amânata).<br />

Un eveniment general este <strong>de</strong>scris <strong>în</strong> UML ca reprezentând specificarea unui<br />

“inci<strong>de</strong>nt” semnificativ care poate fi localizat <strong>în</strong> timp <strong>si</strong> spatiu. Fiecare tranzitie are<br />

asociat un eveniment care o <strong>de</strong>clanseaza. Declansarea unei tranzitii implica<br />

executarea unei anumite operatii <strong>de</strong>finite la nivelul clasei mo<strong>de</strong>late care trateaza<br />

evenimentul receptionat.<br />

Alaturi <strong>de</strong> pseudostarile <strong>de</strong> ie<strong>si</strong>re, <strong>de</strong> intrare <strong>si</strong> istoric, UML mai introduce alte<br />

trei pseudostari fara semnificatie semantica, având ca rol cresterea lizibilitatii<br />

diagramei: starile ramificatie (branch - pentru reprezentarea a doua sau mai multe<br />

tranzitii dintr-o stare sursa comuna, <strong>de</strong>clansate <strong>de</strong> acela<strong>si</strong> eveniment, dar cu garzi<br />

diferite), fork <strong>si</strong> join (pentru tranzitii <strong>în</strong> <strong>si</strong> din stari aflate <strong>în</strong> componente ortogonale) -<br />

figura 4.8. De asemenea pseudostarile istoric au doua variante: superficiale <strong>si</strong><br />

profun<strong>de</strong>. Pseudostarile istoric profun<strong>de</strong> activeaza recur<strong>si</strong>v ultima substare activata a<br />

ultimei stari compuse active.<br />

103

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!