04.11.2014 Views

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

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.

146 Štúdie vybraných tém programových a informaných systémov<br />

P ::= 0 | a.P | P + P | P|P |P \ A | P[f] | x<br />

kde P predstavuje proces, a.P sekvennú kompozíciu, P + P nedeterministickú vobu, P|P<br />

paralelné spracovanie, P \ A obmedzenie, P[f] preznaenie, 0 prázdny proces a x premennú.<br />

Pri definovaní kontraktu správania je potrebné definova:<br />

− P – konenú množinu procesov,<br />

− IP – konenú množinu vstupných portov pripojených k procesom. Proces prijíma<br />

vstupné správy cez svoje vstupné porty,<br />

− OP – konenú množinu výstupných portov pripojených k procesom. Proces vysiela<br />

výstupné správy cez svoje výstupné porty,<br />

− IM – konenú množinu vstupných správ procesov,<br />

− OM – konenú množinu výstupných správ procesov,<br />

− IMI – konenú množinu vstupných správ procesov pochádzajúcich mimo komponentu.<br />

− OMI – konenú množinu výstupných správ procesov smerovaných mimo komponentu.<br />

− A – konenú množinu akcií, ktoré môžu by vykonané procesom.<br />

Príklad Kontraktu správania návrhového vzoru Observer:<br />

P = {aConcreteSubject, ConcreteObserverA, ConcreteObserverB}<br />

IP = {O2S, S2O, Ntfy, Input}<br />

OP = {O2S, S2O, Ntfy}<br />

IM = {Attach, Detach, SetState, GetState, Update, Notify, Change}<br />

OM = {Attach, Detach, SetState, GetState, Update, Notify}<br />

IM I = {Change}<br />

OM I = { }<br />

CCS opis vzoru:<br />

OberverBehavior ::= Subject(aConcreteSubject) |<br />

Observer(ConcreteObserverA) |<br />

Observer(ConcreteObserverB)<br />

Observer(Name) ::= out(O2S, Attach).Observer<br />

out(O2S, Detach).Observer +<br />

in(Input, Change).action(Change).<br />

out(O2S, SetState).Observer +<br />

in(S2O, Update).action(Update).<br />

out(O2S, GetState).Observer<br />

Subject(Name) ::= in(O2S, Attach).action(Attach).Subject +<br />

in(O2S, Detach).action(Detach).Subject +<br />

in(O2S, SetState).action(SetState).<br />

out(Ntfy, Notify).Notifying<br />

Notifying ::= in(Ntfy, Notify).action(Notify).<br />

out(S2O, Update).Updating<br />

Updating ::= in(O2S, GetState).action(GetState).Subject<br />

Podobne ako pri Štrukturálnom kontrakte, aj pri Kontrakte správania sú definované operácie<br />

inštanciácie, evolúcie a integrácie. V rámci kontextu tejto kapitoly sa nimi nebudeme<br />

podrobnejšie zaobera.

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

Saved successfully!

Ooh no, something went wrong!