Diagrama masinilor de stare

Diagrama maşinilor de stare numită şi diagrama de stare modelează comportamentul dinamic al unei entităţi pe baza modului în care aceasta răspunde la evenimente. Specifică secvenţa de stări prin care o entitate trece pe parcursul ciclului de viaţă.

Diagramele maşinilor de stare sunt utilizate pentru descrierea comportamentului complex al sistemelor, actorilor, sub-sistemelor şi obiectelor.

Principalele componente ale unei diagrame de stare sunt:

FIGURA 1

În figura de mai sus este exemplificată diagrama de stare pentru descrierea procesului de retragere şi depozitare de numerar la un bancomat. La o stare pot fi asociate una sau mai multe acţiuni reprezentând invocare unor metode. De exemplu în cazul stării Authentication au fost ataşate trei acţiuni. Invocările de metode se pot efectua la intrarea în starea (numele metodei este precedat de notaţia /entry), în momentul în care componenta se află în starea respectivă (numele metodei este precedat de notaţia /do) şi la ieşirea din starea respectivă (numele metodei este precedat de notaţia /exit).

Nu este necesar ca o tranziţie să fie însoţită de toate condiţiile de execuţie. Tranziţiile pot fi marcate doar de evenimentul care determină execuţia tranziţiei sau de condiţia care determină execuţia tranziţiei, eventual însoţite de acţiunea invocată în momentul execuţiei.

FIGURA 2

Pentru descrierea proceselor complexe diagrama de stare permite modelarea de stări compozite care pot fi descompuse la rândul lor în diagrame de stări. În figura 2 este exemplificată o diagrama de stare ce conţine o stare compozită. Stările compozite pot fi reprezentate în cadrul unei diagrame şi în formă condensată (vezi starea SubmachineState2), şi apoi această să fie detaliată într-o diagramă separată.

O proprietate importantă a stărilor complexe este aceea că acestea pot fi partajate în regiuni, permiţând astfel definirea concurenţei prin intermediul diagramelor de stare. În figura 3 este exemplificată o diagramă de stare cu două regiuni concurente.

FIGURA 3

În figura 4 este exemplificată folosirea stărilor compuse şi a pseudo-stărilor exit şi history pentru a descrie modul în care un fir îşi poate întrerupe activitatea şi revine apoi la starea de unde acesta a fost întrerupt.

FIGURA 4

În cadrul diagramei de mai sus la părăsirea stării compuse CurrentThread, starea curentă este salvată folosind pseudo-starea history, astfel încât la revenirea în starea compusă se va reveni la starea din care s-a produs ieşirea (fie starea S2 fie starea S3).

FIGURA 5

În figura 5 este exemplificată folosirea stărilor de joncţiune şi de selecţie. Pseudo-starea selecţie modelează executarea unei tranziţii sau a altei tranziţii în funcţie de o condiţie.