![]()
Priročnik za uporabo orodja ObjectGEODE
Primer št 2 :
Telefonirajte svoji babici (bo vesela), dekletu (fantu) ali prijateljici (prijatelju) in med pogovorom budno opazujte, kaj počnete s telefonskim aparatom in kako se na vaše akcije odziva telefonska centrala. Pokličite še kako številko, ki bo zagotovo zasedena (npr. informacije), in spet opazujte, kaj se dogaja. Premislite še, kaj se je medtem dogajalo pri človeku, ki ste ga klicali. Na kratko v grobem skicirajte komunikacijo med vami, klicanim človekom in centralo na dva načina:
- a) s po enim končnim avtomatom za vsakega od treh partnerjev (SDL),
- b) z MSC.
Primer telefonskega pogovora:
Datoteka telefon.prKaj naredimo, ko želimo poklicati nekoga po telefonu?
Dvignemo slušalko. Ko je slušalka dvignjena, centrala to zazna in lahko:S tem ko dvignemo slušalko, ne začnemo pogovora, ampak sporočimo centrali, da bi si to želeli. Na vilicah bi prav tako lahko bil kamen, ki bi ga dvignili, ko bi želeli telefonirati, zato signala odlozi_sl in dvig_sl prenašamo po istem kanalu kot stevilka_tipkovnica in ne po slušalka. Za številčnico in vilice bi lahko uporabili tudi različna kanala, vendar to v tem primeru ni potrebno.
- vtipkamo številko, ki jo želimo poklicati,
- odložimo slušalko, ker smo si premislili,
- ker predolgo čakamo zaslišimo ton tu-tu-tu.
Okolje je po definiciji zunanjost sistema, ki pa se obnaša podobno kot sistem.
Kanal lahko ima zakasnitev ali pa tudi ne. Za zvok, ki potuje po zraku npr. vzamemo kanal z zakasnitvijo, za številčnico pa brez. Če je oddaljenost do centrale velika, lahko tudi za povezavi s centralo upoštevamo zakasnitev.
Blokovna shema sistema:
![]()
SIMULACIJA
Poženemo simulator. Najprej generiramo signale, ki jih pošiljamo iz okolja z "Edit > Feed". Za signal stevilka_tipkovnica(integer) definiramo dve števili. Ti predstavljata telefonsko številko babice, ki je 555, in stevilko 123, ki jo lahko uporabimo za simuliranje napačno vnešene številke.
![]()
S "File > Generate MSC" nastavimo opcijo "during simulation", da bomo po končani simulaciji lahko generirali MSC. Z "View > Hierarchy" odpremo Heirarchy browser in z "Default tracking" odpremo SDL diagram, v katerem bomo opazovali stanje, v katerem se nahajamo.
Poskusimo simulirati navaden telefonski pogovor:
Vnuk dvigne slušalko, kar aparat sporoči centrali. Le-ta požene časovnik, ki se izteče po 5 sekundah. Pa naj že pred tem časom vnuk vtipka številko, ki se pošlje centrali kot parameter signala "stevilka_tipkovnica". Centrala preveri številko in ker je 555 prava, prične zvoniti babičin telefon, o čemer dobi signal tudi vnuk. Ko sedaj babica dvigne slušalko, se do vnukovega telefona vzpostavi povezava in vsi trije avtomati preidejo v stanje "pogovor". V tem stanju predpostavimo, da sta telefona navidezno ali fizično povezana. Ob koncu pogovora eden odloži slušalko, kar centrala zazna in pošlje drugemu sporočilo, da je pogovor končan in da naj odloži slušalko.
Če na signal v seznamu možnih prehodov kliknemo samo enkrat, se le-ta ne sproži, vidimo pa, kje se nahaja v SDL diagramu.Sedaj s "File > Generate MSC" generiramo potek naše simulacije. Datoteka telefon1.msc
![]()
V oknu "Hierarchy Browser" lahko pogledamo, kolikšen del SDL diagrama smo izvedli s simulacijo. Prva številka nam kaže pokritost stanj, druga pa kolikšen del prehodov med stanji se je izvedel vsaj enkrat. Če kliknemo številko 2, odpremo vse mape do drugega nivoja, z ikonami pa izbiramo, katere simbole želimo videti v hierarhiji.
![]()
Naslednji primer prikazuje iztek časovnika, potem, ko ni bila pravočasno poslana klicana številka. Procesa babica ni v diagramu ker ni sprejel ali oddal, nobenega signala. Datoteka telefon3.msc
![]()
Če vnuk izbere napačno stevilko, zveza ne bo vzpostavljena. Datoteka telefon4.msc
![]()
Poglejmo še primer, ko ima babica dvignjeno slušalko in je njena linija tako zasedena. Datoteka telefon5.msc
![]()
Dogajanja v simulatorju lahko spremljamo s klikom na "Watching"
![]()
- Signale v vhodni vrsti posameznega procesa
- Stanje posameznega procesa
- Aktivne časovnike
- Pokritost stanj
- Pokritost prehodov
- Zapri okno
Slika prikazuje okno, v katerem opazujemo stanja procesa:
![]()
Watch okno lahko odpremo tudi z "Edit > Create Watch". Z desnim gumbom odpremo novo okno in za "Add Item" vnesemo npr. ime spremenljivke ali objekta, katerega vrednost želimo spremljati med simulacijo:
![]()
![]()
Simboli ...
Na primer ATM.
Na začetek.
Na indeks.