39
MODELUL MASINII DE STARE 1.INTRODUCERE In primele doua parti ale acestui raport am clarificat faptul ca un model sistem este proiectat sa fie central si fundamental definitiei formale a semanticilor UML-ului. In termenii nostri, semanticile reprezinta “intelesul” modelului UML, indiferent daca acesta este un model structural sau comportamental. Aceasta este a treia parte a modelului sistem, anume “ partea masinii de stare”.Prima parte a modelului sistem, anume “partea statica” defineste modul in care sunt construite si structurate stocurile de date. Partea a doua, numita “partea de control”, defineste modul in care este codificata intr-un obiect si la nivelul mesajelor informatia necesara definirii interactiunii dintre obiecte. Partea a doua descrie notiunile generale de mesaj si eveniment, care furnizeaza forme variate ale interactiunii, incluzind trecerea mesajelor asincrone, apelarea metodelor si retururile. Mai mult, partea a doua defineste notiunea de legaturi concurente si aplica aceste legaturi intr-o imagine descentralizata, unde “legaturi inseminate “ sunt conectate intre obiecte pentru a modela formele variate de apelare a metodelor. Aceste definitii ne permit sa codificam modelele ordinare de programare 1

Modelul Masinii de Stare 1

Embed Size (px)

DESCRIPTION

ffg

Citation preview

Page 1: Modelul Masinii de Stare 1

MODELUL MASINII DE STARE

1. INTRODUCERE

In primele doua parti ale acestui raport am clarificat faptul ca un model sistem este proiectat sa fie central si fundamental definitiei formale a semanticilor UML-ului. In termenii nostri, semanticile reprezinta “intelesul” modelului UML, indiferent daca acesta este un model structural sau comportamental.

Aceasta este a treia parte a modelului sistem, anume “ partea masinii de stare”.Prima parte a modelului sistem, anume “partea statica” defineste modul in care sunt construite si structurate stocurile de date.

Partea a doua, numita “partea de control”, defineste modul in care este codificata intr-un obiect si la nivelul mesajelor informatia necesara definirii interactiunii dintre obiecte. Partea a doua descrie notiunile generale de mesaj si eveniment, care furnizeaza forme variate ale interactiunii, incluzind trecerea mesajelor asincrone, apelarea metodelor si retururile. Mai mult, partea a doua defineste notiunea de legaturi concurente si aplica aceste legaturi intr-o imagine descentralizata, unde “legaturi inseminate “ sunt conectate intre obiecte pentru a modela formele variate de apelare a metodelor. Aceste definitii ne permit sa codificam modelele ordinare de programare secventiala, ca cele utilizate in Java si C++, ca si notiunile de obiecte active, legaturi dinamice, etc.

Totusi, repetam cu succes principalele concepte din primele doua parti: un stoc de date consta dintr-o multime de obiecte, fiecare echipat cu un unic identificator de obiect. Un identificator actioneaza, printre altele , ca o referinta pentru locatiile (atributele ) obiectului. Stocul contine si o aplicatie de la locatii la valori, introdusa in stoc la un anumit moment. Identificatorii obiectelor si locatiile sunt valori ordinare si astfel pot sa fie stocate si inconjurate. Valorile sunt , de exemplu, numere intregi sau Booleane.

Stocul de control cuprinde o gramada(colectie, stiva) pentru fiecare legatura in sistem , ca si un stoc de evenimente care permite obiectelor sa administreze

1

Page 2: Modelul Masinii de Stare 1

evenimentele care trebuiesc manevrate. Pot fi definite variate strategii de planificare , mai degraba libere, care intirzie, ignora sau minuiesc mesajele primite in stoc.

Partea a treia a raportului se concentreaza pe interactiunea dintre obiectele individuale dintr-un punct de vedere mult mai abstract, bazat pe stare. Fiecare obiect este descris prin stocurile de date, de control si de evenimente. Semnaturile obiectelor sunt date prin metodele lor si interfetele mesajelor, ca si evenimentele la care reactioneaza un obiect. Aceste concepte constituie baza determinarii spatiului starilor si tranzitiile fiecarui obiect.

Scopul sistemului de tranzitie a starilor (STS) este sa lege spatiul starilor unui sistem obiect cu comportarea sa. In timp ce stocurile descriu caracteristicile structurale si in consecinta spatiul starilor, un sistem de tranzitie a starilor utilizeaza spatiul starilor si descrie comportamentul sub forma reactiilor obiectelor la evenimentele sosite. Astfel sistemul de tranzitie al starilor este alcatuit din spatiul starilor, care este o multime de stari, si o functie de tranzitie a starilor.

O trasatura principal a STS dezvoltata aici este aceea ca el nu descrie comportarea unui singur obiect, ci compozitia grupurilor de obiecte. STS este astfel compositional. Aceasta ne permite sa descriem intreg sistemul ca un STS larg, ca si compunerea privirilor in grupul colaborativ de obiecte, ceea ce da nastere la notiunea de “ componenta”.

In acest raport introducem notiunea generala de sistem de tranzitie a starilor temporizat si il legam de stocul de date, stocul de control si de stocul de evenimente. Ca un rezultat general al acestui raport, avem o descriere completa a modului in care sistemele se descompun in obiecte, ce stari pot sa aiba obiectele si cum interactioneaza obiectele.

Teoria STS este bazata pe teoria legeturilor pentru a descrie comportarea I/O a sistemelor de tranzitie a starilor.

2

Page 3: Modelul Masinii de Stare 1

2. DESCRIEREA OBIECTELOR DE CATRE SISTEMELE DE TRANZITIE A STARILOR

Asa cum am motivat in ultima sectiune, utilizam sistemele de tranzitie a starilor (STS) pentru o teorie modulara a structurii obiectelor, comportarii si interactiunii dintre obiecte. Acestor obiecte li se permite sa actioneze concurent, sa lase sa treaca mesajele asa cum doresc, dar sa si imparta legaturile pentru o paradigma clasica de programare. In aceasta sectiune , punem la un loc toate elementele necesare definirii sistemelor de tranzitie a starilor temporizate(TSTS) in vederea descrierii tuturor partilor relevante ale obiectelor.

3. SEMNATURA MESAJULUI UNUI OBIECT

In modelul sistem sunt acceptate numeroase evenimente. Un eveniment poate sa fie trimiterea sau primirea unui mesaj sau un eveniment intern care corespunde unei anumite schimbari de stare. Exemple tipice de mesaje sunt mesajele de invocare a metodei, mesajele de retur, mesajele comunicarii asincrone, semnale si timeout-uri. Partea a doua defineste universal mesajelor prin UMESSAGE.

Structura mesajelor schimbate intre obiectele claselor este determinata de semnatura obiectelor, care include metodele si parametrii lor. Fiecare mesaj contine identificatorul de obiect al obiectului care a generat mesajul si identificatorul de obiect al obiectului receptor.

Mesajele pe care un obiect o∈UOID le poate accepta si le poate trimite sunt

∙ msgIn(o) ⊆ ℘(UMESSAGE) pentru mesajele intrate si

∙ msgOut(o) ⊆ ℘(UMESSAGE) pentru mesajele iesite

2.2 STAREA OBIECTELOR

Starile unui sistem obiect sunt definita de USTATE. O astfel de stare consta dintr-un stoc de date , un stoc de control si un stoc de evenimente. O stare a unui obiect individual o∈UOID consta din valorile atributelor sale ( stocate in locatii ),

3

Page 4: Modelul Masinii de Stare 1

tamponul de evenimente ce vor fi procesate si o gramada de cadre pentru fiecare legatura activa. Spatiul de stare al lui o∈UOID este dat de o functie states(o):

∙ states(o)⊆℘((ULOC→UVAL)x(UTHREAD→Stack(UFRAME))xBuffer(UVENT))

Intr-o stare data a sistemului obiect (ds,cs,es )∈ USTATE, starea unui obiect o∈UOID este determinata de

∙ state((ds,cs,es),o) = (vals(ds,o), cs(o), es(o)) ∈ states(o)

unde vals este functia definita pe stocurile de date si obiecte care recupereaza aplicarea numelor atributelor pe valori, pentru un obiect dat intr-un stoc de date dat. Extindem notiunea de stare la un grup de obiecte, deoarece aceasta ne permite sa ne ocupam cu compunerea starii si a comportarii:

Definitia spatiului de stare a unui grup de obiecte

∙state:USTATE x ℘(UOID)→(ULOC→UVAL)x(UOID→(UTHREAD→Stack(UFRAME)))

x (UOID→Buffer(UVENT)) , cu

state((ds,cs,es), oids) = (⊕o∈oidsvals(ds,o), cs|oids, es|oids), unde

cs|oids este restrictia lui cs la obiectele din oids⊆℘(UOID) si

es|oids este restrictia lui es la obiectele din oids⊆℘(UOID).

∙ Pentru simplitate identificam state((ds,cs,es), oids)≈ state((ds,cs,es), {oids}), deoarece amindoua sunt izomorfe.

∙ In general state((ds,cs,es), oids) reprezinta produsul starilor obiectului, asa ca sunt de asemenea izomorfe:

⊕o∈oids state((ds,cs,es), o ) ≈ state(u, oids)

∙ Posibilul spatiu de stare al unui grup de obiecte este definit in concordanta prin

States(oids)={ state((ds,cs,es), oids) | (ds,cs,es)∈USTATE}≈⊕o∈oids states(o)

∙ Identificam (pana la un izomorfism ): states(o) ≈ states({o}).

4

Page 5: Modelul Masinii de Stare 1

2.3 CANALELE DE COMUNICARE ASINCRONA TEMPORIZATE

Pentru modelul sistem presupunem existenta unui timp global discret. Fiecarui pas ( tranzitie ) a masinii de stare corespunde un ticait temporal. Un sistem se executa in pasi, fiecare consumind o cantitate fixata de timp. Sistemele de tranzitie a starilor temporizate (TSTS) sunt sisteme de tranzitie care se ocupa cu acest tip de paradigme. TSTS sunt introduse in urmatoarea sectiune. In fiecare pas, este furnizata lui TSTS o multime finita de evenimente de intrare si sunt produse in TSTS o multime finita de evenimente de iesire.

O chestiune cruciala este alegerea celui mai potrivit mecanism de comunicare si interactiune. Doua trasaturi de baza sunt asincrone si sincrone. In anexa , discutam avantajele ambelor abordari si justificam decizia noastra de a folosi a bordarea asincrona. Totusi, ambele abordari se pot modela una pe alta si astfel am codificat apelarile de metoda sincrone intr-un mecanism de trecere a mesajelor asincron. In particular, abordarea noastra bazata pe timp ne permite sa folosim o abstractizare simpla pe scala temporala, pentru a privi comunicatiile ca fiind sincrone.

In modelul sistem obiectul si instantele componentei coopereaza prin trecerea de mesaje asincrone. Invocarea metodei este modelata prin schimbarea a doua mesaje, mesajul de invocare a metodei si mesajul de retur al metodei.

Comunicarea dintre obiecte se realizeaza prin canale. Pe de o parte canalele ne permit sa compunem grupuri de obiecte in unitati mai mari si sa ascundem comunicatiile lor interne. Pe de alta parte, UML-ul furnizeaza constructii lingvistice cum ar fi “fixari”in unele din diagramele sale; aceste fixari seamana cu liniile de comunicare dintre obiecte.

Un canal de comunicare este o conexiune de comunicare unidirectionala dintre doua obiecte ( sau alte entitati de comunicare ). Fiecare canal are un nume , de exemplu c∈UCN si tipul mesajelor care pot circula prin c este dat de type(c). Multimea tuturor obsevatiilor posibile pe un canal c∈UCN este notata cu IH(c) si observatiile pe o multime de canale C⊆ UCN prin IH(C). Fiecare obiect are

5

Page 6: Modelul Masinii de Stare 1

un numar de canale de intrare si de iesire si fiecare mesaj stie prin care canal trece.

Definitia semnaturii canalelor ale obiectelor

∙ UCN reprezinta universul numelor de canale

∙ sender, receiver: UCN → UOID stabilesc pentru fiecare canal un obiect emitator si un obiect receptor.

∙ channel: UMESSAGE → UCN stabileste un canal pentru fiecare mesaj.

∙ inC, outC: UOID → ℘(UCN) reprezinta semnatura canalului fiecarui obiect, definite prin: inC(oid) = {c | receiver(c) = oid }

outC(oid) = {c | sencer (c) = oid }

∙ Mesajele care trec prin canale apartin:

sender(m) = oid ⇒ sender( channel(m)) = oid

receiver(m) = oid ⇒ receiver(channel(m)) = oid

pentru fiecare m∈UMESSAGE, oid∈ UOID.

∙ Tipul fiecarui canal c∈ UCN este dat de

type(c) = {m∈ UMESSAGE | channel(m) = c }

Existenta functiilor de trimitere si de receptare are un impact interesant. Fiecare mesaj stie prin ce canal trece si din care obiect pleaca. Aceasta ne permite sa concluzionam ca fiecare canal poate sa fie in semnatura de iesire a numai unui obiect:

∀a,b∈ UOID: a≠b ⇒ outC(a) ∩ outC(b) = ∅

In modelul sistem presupunem o impartire suficient de fina a timpului, adica atat de fina incat iesirea intr-un pas nu depinde de intrarea receptionata in acel pas. Se presupune o puternica cauzalitate intre intrare si iesire. Compunerea masinilor de stare este mult simplificata, deoarece feedback-ul printr-o unitate de

6

Page 7: Modelul Masinii de Stare 1

timp este exclus si astfel sunt eliminate inconsistentele cauzale. Suntem capabili sa abstractizam in continuare de la punctul actual de timp( timp real) al evenimentelor.

Cele prezentate mai sus reprezinta un concept foarte flexibil de sistem, incluzind sistemele secventiale clasice ( in acest caz exista numai un singur canal de intrare si de iesire). De exemplu, putem restrictiona evenimentele de intrare si iesire in asa fel incat, in fiecare pas, este receptionat cel mult un eveniment de intrare sau este expediat un eveniment de iesire. La cealalta extrema putem modela sistemele cu inalta concurenta, cu un numar mare de evenimente de intrare si de iesire, intr-un pas de tranzitie a starilor.

2.4 SISTEME DE TRANZITIE A STARILOR

Un sistem de tranzitie a starilor temporizat (TSTS) este dat printr-o functie de tranzitie a starilor cu intrare si iesire (un automat Moore generalizat ). Astfel fiecatre obiect o∈UOID poate sa fie descris printr-o functie de tranzitie a starilor nedeterminista ∆.o de forma:

∆:UOID→(USTATE x (UCN→UMESSAGE*))→℘(USTATE x(UCN→UMESSAGE*))

Mai précis ∆.o este o functie de forma

∆.o: (states(o) x T(inC(o))) → ℘(states(o) x T(outC(o)))

unde T(C) reprezinta multimea feliilor de timp de canal, pentru canalele din C.

Presupunem ca functia de tranzitie a starilor descrie comportarea unei masini Moore. Iesirea intr-o multime depinde numai de stare, nu si de intrare. Proprietatea este capturata prin urmatoarea regula:

(σ’,y)∈∆.o(σ,x) ⇒∀ x’:∃σ’’:(σ’’,y)∈∆.o(σ,x’)

Regula ne arata ca daca o iesire y este posibila pentru o anumita stare σ si o anumita intrare x, atunci aceasta iesire este posibila, de asemenea, in aceasta stare pentru toate celelalte intrari. O cale de interpretare a acestei reguli este aceea ca divizarea timpului este suficient de fina pentru a descrie schimbarile starii intr-un mod atat de detaliat incat reactia la intrare este intotdeauna aminata

7

Page 8: Modelul Masinii de Stare 1

cel putin o unitate de timp ( un pas de tranzitie a starii ). O consecinta imediata este aceea ca ciclurile de feedback includ un pas de timp si astfel conserva cauzalitatea. Alta consecinta este aceea ca iesirea unei tranzitii este independenta de intrarea in aceasta tranzitie si astfel,este inevitabila stocarea imediata pentru iesire in spatiul starilor unui obiect descris.

Mai mult, cerem functiei de tranzitie a starilor sa fie “ totala “( numita de asemenea permeabila la intrare ). Aceasta inseamna ca ∆ are de furnizat o reactie la orice sir posibil de intrari, in orice stare:

∆.o(σ,i) ≠∅ pentru orice σ ∈ states(o), i ∈ T(inC(o))

Aceasta proprietate arata ca sistemul UML reactioneaza intr-un mod specific la fiecare intrare in multimea sa de modele de intrare.

Un sistem de tranzitie a starilor temporizat (TSTS) este definit astfel:

Definitia sistemului de tranzitie a starilor temporizat (TSTS) pentru un obiect

Un sistem de tranzitie a starilor temporizat (TSTS) pentru un obiect o∈ UOID este definit prin

∙ tsts(o) = (states(o), ∆.o, inC(o), outC(o), init(o))

Unde init(o) ⊆ states(o) este o multime nevida de stari initiale si functia de tranzitie a starilor ∆.o este descrisa in continuare:

∘ ∆.o: states(o) x T(inC(o)) → ℘(states(o) x T(outC(o)))

∘ (σ’,y)∈∆.o(σ,x) ⇒∀ x’:∃σ’’:(σ’’,y)∈∆.o(σ,x’)

∘ ∆.o(σ,i) ≠∅ pentru orice σ ∈ states(o), i ∈ T(inC(o))

Observam ca fiecare obiect o are exact un singur sistem de tranzitie a starilor temporizat tsts(o).Totusi,cum tsts(o) este o masina de stare nedeterminista, ea recunoaste toate formele de subspecificare. Deci, nu este necesar sa adaugam un concept aditional de subspecificare prin atribuirea fiecarui obiect a unei multimi de posibile TSTS. Orice model UML, totusi, poate avea un impact pe elementele unui sistem de tranzitie a starilor temporizat. De exemplu,

8

Page 9: Modelul Masinii de Stare 1

multimile de stari imbogatibile poate sa fie constrinsa, restrictionind starile initiale sa fie o multime cu un element, sau reducand nedeterminismul prin fortarea comportamentului care este determinist in reactie si timp.

3 COMPORTAMENTUL SI COMPUNEREA

Date sisteme de tranzitie a starilor pentru un obiect individual , suntem interesati acum in descrierea intregului sistem. In particular, suntem interesati in ultimile doua viziuni ale sistemului si componentelor sale, anume viziunea bazata pe tranzitia starilor( definita anterior ) si viziunea comportamentala (definita in anexa).

Ambele viziuni, bazata pe stare si comportamentala, sunt compozitionale si compunerea lor este mereu complet compatibila. Urmatoarea propritate reprezinta rezultatul principal al sectiunii. Pentru orice multime de obiecte oids⊆UOID, au loc urmatoarele:

B[ ⊕o∈oids tsts(o)] = ⊕o∈oids B[ tsts(o) ]

unde B este o functie de interfata care abstractizeaza mai departe din starea incapsulata locala, asa cum va fi definit in continuare. Abstractizarea compunerii obiectelor este compunerea abstractizarii obiectelor.

3.1 COMPUNEREA SISTEMELOR DE TRANZITIE A STARILORIn aceasta sectiune introducem un mecanism de compunere pentru masinile

de stare, analog compunerii comportarilor( vezi anexa). Fie ok (k=1,2) doua obiecte arbitrare si fie

∆.ok: states(ok) x T(inC(ok)) → ℘(states(ok) x T(outC(ok)))

TSTS-urile corespunzatoare. In acord cu formalismul introdus anterior, multimile de canale de iesire outC(o1) si outC(o2) sunt disjuncte. Acestea nu impune nici o restrictie sistemelor orientate pe obiect, deoarece ambele canale si mesajele care circula prin aceste canale sunt distincte prin obiectul emitator. Definim liniile de feedback in modul urmator:

Emis de 1, consumat de 2 : L1 = inC(o2) ∩ outC(o1)

9

Page 10: Modelul Masinii de Stare 1

Alta cale de intoarcere : L2 = inC(o1) ∩ outC(o2)

Liniile interne de feedback: L = L1 ∪ L2

Intrarea ramasa : I = (inC(o1) ∪ inC(o2))\L

Iesirea ramasa : O = (outC(o1) ∪ outC(o2))\L

Fig. 1 Compunerea TSTS, liniile de intoarcere

Spatiul starilor si sistemul de tranzitie compuse pot fi definite dupa cum urmeaza, utilizind compunerea starilor ale starilor obiectelor({o1,o2}):

∆:(states({o1,o2}) x T(I))→℘(states({o1,o2}) x T(O)) prin

∆((σ1,σ2),x) = {((σ’1,σ’2),z|O) | ∃z∈T(L∪I∪O): z|I = x ∧

(σ’k,z|outC(ok))∈∆k,z|inC(ok)) pentru k = 1,2}

Formula este mereu aplicabila, fiind dat faptul ca iesirile depend numai de stari si in acord cu faptul ca fiecare masina este o masina de tip Moore.

Formula ne arata ca intrarea in masina compusa este scindata in intrarea in prima masina si intrarea in a doua masina. Cu aceasta intrare si cu posibila intrare aditionala din feedback, ambele masini relizeaza tranzitiile lor si produc iesire. Noile stari ale masinilor componente definesc noua stare a masinii compuse; iesirea masinii compuse este construita folosind iesirile masinilor componente.

Observam ca aceasta compunere a masinilor Moore duce la masini Moore.

Pentru compunerea a doua functii de tranzitie scriem ∆ = ∆1⊗∆2

10

Page 11: Modelul Masinii de Stare 1

Compunerea TSTS-urilor este comutativa, adica ∆1⊗∆2 = ∆2⊗∆1. Mai mult, deoarece nu avem canale de intrare, ea este de asemenea si asociativa si poate sa fie generalizata astfel la orice multime finita sau infinita (prin inductie ) de TSTS-uri. Deci definim un TSTS pentru orice multime de obiecte:

Definitia sistemelor de tranzitie a starilor temporizate (TSTS) pentru o multime de obiecte

Un sistem de tranzitie a starilor temporizat (TSTS) pentru o multime de obiecte oids⊆UOID este definit prin:

∙ tsts(oids) = (states(oids),∆(oids),I,O,inits) cu

tranzitiile ∆(oids) = ⊗o∈oids∆(o),

starile initiale inits = ⊗o∈oidsinit(o),

intrarea ramasa I = (∪o∈oids inC(o))\( (∪o∈oids outC(o))

iesirea ramasa O = ((∪o∈oids outC(o))\( (∪o∈oids inC(o))

In particular, avem acum un TSTS pentru intregul sistem care include toate instantierile si toate starile sistemului si astfel este capabil sa descrie orice restrictii comportamentale si structurale prin tsts(UOID).

Observam ca avem acum o ipoteza inchisa lumii: intregul sistem de tranzitie tsts(UOID) nu are canale externe , dar incorporeaza toate “obiectele”. Acestea includ de asemenea obiectele care au conexiuni directe cu interfetele altor sisteme, dispositive mecanice sau utilizatori si astfel pot actiona ca surogate pentru contextul sistemului.

3.2 COMPORTAREA INTERFETEI SI ABSTRACTIZAREA INTERFETEIMasinile de stare furnizeaza un model foarte detaliat pentru sisteme,

deoarece este aratata explicit structura starilor. Totusi, daca o stare este incapsulata, pare mult mai potrivita o reprezentare a comportarii sistemului fara sa se ia in considerare structura starilor. Aceasta este in esenta ceea ce noi numim interfata unui sistem. Abstractizarea interfetei unei masini de stare este facuta explicit in modul urmator:

11

Page 12: Modelul Masinii de Stare 1

Mai intai definim abordarea aplicarii unui TSTS comportarii I/O; vezi anexa. Dat un sistem reprezentat prin TSTS a carei functie de tranzitie este

∆: (STATE x T(I)) →℘(STATE x T(O))

functia de tranzitie a starilor ∆ include in mod natural o functie de comportare I/O: B[∆]: STATE → ( I→℘(O)) , unde C reprezinta multimea de istorii de canale, pentru canalele din C: vezi anexa.

B[∆] furnizeaza abstractizarea interfetei functiei ∆ de tranzitie a starilor. Aceasta abstractizare a interfetei produce o descriere comportamentala care exclude starile interne si pasii tranzitiei, asa incat intreaga comportare devine usor de inteles.

Pentru fiecare stare σ∈STATE, fiecare cale de intrare z∈T(I) si fiecare valuare de canal de intrare x∈ I functia interfata B[∆] este solutia maximala inclusa a ecuatiei recursive

B[∆] (σ).(⟨ z ⟩ˆx) = {⟨ r ⟩ˆy:∃σ’∈STATE:(σ’r)∈∆(σ,z)∧y∈ B[∆](σ’).x}

Observam ca partea dreapta a ecuatiei anterioare este incluziunea monotona in B[∆]. Daca adaugam elemente lui B[∆](σ).x, multimea creste de asemenea. B[∆] este definita recursiv de o functie de incluziune monotona, care este chiar garantata. Deci exista o unica solutie maximala de incluziune. B[∆](σ) defineste comportarea I/O pentru orice stare initiala σ, care reprezinta comportarea componentei descrisa de masina de stare ∆, daca s-a initializat prin starea σ.

Faptul ca TSTS are posibilitatea intrarii si furnizeaza comportamentul unei masini Moore ( reactiile de iesire au cel putin un ticait de intirziere) garanteaza ca B[∆](σ) este o comportare I/O cauzala. B[∆] generalizeaza multimile Init ale starilor initiale aleTSTS:

Definitia comportarii I/O a obiectelor

Comportarea I/O a unui obiect oid∈UOID este definite prin

∙ behavior(oid)∈IH(inC(oid))→℘(IH(outC(oid)))

12

Page 13: Modelul Masinii de Stare 1

∙ behavior(oid) = B[∆](init) unde (S,∆,I,O,init) = tsts(oid)

Comportarea I/O a multimii de obiecte oids⊆OIDeste definite in consecinta prin:

∙ behavior(oids)∈IH(I) → ℘(IH(O))

∙ behavior(oids) = B[∆](init) unde (S,∆,I,O,init) = tsts(oids)

Observam ca behavior(oid) = behavior({oid}). Mai mult, ambele modele si operatorii lor de compunere dau impreuna: B[∆1⊗∆2] = B[∆1]⊗B[∆2]

Relatia ne arata ca: copunind TSTS-urile si derivand abstractizarea sa pe comportarea I/O, obtinem acelasi rezultat daca derivam abstractizarea comportarilor I/O si le compunem.

Avem acum doua modele disponibile pentru sisteme: masinile de stare si comportarile interfetelor, care sunt deplin compatibile.Aceasta este o proprietate importanta a constructiei acestui model sistem, deoarece ea arata ca este posibila aplicarea constructiilor UML-uli atat comportarilor interfetei cat si masinilor de stare.

4 CONCLUZII

In acest raport am introdus a treia parte a modelului sistem, anume notiunea generala de sistem de tranzitie a starilor temporizat si l-am integrat cu stocurile de obiecte, de control si de evenimente. Ca un rezultat general al acestui raport, avem o descriere completa a modului in care sistemele se descompun in obiecte, ce stari pot sa aiba obiectele si cum interactioneaza obiectele. Asa cum am motivat in prima parte a acestui raport, am dezvoltat teoria matematica pe nivele, fiecare construind o algebra care a introdus cateva universe de elemente, functii si legi pentru aceste functii.

Asa cum am motivate in prima parte, am ales aceasta abordare, deoarece ne dorim o semantica care nu este bazata pe alegerea unui limbaj formal sau a unei unelte concrete. Probabil utilizarea teoriilor matematice se bazeaza un pic pe semantici,dar speram ca o face atit de putin cat este posibil. Astfel de bazari se

13

Page 14: Modelul Masinii de Stare 1

strecoara usor. Mai mult nu ne-am adresat executabilitatii, deoarece aceasta include una dintre cele mai mari bazari pe care o putem avea pe un limbaj de modelare. Un model poate sa fie subspecificat, el poate sa fie deschis pentru o specificatie a numeroaselor implementari diferite. O semantica executabila pentru un model UML subspecificat trebuie sa contina in mod necesar alegeri adaugate aplicatiei semantice.

Pentru a preveni aceasta, am ales un stil specific de descriere. Forma descrierii utilizata in aceste trei parti, ne permite sa lasam deschise un numar de definitii. In general, am introdus un univers X si apoi am caracterizat proprietatile elmentelor sale, fara a determina complet cate elemente are X sau cum arata aceste elemente. Uneori, am descries numai o submultime de elemente ale lui X, dar permitind la fel de bine altor tipuri de elemente sa apartina lui X ( de exemplu, universele evenimentelor, mesajelor si valorilor au fost definite in acest mod ).

Aceasta ne da noua si altora multe sanse de a specialize astfel de puncte de variatie in acord cu situatia specifica. In termenii UML-ului, putem defini de exemplu un “profil al modelului sistem”, care specializeaza in sisteme secventiale, cu legaturi unice, ca in Java ( fara sa folosim legaturile ), cu |UTHREAD| = 1, la sisteme statice, fara introducerea de noi obiecte, sau absenta subclaselor, etc.

In timp ce modelul sistem este bazat pe acest tip de sisteme, el nu ne furnizeaza o astfel de specializare direct ; acesta este scopul unei munci urmatoare.

4.1 EXTENSII VIITOARE

De sigur, acest model sistem care poate sa fie privit ca o ierarhie de algebre, poate si probabil va fi extins prin adaugarea unor masinarii functionale in scopul descrierii usoare a aplicarii constructorilor UML-ului modelului sistem. Totusi, dorim sa tinem modelul sistem cat mai simplu posibil si astfel nu ne concentram prea mult asupra masinariei aditionale. Totusi “utilizatorii” modelului sistem sunt invitati sa adauge tot ceea ce ei simt ca este potrivit.

14

Page 15: Modelul Masinii de Stare 1

Exista de asemenea un numar de fisuri care pot fi investigate mai tirziu prin adaugarea masinariei aditionale pentru clarificarea aplicarii conceptelor UML-ului la modelul sistem.

De exemplu, o constringere asupra sistemelor de tranzitie a starilor temporizate, definita anterior, forteaza mesajele primate sa nu poata sa reactioneze direct. Aceasta da sens atit unei priviri de baza, cat si unei priviri a sistemelor reactive. Aceasta duce cu siguranta la o intirziere dintre intrare si reactia la intrare, in tranzitii diferite. Ca o consecinta, sau intrarea sau iesirea necesita sa fie temporar stocate in starea lui TSTS. Astfel, sau stocam iesirea cel putin un pas (sau mai multi ) sau intrarea cel putin un pas, dupa care putem reactiona. Nu avem la dispozitie stocarea iesirilor in starea unui obiect. Este nepotrivit sa introducem o componenta suplimentara care sa actioneze ca un autobus si astfel ne permite sa descriem mesajele intirziate, deoarece ea ar estompa conceptul nostru de compozitie, atat in TSTS, cat si in comportarile I/O. Mai raman urmatoarele posibilitati: (a) stocarea intrarii poate sa fie scindata in “ intrare procesabila” si “ intrare recenta”, unde fiecare tic care soseste muta ultimul in locul primului. (b) permitem startul unui nou mesaj procesat numai dupa ce are loc un tic temporal. In aceasta abordare, fiecare tic este punctul de pornire pentru un tur planificat care decide care mesaj sa fie manevrat in continuare ( chiar si in cazul pur secvential ). (c) ca o rafinare a lui (b), putem folosi ticurile de timp intr-o maniera atat de fina incat sunt posibile numai o “actiune atomica” pe obiect si tic temporal. Aceasta functioneaza frumos, desi se produc o multime de pasi marunti in masinile de stare.

Pot fi adaugate modelului sistem, mai mult sau mai putin direct, un numar de concepte de nivel inalt. Asa cum am demonstrat cu asocierile, care se manifesta ca functii de recuperare pe stocul obiectului, putem adauga o multime de baza de actiuni si activitati sau componente ale acestora ca niste “pivoti” ai diagramelor de activitate, caracteristicilor sau elementelor fluxului de lucru.

15

Page 16: Modelul Masinii de Stare 1

1. 6 APENDIX ( ANEXA )

Modelul central de interactiune: Fluxuri si Componentele procesului de flux

Aceasta sectiune descrie o teorie bine definita, inchisa,despre componentele procesului de flux si sistemele de tranzitie a starilor, care definesc doua puncte de vedere diferite asupra sistemelor distribuite care interactioneaza. Componentele procesului flux si sistemele de tranzitie a starilor sunt amindoua bine relationate prin aplicarea adecvata a functiilor si sunt compatibile cu rafinarile lor si cu tehnicile de compunere.

6.1 TIPURI DE MODELE PENTRU SISTEME INTERACTIVE

Exista un numar de teorii si modele fundamentale diferite de sisteme interactive. Cel mai semnificativ pentru acestea sunt paradigmele lor referitoare la interactiune si compunere. Am identificat trei concepte de comunicare de baza in sistemele distribuite, care interactioneaza prin schimbarea de mesaje:

- Comunicarea asincrona ( mesaje asincrone ): un mesaj este trimis de indata ce emitentul este pregatit, independent de faptul ca receptorul este sau nu este gata sa il primeasca. Mesajul trimis este asezat in tampon ( prin mecanismul comunicarii ) si poate sa fie acceptat de receptor la orice moment mai tarziu; daca un receptor vrea sa primeasca un mesaj, dar nu a fost trimis nici un mesaj, el trebuie sa astepte. Deci,emitentii nu au de asteptat niciodata, pe cand receptorii sunt gata daca mesajele pot sa fie acceptate in tampon.

16

Page 17: Modelul Masinii de Stare 1

- Comunicarea sincrona ( mesaj sincron, comunicare prietenoasa): un mesaj poate sa fie trimis numai daca atat emitentul cat si receptorul sunt simultan gata sa comunice; daca numai unul dintre ei (receptorul sau emitentul) este gata de comunicare , el trebuie sa astepte pana un partener de comunicare devine gata.

- Comunicarea sincrona temporizata(sincronizarea perfecta): citiva pasi de interactiune (semnale sau evenimente atomice) sunt acumulate conceptual intr-un spatiu de timp; in acest mod, sistemele sunt modelate cu ajutorul sirurilor de multimi de evenimente.

- Metoda de apelare traditionala: acumuleaza unele caracteristici ale celor trei abordari anterioare. In apelarile metodei secventiale, progresul timpului nu este o chestiune atat de importanta, care permite programatorilor sa se gandeasca la mesaje sincrone si chiar la sincronizare perfecta. Uneori, receptorul nu poate preveni emitatorul (apelantul) sa porneasca apelarea metodei. Receptorul trebuie sa accepte apelarea si reactioneaza intr-un fel.

Putem folosi oricare din cele trei modele pentru a le define pe celelalte si apelarile metodei pot sa fie simulate in oricare din ele. Mai mult, un limbaj general pentru modelare, cum este UML-ul, incearca sa furnizeze mecanisme pentru toate aceste paradigme de comunicare. In plus, aceste paradigme de comunicare pot sa fie folosite intr-un singur sistem si lucrind impreuna. Este necesar sa integram toate paradigmele de comunicare, adica sa codificam una in celelalte. Este o chestiune de gust alegerea uneia dintre aceste paradigme ca mecanism corespunzator. In continuare lucram cu mesaje asincrone deoarece acest model are, in accord cu experienta noastra, cele mai bune proprietati in vederea atingerii scopului urmarit. Urmam modelul sistem dat anterior, bazindu-ne in abordarea noastra pe conceptul de componenta care comunica mesaje asincron cu mediul sau inconjurator, prin canale numite , intr-un cadru de timp sincron.

6.2 FLUXURIPentru o specificare convenabila a comportarii obiectului, este important sa

privim nu numai la mesajul sosit curent, ci la sirul intreg de mesaje care au sosit anterior pe un canal. Folosim astfel istoriile unui canal pentru a modela comportamentul.

17

Page 18: Modelul Masinii de Stare 1

Un flux este un sir finit sau infinit de elemente ale unei multimi date cu scopul descrierii comportarii obiectului. Fluxurile sistemelor interactive sunt construite peste multimi de mesaje sau actiuni. Un flux descrie observatia pe care poate sa o faca un observator care se afla pe un canal direct de comunicare. Comportarea unei componente poate sa fie modelata printr-o relatie dintre fluxurile observate de intrare si de iesire. Fluxurile sunt astfel folosite pentru a reprezenta tiparele interactiunii prin istoriile comunicarii pentru canale sau istorii de activitati.

Fie M o multime ( de mesaje ). Fie M* multimea sirurilor finite de elemente ale lui M si fie M∞ multimea sirurilor infinite de elemente ale lui M. Multimea Mω a fluxurilor peste M, este alcatuita din siruri finite sau infinite de elemente ale multimii M. Astfel Mω = M*∪ M∞ . Daca dorim, fluxurile peste M pot fi private ca functii partiale de forma x:[1,…,n] → M cu “lungimea” n∈ℕ∪{∞}, unde fluxurile infinite sunt exact functiile totale (:ℕ→M). Scriem x.t in loc de x(t), ca o prescurtare pentru selectia elementului din x de pe pozitia t. Un flux finit x de elemente x.1,…,x.n ( in aceasta ordine) se scrie de asemenea ‹x.1,…,x.n›. Un caz special este fluxul vid notat cu ‹ ›. Multimea fluxurilor are o multime adecvata de operatii matematice , alcatuind o structura algebrica si topologica bogata. Introducem concatenarea ca un operator : Mω X Mω → Mω.

Pe fluxurile finite, concatenarea este definite ca de obicei : date x,y ∈M*, de lungime n,m respective avem: ⟨ x .1 ,…,x .n ⟩ ⟨ y .1 , , y .m ⟩ = ⟨ x .1 ,…,x .n , y .1 ,…, y .m ⟩.

Pentru fluxul infinit s:ℕ→M, definim concatenarea prin: s x = s, pentru orice

flux finit sau infinit x∈ Mω si (⟨ x .1 ,…,x .n ⟩ s).t = { x . t daca t ≤ns . ( t−n )∈rest .

In intelesul concatenarii, definim relatia binara prefix ⊑ pe fluxuri: fie s,r∈ Mω

s ⊑ r ⇔def∃z∈ Mω: s z = r(Mω , ⊑) este o multime partial ordonata, adica relatia ⊑ este reflexiva,

tranzitiva si antisimetrica. Ordonarea partiala este, mai mult, bine determinata

( adica nu contine lanturi descrescatoare infinite numarabile ) si completa ( ea are un cel mai mic element, anume ‹ › si fiecare din lanturile sale are un cel mai mic majorant). Aceasta proprietate este deosebit de utila, deoarece ea permite descrierea prefixelor finite ale fluxurilor si utilizarea tehnicilor inductive ( sau

18

Page 19: Modelul Masinii de Stare 1

recursive) pentru caractrizarea deplina a fluxurilor. De exemplu consideram fluxul s = ⟨1,0,0 ⟩ s.

Definitia fluxurilor ( temporizate sau netemporizate )

∙ Mω este multimea fluxurilor netemporizate finite sau infinite

∙ x y este concatenarea a doua fluxuri

∙ ⟨ x .1 ,…,x .n ⟩ reprezinta fluxul finit de lungime n

∙ x⊑y reprezinta relatia prefix pe fluxuri (se citeste “ x este un prefix al lui y”)

∙ (M*)∞ este multimea fluxurilor temporizate infinite.

Un flux reprezinta un sir de mesaje trimise printr-un canal in timpul de viata al sistemului. De sigur, in sistemele concrete aceasta comunicare are loc in timpul unui cadru. Deci, este convenabil sa fim in stare sa ne referim la acest timp. Mai mult, asa cum vom vedea, teoria feedback-ului devine mult mai simpla. Din acest motiv lucram cu fluxuri temporizate.

Fluxurile sunt folosite pentru a reprezenta istoriile de comunicatii ale mesajelor de date, transmise intr-un cadru de timp. Data fiind o multime M de mesaje, definim un flux temporizat (infinit) ca un element al multimii (M*)∞, sau, echivalent, ca functii de forma s: ℕ→M*.

Pentru fiecare unitate de timp t, fluxul finit s.t reprezinta sirul de mesaje observate in fluxul s in perioada de timp t ( sau sirul de actiuni executate in al t-lea interval de timp, daca fluxul reprezinta un sir de actiuni). Aceasta inseamna ca un flux temporizat s∈ (M*)∞ exprima care mesaje sunt transmise la care moment de timp (s).

Dea lungul acestei lucrari lucram cu un cuplu de operatori si notatii simple, de baza, pentru fluxuri si fluxuri temporizate, respectiv. O parte din acesti operatori

19

Page 20: Modelul Masinii de Stare 1

si conventii notationale au fost deja introduse anterior. Ele sunt sintetizate in continuare.

Definitia operatiilor pe fluxuri (temporizate si netemporizate)

Exista urmatoarele operatii pe algebra fluxurilor:

∙ ‹ › sirul vid sau fluxul netemporizat vid

∙ ⟨m ⟩ sir cu un singur element, continindu-l pe m ca unic element

∙ x.t al t-lea element al fluxului x (temporizat sau netemporizat )

∙ #x lungimea unui flux x netemporizat incluzand valoarea speciala ∞ pentru o lungime infinita.

∙ x z concatenarea fluxului finit x cu fluxul netemporizat z

∙ x↓t prefix de lungime t al fluxului x ( temporizat sau netemporizat)

∙ S©x flux (temporizat sau netemporizat) obtinut din x prin stergerea tuturor mesajelor sale care nu sunt elemente ale multimii S

∙ S#x numarul de mesaje din fluxul x (temporizat sau netemporizat) care sunt elemente ale multimii S.

∙ x fluxul netemporizat ( finit sau infinit) care este rezultatul concatenarii tuturor sirurilor din fluxul temporizat x.

Observam ca x este finit daca si numai daca x contine numai un numar finit de siruri nevide.

6.3 CANALE SI ISTORII

Utilizam fluxurile temporizate pentru a modela istoriile de comunicatie ale mediului de comunicare unidirectional, secvential (adica dintre doua obiecte) pe care le numim canale. De obicei, un sistem are un numar mare de astfel de fluxuri de comunicare. Astfel, lucram cu canale pentru a ne referi la fluxuri de

20

Page 21: Modelul Masinii de Stare 1

comunicare individuale. In accord cu aceasta, un canal este simplu un identificator (numele canalului), care este asociat cu o observare a fluxului in fiecare executie a sistemului.

Un canal este astfel modelat de un element al universului numelor de canale (UCN). Fiecarui canal ii este dat un “tip” de mesaj care circula prin canal. Conceptul de flux este utilizat pentru a defini conceptul de istorie a canalului. O istorie a canalului este data de mesajele comunicate prin canal. O astfel de istorie descrie o observatie pe un canal, atunci cand inregistreaza fluxul de mesaje de-a lungul unei perioade de timp.

Definitia canalelor si a istoriilor de canal

∙ UCN reprezinta universal numelor de canale

∙ UMESSAGE reprezinta universal mesajelor

∙ type(c) ⊆ UMESSAGE reprezinta mesajele din canalul c∈UCN

∙ x: UCN →(UMESSAGE*)∞ reprezinta istoria de canal: este o functie partial care asociaza un flux canalelor sale. Pentru toate c∈UCN cu o valoare definita x.c:

x.c ∈ (type(c)*)∞ .

∙ channels(x) ⊆ UCN este domeniul istoriei de canal x

∙ x.c ∈ (type(c)*)∞ reprezinta fluxul x(c) pentru c ∈ channels(x)

∙ IH(C) = C = { x: UCN →(UMESSAGE*)∞ | channels(x) = C} reprezinta multimea istoriilor de canal pentru multimea de canale C ⊆ UCN

∙ (z⊕z’) reprezinta suma directa de istorii z∈IH(C) si z’∈IH(C),daca si numai daca ele sunt disjuncte ( C∩C’ = ∅). Au loc relatiile:

∙ channels(z⊕z’) = channels(z)∪channels(z’) = C ∪C’

∙ (z⊕z’).c = z.c pentru c ∈ C

21

Page 22: Modelul Masinii de Stare 1

∙ (z⊕z’).c = z’.c pentru c ∈ C’

∙ z|C reprezinta restrictia aplicatiei z la C ⊆ channels(z). Avem:

∙ channels(z|C) = C

∙ (z⊕z’)| channels(z) = z

Toate operatiile si conventiile notationale introduse pentru fluxuri se generalizeaza intr-un mod usor la istorii, aplicandu-le pe elemente. Deoarece ne ocupam de comportamentul compus pe componente, extindem notiunea de istorie de canal la istorii partiale de forma x: UCN →(UMESSAGE*)* si la felii de timp de forma u: UCN →UMESSAGE* . Ultimul este dat explicit prin urmatoarele definitii ( unde T este folosit in locul lui IH):

Definitia feliilor de timp ale canalelor

∙ u: UCN →UMESSAGE* reprezinta felia de timp a canalului: este o functie partiala care asociaza canalelor sale un flux finit, netemporizat. Pentru toate c∈UCN, definim valoarea u.c: u.c ∈ type(c)*.

∙ channels(u) ⊆ UCN este domeniul feliei de timp canal u

∙ u.c ∈ type(c)* reprezinta fluxul u(c) pentru c∈channels(u)

∙ T(C) = {u : UCN→UMESSAGE*| channels(u) = C}

reprezinta multimea de felii de timp de canal pentru canalele multimii C ⊆ UCN.

Notiunea de flux este esentiala in definirea comportarii componentelor din sectiunea urmatoare.

6.4 INTERFETE, COMPORTARILE I/O, TIMP SI CAUZALITATE

22

Page 23: Modelul Masinii de Stare 1

In aceasta sectiune introducem o teorie a comportarii componentelor si abstractizarea interfetei. Apoi vom discuta chestiunea timpului si a cauzalitatii.

6.4.1 INTERFETE

Pornim cu un punct de vedere al semnaturii pe componente in termini de interfete sintactice si continuam cu un punct de vedere comportamental.

Definitia interfetei componentei sintactice

∙ (I▶O) reprezinta interfata sintactica a unei componente, unde

∙ I ⊆ UCN este o multime de canale tipizate, numita intrare si

∙ O ⊆ UCN este o multime de canale tipizate, numita iesire.

Interfata sintactica nu spune prea mult despre comportamentul componentelor. In principiu, ea fixeaza numai pasii de baza ai schimbului de informatie posibil pentru componenta si mediul sau inconjurator.

Definitia interfetei comportarii componentei

Data o interfata sintactica (I▶O) a unei componente, functia

∙ F: I →℘(O) descrie comportamentul componentei.

∙ F.x descrie istoria de iesire , care poate sa fie returnata pentru orice istorie de intrare x∈ I ; multimea F.x poate sa fie vida.

Definitia introduce o relatie intre istoriile de intrare si cele de iesire. Noi nu distingem semantic mai departe intre intrare si iesire. In sectiunea urmatoare introducem notiunea de cauzalitate ca o diferentiere semantica esentiala dintre intrare si iesire.

6.4.2 CAUZALITATE

Pentru mecanismul procesarii informatiei intrare/iesire, exista o dependenta cruciala a iesirii in intrare. Anumite mesaje de iesire depend de anumite mesaje

23

Page 24: Modelul Masinii de Stare 1

de intrare. O notiune cruciala pentru sistemele interactive este cauzalitatea. Cauzalitatea indica dependentele dintre mesajele schimbate intr-un sistem. Ea descrie care mesaj de iesire este o reactie a carei intrari.

In continuare, comportarile I/O nu sunt altceva decat relatii reprezentate prin functii de valuare pe multimi. Introducem si discutam mai departe notiunea de cauzalitate pentru comportarile I/O.

Comportarile I/O genereaza iesirile lor si consuma intrarile lor intr-un cadru de timp. Acest cadru de timp este folositor pentru caracterizarea cauzalitatii dintre intrare si iesire. Iesirea care depinde causal de o anumita intrare nu poate fi generata inainte ca aceast intrare sa fie receptionata.

Definitia cauzalitatii

∙ O comportare I/O F: I →℘(O) este cauzala (sau propriu-zis temporizata) daca, pentru toate momentele de timp t ∈ℕ, avem

x↓t = z↓t ⇒ (F.x)↓t = (F.z)↓t

O functie F este cauzala daca iesirea in al t-lea interval de timp nu depinde de intrarea receptionata dupa timpul t. Aceasta asigura existenta unui flux de timp propriu pentru componenta modelata de F. F nu poate sa prevada intrarea viitoare si sa reactioneze la aceasta.

Daca F nu ar fi cauzala, ar exista un timp t si o istoriile de intrare x si x’, asa incat x↓t = x’↓t si (F.x)↓t ≠ (F.x’) ↓t. Numai dupa un timp t apare o diferenta intre x si x’, dar la momentul t reactiile lui F in termini de mesaje iesite, sunt de asemenea diferite. Astfel F poate sa prezica viitorul.

Fara indoiala, cauzalitatea permite reactii instantanee: iesirea la momentul t poate sa depinda de intrarea la momentul t. Aceasta ne poate duce intr-o situatie problematica cu cauzalitatea dintre intrare si iesire, daca noi consideram buclele de feedback libere intirziate, cunoscute ca bucle cauzale. Pentru a evita aceste probleme, sau introducem o teorie sofisticata care sa se ocupe cu astfel de bucle

24

Page 25: Modelul Masinii de Stare 1

cauzale, de exemplu prin punctele fixe cel putin in teoria domeniului potrivit, sau transferam conceptul de flux de timp propriu la notiunea de cauzalitate puternica.

Definitia cauzalitatii puternice

∙ O comportare I/O F: I →℘(O) este puternic cauzala (sau pazita temporal ) daca, pentru toate momentele de timp t ∈ℕ, avem

x↓t = z↓t ⇒ (F.x)↓t+1 = (F.z)↓t+1

Cauzalitatea puternica oblige componentele sa introduca o intirziere de o unitate de timp inainte de a putea sa reactioneze. Daca granularea unitatilor de timp este suficient de fina, putem intotdeauna sa detectam o astfel de intirziere.

In general, un comportament I/O F: I →℘(O) permite multe implementari, atatea cat ne permit multiplele reactii la o intrare. Oricare din posibilele implementari poate sa fie descrisa ca un descendent determinist al acestei comportari. O astfel de implementare este data printr-o functie determinista f:I →O

Definitia implementarii deterministe

∙ O functie f: I →O este o comportare I/O determinista F: I →℘(O), unde

F.x = {f.x} , pentru toti x∈ I

∙ O functie f: I →O este o implementare determinista a comportarii I/O F: I →℘(O), daca si numai daca f.x ∈ F.x , pentru toti x∈ I

∙ F se numeste realizabila, daca exista cel putin o implementare determinista.

6.5 COMPUNEREA COMPORTARII INTERFETELOR

In aceasta sectiune introducem un operator pentru compunerea componentelor. Preferam sa introducem numai un operator de compunere puternic, foarte general. Acest operator generalizeaza compunerea paralela si secventiala ca si introducerea buclelor de feedback.

25

Page 26: Modelul Masinii de Stare 1

Fig 2 Compunerea paralela cu feedback

Definitia compunerii

∙ Compunerea a doua comportari I/O F1 , F2 pe componente este notata prin F1 ⊗ F2 .

∙ Date semnaturile F1 : (I1▶O1) si F2 : (I2▶O2), unde canalele de iesire sunt disjuncte O1 ∩ O2 = ∅

∙ compunerea ( F1 ⊗ F2 ) are semnatura (I▶O), cu

I = (I1 ∪ I2 ) \ ( O1 ∪ O2 ) si

O = ( O1 ∪ O2 ) \ (I1 ∪ I2 )

∙ si descrie comportarea definita prin

(F1 ⊗ F2 ).x = { y|O : y|I = x|I ∧ y|O1 ∈F1(y|I1) ∧ y|O2 ∈F2(y|I2),y∈IH(I∪O)}.

26