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 ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
atunci o <strong>si</strong>gura substare a sa poate fi activa la un moment dat. În cazul <strong>concurentei</strong><br />
vor fi active toate subregiunile starii compuse.<br />
În diagramele <strong>de</strong> stari din UML exista trei modalitati prin care o sub-stare<br />
<strong>de</strong>vine activa <strong>în</strong> cazul unei tranzitii <strong>în</strong>tr-o stare compusa: implicit, explicit <strong>si</strong> prin<br />
intermediul pseudostarii istoric. În figura 4.10 sunt reprezentate grafic toate aceste<br />
cazuri, cu remarca suplimentara ca <strong>în</strong> cazul <strong>în</strong> care sub-starile sunt la rândul lor stari<br />
compuse, activarea se va face analog recur<strong>si</strong>v. Indiferent <strong>de</strong> modalitatea <strong>în</strong> care se<br />
realizeaza tranzitia <strong>în</strong> cadrul unei stari compuse se va executa secventa <strong>de</strong> actiuni<br />
entry() specificata pentru aceasta stare. Un caz <strong>de</strong>osebit este cel <strong>în</strong> care starea<br />
compusa contine mai multe componente concurente (ortogonale). În acest caz se va<br />
utiliza o tranzitie complexa cu ajutorul pseudostarii fork, <strong>si</strong> fiecare regiune<br />
(componenta) concurenta <strong>în</strong> care va intra o astfel <strong>de</strong> tranzitie va activa o substare a sa<br />
dupa mo<strong>de</strong>lul starilor compuse prezentat anterior. Pentru regiunile <strong>în</strong> care nu intra<br />
nici o tranzitie se va activa starea implicita (care este <strong>de</strong>stinatie a unei tranzitii<br />
initiale).<br />
Se <strong>de</strong>fineste tranzitia <strong>de</strong> terminare ca fiind o tranzitie a carei sursa este o stare<br />
<strong>si</strong>mpla sau stare compusa <strong>si</strong> care este neetichetata. O astfel <strong>de</strong> tranzitie este activata<br />
atunci când starea sursa a atins o stare finala. De asemenea, se <strong>de</strong>fineste termenul <strong>de</strong><br />
tranzitie <strong>de</strong> nivel <strong>în</strong>alt ca fiind acea tranzitie a carei sursa este o stare compusa.<br />
neetichetate:<br />
Sun mai multe cazuri distincte <strong>în</strong> care putem avea <strong>în</strong>tr-un mo<strong>de</strong>l tranzitii<br />
- tranzitii din stari initiale care nu apartin starii compuse <strong>de</strong> la nivelul unu<br />
(optional poate apare ca eticheta o expre<strong>si</strong>e booleana),<br />
- tranzitii <strong>de</strong> terminare,<br />
- tranzitii spre stari finale aflate <strong>în</strong> cadrul starii compuse <strong>de</strong> nivel unu care<br />
sugereaza <strong>si</strong>mpla distrugere a obiectului prin apelul <strong>de</strong>structorului<br />
(optional – pot apare ca etichete nume <strong>de</strong> evenimente care <strong>de</strong>termina<br />
distrugerea obiectului),<br />
- tranzitii care ies din pseudostarile istoric <strong>si</strong> fork <strong>si</strong> care intra <strong>în</strong><br />
pseudostarea join.<br />
Ie<strong>si</strong>rea din cadrul unei stari compuse este tratata foarte pe scurt <strong>în</strong><br />
documentatia UML, nein<strong>si</strong>stându-se prea mult cu explicatii pe marginea tranzitiilor <strong>de</strong><br />
terminare.<br />
107