Priročnik za uporabo orodja

ObjectGEODE




SIMBOLI

Tip ("Type")

definira lastnosti primerka, ko je preveden v konkreten objekt. Koncepti za obravnavanje tipov:

Specializacija
Tip je specializacija (nadgradnja) že definiranega tipa. Vsi tipi v specifikaciji so razdeljeni v hierarhijo tipov - drevo, kjer najbližji nivo staršev predstavlja nadtip ("supertype"), iz katerega je s specializacijo bil dobljen tip na nižjem nivoju - podtip ("subtype"). Pogosto so najvišji nivoji hierarhije namenjeni razvrščanju tipov v razrede, kar pomeni da so abstraktni in niso namenjeni za direktno generiranje primerkov.
Navidezni tipi
Pogosto mora podtip spremeniti nekatere lastnosti nadtipa, da ga lahko uporabimo. Spremenimo lahko nekatere lokalno definirane lastnosti. Lastnosti, ki jih lahko spreminjamo, so v nadtipu definirane kot navidezni tipi. Procesom, storitvam in proceduram lahko v avtomatu spremenimo tudi začetno stanje in prehode med stanji (navidezni prehodi). Da ohranimo osnovne lastnosti nadtipa, postavimo omejitve za dovoljene spremembe. Osnovna omejitev je, da mora biti vsaka sprememba virtualnega tipa specializacija samega virtualnega tipa. Z "atleast" in tipom je omejitev razširjena na definiran tip. "Virtual" v nadtipu indicira virtualen tip ali prehod. Ko ga podtip spremeni, in dovoli spreminjanje svojim podtipom, ga označi z "redifined" , drugače pa z "finalized".
Generični tipi
so nepopolni, ker se lahko nanašajo na objekte, ki niso definirani, dokler tip ni uporabljen kot primerek. Tip torej vsebuje formalne kontekstne parametre , ki so označeni z oklepaji (<>) in definirani takoj za imenom tipa. Ko potem tip uporabimo, moramo specificirati prave parametre namesto formalnih.

Podatkovni tipi in spremenljivke

Skupne spremenljivke ("shared variables")
Lastnik spremenljivke je lahko samo en proces. Včasih pa se zgodi, da več procesov potrebuje dostop do iste spremenljivke. Lastnik je še vedno samo en proces, drugi pa lahko dostopajo do spremenljivke ali po normalni poti izmenjave signalov ali s pomočjo dveh posebnih konstruktov:
  1. Razkrij/poglej ("Reveal/view")
    Z razkritjem spremenljivke omogočimo drugemu procesu, da jo vidi, ne more pa je spreminjati.
  2. Izvozi/uvozi ("Export/import")
    To je v bistvu bližnjica za normalno pot.

V SDL-u poznamo tudi že vnaprej definirane podatkovne tipe. Zapisani so v naslednji tabeli:

ime literali operatorji, poleg = in /=
Boolean True, False not, and, or, xor, =>
Character znak med ' ' <,<=,>,>=, Num, Chr
Integer 0,1,... -, +, *, /, <, <=, >, >=, Float, Fix
Real 0, ...1, ..., 107.86, ... -, +, *, /, <, <=, >, >=
PId Null brez operatorjev
Duration kot Real -, +, *, /
Time kot Real -, +, <, <=, >, >=
Charstring character enclosed by ' ' MkString, Lenght, First, Last, //, (indeks), Substring(niz, začetno mesto, dolžina)

Poleg teh osnovnih oz. že definiranih podatkovnih tipov lahko v SDL-u definiramo tudi svoje tipe in kar je še bolj zanimivo, svoje operacije nad temi tipi. Ko definiramo posamezen tip, definiramo tudi vse možne operacije, ki se nad tem tipom lahko izvajajo. Nato pa še posamezni operaciji dodelimo njeno obnašanje. Oglejmo si primer podatkovnega tipa "Naravna števila", zapisanega v SDL sintaksi:

newtype Natural
literals 0, 1, 2, 3, ... (za definicijo neskončnega zaporedja obstaja poseben konstrukt nameclass)
operators
"-" : Integer , Integer -> Integer;
"+" : Integer , Integer -> Integer;
"-" : Integer -> Integer;
... : ... ...
/* Tu pa sedaj sledi opis obnašanja posamezne operacije */
endnewtype;

Pri definiciji operacij moramo paziti, da se imena ne ponavljajo. Vsaki operaciji sledi "podpis" oz. signatura udeleženih operandov. Če si pogledamo primer za odštevanje in negativni predznak (enočleni minus), vidimo, da sta znaka, ki predstavljata operacijo, identična. Razlikujeta pa se v podpisu. Pri odštevanju vidimo, da sta udeležena dva operanda tipa Integer in da je rezultat prav tako tipa Integer. Pri negativnem predznaku pa je udeležen samo en operand. Podpisi oz. opisi posameznih operacij morajo torej biti edinstveni.

Ta lastnost nam omogoča, da definiramo svoje podatkovne tipe in nad njimi izvajamo operacije, ki so specifične za sistem, ki ga opisujemo. Na ta način celoten opis sistema postane preglednejši in s tem lažje razumljiv.
Pri opisu obna^anja je zadeva prav tako rešena zelo elegantno. Omogoča nam namreč štiri različne načine opisa:

  1. neformalni opis ("informal text")
  2. opis s pomočjo enačb ("axiomatic approach")
  3. opis s pomočjo obnašanja
  4. opis z eksterno definiranim podatkovnim formalizmom
Na začetku samega razvoja sistema nam gotovo še niso jasne prav vse podrobnosti, zato nam dopušča, da obnašanje posamezne operacije opišemo poljudno v obliki neformalnega teksta.
Primer iz članka:

newtype Stringutility
operators
stej: Charstring, Character -> Natural
axioms
'stej(besedilo,znak)= stej stevilo znakov v besedilu'
endnewtype Stringutility;

Ta pristop se imenuje neformalni pristop.

Pri aksiomatskem pristopu operacijo opišemo s pomočjo enačb. Če zapišemo zgornji primer na ta način, dobimo naslednji opis:

newtype Stringutility
operators
stej: Charstring, Character -> Natural
axioms
for all znak1, znak2 in Character
(for all besedilo in Charstring
(stej(",znak1)= = 0;
stej(mkstring(znak1)//besedilo, znak2)= =
stej(besedilo, znak2) + if znak1=znak2 then 1 else 0 fi))
endnewtype Stringutility;

Takšen opis je še bolj konkreten in ga lahko napišemo v eni izmed kasnejših faz razvoja.
Podobno kot opisujemo obnašanje sistema, lahko opišemo tudi obnašanje operacije. Uporabimo lahko torej blokovni opis, ki ga imenujemo diagram operatorja . Opis našega primera je razviden iz naslednje slike:

(Na sliki so uporabljene angleške besede. count=stej, str=besedilo, chr=znak)

Ostala nam je še zadnja možnost, in sicer opis s pomočjo zunanjega podatkovnega formalizma. Ta pristop je uporaben v primeru, ko izmenjujemo podatke s kakšnim drugim podatkovnim formalizmom (npr. ASN.1 - Abstract Syntax Notation 1) ali pa v primeru prevajanja v programske jezike, kot je C.

SDL omogoča definicije operacij nad svojimi podatkovnimi tipi in tudi dedovanje podatkovnih tipov.
SDL pozna še en posebni podatkovni tip, ki se imenuje Syntype. Le-ta nam omogoča, da definiramo podtip določenega tipa. Natural, bi lahko definirali kot podtip tipa Integer.

Primer:
syntype Natural=Integer constant >=0;
endsyntype Natural;


SDL je torej zelo odprt in nam omogoča, da si sami definiramo podatkovne tipe ter operacije nad njimi. Pri SDL-u je velik poudarek na obnašanju spremenljivk oz. na spremembah, ki se na posamezni spremenljivki odvijajo. Tako lahko resnično oblikujemo sistem po svoji meri in to z formaliziranim jezikom.

Tipi in njihova uporaba

Vrsta

Specializacija

Ustvaritev primerka

Brisanje primerka

Virtualen

Tip sistema Da Ob startu Ko ni več primerkov Ne
Tip bloka Da Implicitno Implicitno Da
Tip procesa Da Ustvari in Implicitno Stop Da
Tip storitve Da Implicitno Implicitno Da
Procedura Da Klic Vrnitev Da
Podatkovni tip Da Implicitno Implicitno Ne
Signal Da Izhod Vhod Ne
Časovnik Ne Set Reset ali Vhod časovnika Ne
Syntype Ne Implicitno Implicitno Ne
Daljna procedura ali spremenljivka Ne Modelirana izmenjava signala - Ne

Tip sistema ("SystemType")

(Tip sys1) system type sys1
(Primerek tipa sys1) system sysinstance : sys1

Tip bloka ("BlockType")

Tip procesa ("ProcessType")

Tip storitve ("ServiceType")

 

Sistem ("System")

Predstavlja najvišji nivo arhitekture in je to, kar SDL specifikacija poskuša opisati. Sestavljen je iz posameznih objektov, ki jih imenujemo bloki.
Sistem z okoljem komunicira preko kanalov. Teoretično zadostuje že en sam kanal, praktično pa jih je toliko, kot je logičnih povezav sistema z okoljem.

Prvi nivo SDL specifikacij je opis sistema, ki je sestavljem iz:

imena sistema
definicije signalov (s parametri, če jih signal prenaša)
definicije signalnih list
definicije kanalov, ki povezujejo bloke sistema med seboj in z okoljem
definicije podatkovnih tipov

Blok ("Block")

je lahko sestavljen iz podblokov ali pa iz enega ali več procesov. Blok tako predstavlja primeren način za grupiranje procesov, kot tudi mejo za vidnost podatkov in podatkovnih tipov. Znotraj bloka, kot tudi z okoljem, si procesi izmenjujejo sporočila s pomočjo signalov (s softverskega stališča signal pomeni vrsto sporočila) preko signalnih poti. Definicija strukture bloka vsebuje:

ime bloka
definicijo signalov, ki so definirani samo znotraj tega bloka
definicijo signalnih poti med procesi v bloku ter procesi in okoljem
povezave signalnih poti na kanale
definicije procesov
definicije podatkovnih tipov (vidnost pod. tipov)

Proces ("Process")

je razširjen končni avtomat, ki opisuje dinamični odziv dela sistema. V principu je vedno v nekem stanju, v katerem čaka na signal, ki bo sprožil prehod. Vse signale proces pobira iz vhodne vrste, ki je za vsak proces ena sama. Definicija in klic procesa vsebujeta naslednje podatke (glava procesa):

naziv procesa
začetno in končno število instanc procesa
formalne (definicija) in dejanske (klic) parametre


Vsak proces lahko vsebuje procedure in storitve ("service").
Proces se lahko kreira ob startu sistema ali na zahtevo drugega procesa. Obstaja toliko časa kot sistem ali pa sam konča izvajanje s ukazom Stop.

Storitev ("Service")

Včasih je obnašanje procesa sestavljeno iz funkcij oz. storitev, ki so medsebojno neodvisne, in jih je možno opisati ločeno. Storitve imajo skupne signalne poti in si lahko delijo tudi spremenljivke. Prehod se lahko izvaja naenkrat samo v eni storitvi. Storitev ne moremo naslavljati od zunaj, zato so signali naslovljeni k storitvi samo na podlagi imena signala.

Podstruktura ("Substructure")

Procedura ("Procedure")

je podobna proceduram v programskih jezikih. Omogoča strukturiranje procesov v več nivojev, združevanje kompleksnih delov, ki jih lahko obravnavamo ločeno v enem modulu, in enkratno definicijo ter večkratno uporabo pogosto definiranih delov programa. Procedura je lahko definirana znotraj procesa ali znotraj druge procedure, vidna pa je vedno znotraj objekta, kjer je definirana. Definicija procedure vsebuje:

ime procedure
formalne parametre
definicijo drugih procedur
definicijo lokalnih podatkovnih tipov
definicijo lokalnih spremenljivk
telo procedure (podobno procesu)


Formalni parametri vsebujejo sezname spremenljivk, povezanih z tipom spremenljivk in načinom prenosa spremenljivke (po vrednosti ali po referenci). Procedura bere signale iz vhodne vrste procesa, v katerem je definirana. Proces kliče proceduro znotraj prehoda med dvema stanjema. Izvajanje procesa se ob klicu procedure začasno prekine in se nadaljuje z akcijo, ki sledi klicu procedure.

Razlike med procesom in proceduro so:

procedura nima svoje vhodne vrste
način prenosa parametrov (v proceduri lahko po referenci)
način izvajanja dveh procesov (vzporedno), ter procesa in procedure (zaporedno)
način zaključitve izvajanja: proces se lahko uniči, po klicu procedure pa se vedno vrne v točko, kjer je bila klicana
različna štartna simbola

Makro ("MacroDefinition")

omogoča definicijo operacij, ki se izvedejo med dvema stanjema. V makroju ne moremo definirati stanj in vhodov, imamo pa na voljo vse druge simbole (časovnik, izhod, pogoj...). Definiramo ga lahko v sistemu, bloku ali procesu.

Operator ("Operator")

je podoben makroju, le da imamo na voljo samo nalogo, pogoj in izbiro, imamo pa tudi možnost klicati makro. Operator je pridružen sistemu.

Tekst ("Text")

Tekstovno okno je namenjeno opisu:

Spremenljivk ("Variables")
Definiramo jih podobno kot v programskih jezikih. Deklaracija se prične z DCL. Sledijo imena spremenljivk in za njimi ime tipa ("sort"), npr.
DCL Spremenljivka INTEGER; .

Časovnikov
Časovnik deklariramo podobno kot spremenljivko. "Time" je poseben podatkovni tip, največkrat uporabljen skupaj z časovniki. "NOW" je tipa "Time" in vrne trenutno vrednost časa. Naenkrat je lahko aktivno poljubno število časovnikov.

Identifikatorja procesa
Vsak proces ima edinstven identifikator tipa PId. največkrat se uporabljajo za določanje cilja poslanih signalov. Naslednje PId vrednosti so že definirane za vsak proces:

SELF: trenutni proces
OFFSPRING: potomec - nazadnje ustvarjeni proces
PARENT: roditelj - proces, ki je ta proces ustvaril
SENDER: pošiljatelj zadnjega sprejetega sporočila

Podatkovnih tipov
SDL omogoča definiranje novih tipov z uporabo generatorjev in struktur. Z aksiomi je možno definirati tudi popolnoma nove tipe.
Komentar
je vak tekst med znakoma "/*" in "*/".

/* To je komentar */

Paket ("Package")

uporabimo, če več specifikacij uporablja primerke istega tipa. Ti tipi so opisani posebej in so lahko ponovno uporabljeni v novih SDL sistemih. Paket je v bistvu zbirka ponovno uporabljivih tipov (podatkovnih, signalnih in objektnih tipov). Z njimi si lahko zgradimo knjižnico SDL elementov, ki jo nato z ali brez sprememb ponovno uporabimo.
Ko jih uporabimo v sistemu, jih navedemo z
USE ImePaketa.

Particija ("Partition")

je grafično področje, namenjeno tiskanju na eno ali več strani. Particija "DefaultPartition" je vedno definirana v opisu, vidna pa postane šele, ko dodamo novo particijo. Ko definiramo novo particijo s "Cut > Paste" vanjo vnesemo dele SDL opisa, ki jih želimo tiskati ločeno, npr. tekstovni del. Če držimo pritisnjeno tipko "Ctrl", se objekt, na katerega kliknemo, doda k doslej izbranim.





Naslednji ukazi so namenjeni ustvarjanju hierarhije scenarijev oziroma zaporedju, v katerem se bodo izvedli MSC scenariji.

Scenarij ("IsScenario")

MSC A

In scenarij ("AndScenario")

MSC A nato MSC B

Ali scenarij ("OrScenario")

MSC A ali MSC B

Paralelni scenarij ("ParallelScenario")

MSC A in MSC B hkrati

Ponovi scenarij ("RepeatScenario")

ponovitev MSC A

Izjemni scenarij ("ExceptionScenario")

V nominalnem primeru MSC A, drugače MSC B

List scenarij ("LeafScenario")

predstavlja najnižji nivo v hierarhiji. Vanj vnesemo dejanski scenarij, ki se bo izvajal v skladu s hierarhijo.

Sistemski scenarij ("SystemScenario")






Komentar ("Comment")

uporabimo za lažje razumevanje diagrama.

Povezava ("Link")

Ustvari povezavo, ki predstavlja bodisi kanal bodisi signalno pot.

Kanal ("Channel")

prenaša signale med dvema blokoma v sistemu ali med blokom in njegovim okoljem. Lahko je enosmeren ali dvosmeren, z zakasnitvijo ali brez nje. Je entiteta, s katero opisujemo komunikacijske poti. Opis kanala postane del opisa vmesnika bloka, preko katerega lahko komuniciramo z blokom.
Kanal je definiran z:

imenom kanala
imeni blokov, s katerimi je povezan
imeni signalov oz. signalnih list, ki jih prenaša v določeni smeri.

Signalna pot ("Signal path")

je podobna kanalu, le da prenaša signale med dvema procesoma istega bloka ali pa med procesom in okoljem tega bloka.

Signal ("Signal")

je najnižji objekt pri komunikaciji in je definiran z imenom in lahko še s tipi podatkov, ki jih prenaša. Signal je lahko definiran na nivoju sistema, bloka ali procesa. Signali, ki so definirani na nekem nivoju, se lahko uporabljajo tudi na nižjih nivojih. Tako se lahko signal, ki je definiran znotraj procesa, uporablja med različnimi instancami istega tipa procesa. V praksi moramo čimbolj upoštevati princip lokalnosti in definirati signal na najnižjem možnem nivoju.

Signalna lista ("Signallist")

je množica že definiranih signalov in signalnih list. Pri vnosu signalov v listo NI potrebno napisati tipov podatkov, ki jih signal prenaša. Prednost list je v tem, da spremembo opravimo na enem mestu, ter logično grupiranje različnih signalov. Pri vnosu liste v seznam signalov, ki jih prenaša kanal, jo je potrebno dati v oklepaje, npr. [Sig1, Sig2,(SigLista), ...]; .

Ustvari proces ("CreateLine")

kaže od procesa, ki hoče ustvariti nov proces, proti procesu, ki bo ustvarjen.

Točka povezave ("ConnectionEndpoint")

na robu bloka poveže kanal s signalno potjo v bloku.

Vrata ("Gate")

uporabljamo za povezovanje, ko uporabimo primerek nekega tipa. Takrat moramo med proces, ki je instanca TipaProcesa, in signalno pot, ki povezuje proces z robom bloka, vstaviti vrata, ki definirajo pravo povezavo.





PROCES

Start ("Start")

simbol je v vsakem procesu en sam. Sledi mu začetni prehod, ki je sprožen, ko je proces ustvarjen.

Stanja ("State")

se med seboj ločijo po imenih. Simboli z istim imenom predstavljajo isto stanje, kar lahko izkoristimo pri delitvi procesa za večjo preglednost ali za tiskanje na papir.

Stop ("Stop")

uniči proces. Če se po uničenju sklicujemo na proces kje drugje, dobimo sporočilo o napaki.

Naslednje stanje ("NextState")

Stanja se med seboj ločijo po imenih. Simboli z istim imenom predstavljajo isto stanje, kar lahko izkoristimo pri delitvi procesa za večjo preglednost ali za tiskanje na papir.

Oznako za povezavo ("ConnectionLabel")

skupaj z

Združi ("Join")

uporabljamo za risanje povratnih zank in povezav med oddaljenimi deli končnega avtomata. Vsi deli procesa, zaključeni z oznako za povezavo, se nadaljujejo v točki združitve z enako oznako.

Vhod ("Input")

-ni simbol določa ime pričakovanega signala in lokalno spremenljivko, v katero se naj preslikajo parametri signala, če obstajajo.
Spontane prehode označuje beseda "none" v simbolu vhodnega signala. Le-ta vpeljuje poleg konstrukta "any" nedeterminizem v razširjeni končni avtomat. Prav tako omogoča prehod v drugo stanje, ne da bi bil pri tem prisoten signal v vhodni vrsti instance procesa (podobno kot zvezni signal s pogojem "true"). Vendar pa se spontani prehod sproži tudi, če obstaja signal v vhodni vrsti procesa, kar pomeni, da ni prioritete med danima prehodoma.
Vsak proces ima samo eno vhodno vrsto, iz katere bere signale v istem vrstnem redu, kot so se vpisovali (razen če so bili shranjeni). Komunikacija med procesi je takšna, da lahko en proces pošlje signale v vhodno vrsto le enemu procesu.

Prioritetni vhod ("PriorityInput")

se lahko pojavi samo v storitvi. Ko signal prispe, se postavi v vrsto starševskega procesa. Prioriteta signala se preveri

Shrani ("Save")

vsebuje seznam imen signalov, ki bodo v stanju shranjeni, na pa porabljeni. Shranjeni signali se v naslednjem stanju postavijo na začetek vhodne vrste, kjer jih lahko ponovno shranimo ali pa porabimo.

Zvezni signali ("ContinuousSignal")

so namenjeni asinhroni ali sinhroni komunikaciji med procesi in proženju prehodov znotraj procesa. Poleg diskretnih signalov lahko v danem stanju za sprožitev prehoda iz tega stanja v drugo ob izpolnimo neki pogoj. Tedaj govorimo o zveznem signalu, ki se pošlje danemu procesu samemu v vrsto. Zvezni signali so urejeni po prioriteti, manjše število pomeni večjo prioriteto, vendar velja pravilo , da diskretni signal proži prehod pred vsakim zveznim signalom. To pomeni, da imajo nižjo prioriteto kot diskretni in se porabijo le, če v vhodni vrsti procesa ni drugega signala.

Nastavitev časovnika ("Set")

SET(NOW+5,casovnik1)
aktivira časovnik z imenom casovnik1, ki bo čez 5 sekund oddal signal casovnik1, če ne bo prej resetiran. Če nastavimo aktiven časovnik še enkrat, se uporabi nova vrednost trenutnega časa NOW.

Resetiranje časovnika ("Reset")

, ki je trenutno aktiven.
RESET(casovnik1)

Izvozi ("Export")

spremenljivko, da jo lahko uporabljajo tudi drugi procesi.

Naloga ("Task")

se uporablja za določanje vrednosti podatkov, npr. x:=10; . Lahko vsebuje tudi neformalne definicije. Spremenljivki na levi strani := se dodeli vrednost izraza na desni.

Izhod ("Output")

-ni simbol določa ime signala za oddajo in vrednost parametrov signala, če obstajajo. Temu sta lahko dodana TO ali VIA. TO specificira ciljni proces, kateremu bo signal poslan, z imenom procesa ali pa s PId (Process Identifier). VIA podaja pot - kanale, signalne poti in vrata, po katerih naj signal potuje. VIA ni potreben, če obstaja za signal ena sama pot.

Odločitev ("Decision")

omogoča izbiro ene izmed več poti, odvisno od odgovora na postavljeno vprašanje. Le-to je lahko formalno ali neformalno in se največkrat nanaša na lokalno spremenljivko.

Alternativa ("Alternative")

Odgovor ("Answer")

Izvajanje se bo nadaljevalo v veji, ki vsebuje vrednost zahtevano v odločitvi.

Ustvari ("CreateRequest")

Ustvari nov primerek procesa in nastavi začetne parametre. Proces lahko ustvarimo samo, če še ni doseženo maksimalno število procesov.

Klic procedure ("ProcedureCall")

izvede proceduro, ki je nekje definirana.

Klic makroja ("MacroCall")

Izvede zahtevani makro.

Procedura ("Procedure")

Definicija makroja ("MacroDefinition")

Razširitev ("Extension")

se uporabi za dodaten tekst, če ni dovolj prostora v simbolu.

Črta poteka ("DrawFlowLine")






MSC DEL

Akcija ("Action")

V grafični predstavitvi MSC je simbol za akcije pravokotnik na vertikalni osi instance. Vanj vpisujemo aktivnosti instance v izbrani točki. V tekstovni predstavitvi je akcija predstavljena s ključno besedo Action.

Stanje ("Condition")

Na voljo imamo dva različna tipa stanj:

Lokalno stanje

, ki se nanaša na določeno podmnožico instanc ali na samo eno instanco ter

Globalno stanje ki je skupno vsem instancam.

V grafični predstavitvi so stanja predstavljena s šestkotnikom, ki pokriva vse vertikalne osi instanc, za katere velja. V tekstovni predstavitvi je predstavljeno s ključno besedo Condition, globalno stanje označuje beseda Shared All, lokalnega pa Shared. Stanja se uporabljajo za označevanje pomembnih stanj znotraj MSC, ki sovpadajo s stanji končnega avtomata v SDL opisu sistema. Prav tako pa jih uporabljamo za sestavljanje oziroma določanje podMSC-jev. Govorimo lahko o začetnem globalnem stanju, končnem globalnem stanju in vmesnih globalnih stanjih. Pravimo, da je MSC2 nadaljevanje MSC1 glede na globalni oziroma lokalno stanje tedaj in le tedaj, ko se za vsako instanco, ki je skupna obema MSC-jema, MSC2 začne s stanjem, s katerim se je MSC1 zaključil.

Sopodročje (Coregion")

V MSC so lahko entitete tudi bloki oz. sistem. V tem primeru se lahko zgodi, da časovno zaporedje dogodkov ni več točno določeno. Zato je uveden koncept sopodročij, ki je posebno dobrodošel v primeru, ko pošiljamo večje število sporočil, ki se lahko sprejemajo in pošiljajo, vrstni red pa ni kronološko določen, kar nam omogoča opis nedeterminističnih dogodkov.

Primerek ("Instance")

procesa, ki ga hočemo vključiti v MSC diagram predstavlja SDL entitete, in sicer sistem, blok, proces ali storitev. V grafični predstavitvi so instance predstavljene s pravokotnikom, v katerega je vpisan tip instance, številka instance pa se nahaja nad njim. Simbol za začetek ne pomeni ustvarjanja primerka, ampak le začetek njegovega opisa. Prav tako terminator na koncu ne pomeni uničenja instance, temveč le konec opisa zanjo. Simbolu za začetek opisa sledi vertikalna os dane instance, na kateri pošiljanje in sprejemanje signala pomeni dva različna dogodka. Za časovno komponento lahko rečemo edino to, da si dogodki sledijo kronološko v takem zaporedju, kot so prikazani na vertikali, ne moremo pa govoriti o časovni skali.

Sporočilo ("Message")

Ustreza signalu iz SDL-a.

Ustvari proces ("ProcessCreation")

SDL omogoča dinamično ustvarjanje in ubijanje instanc, torej po analogiji to lahko naredimo tudi v MSC diagramu. Instanco lahko kreira le druga instanca, pred kreiranjem pa le-ta ne sme sprejeti nobenega sporočila.
V grafični predstavitvi je kreiranje primerkov predstavljeno podobno kot v SDL s črtkano črto s puščico na koncu. Nad črto dodamo še parametre, ki nadomestijo formalne parametre ob kreiranju. V tekstovni predstavitvi je kreiranje instanc označeno s Create.
Tudi v MSC lahko instanca ubije samo sama sebe, ne more pa ubiti druge instance (lahko posredno, če ji ta to dovoli). V grafični predstavitvi je ubijanje instance predstavljeno s simbolom X, v tekstovni pa s ključno besedo Stop.

Iztek časovnika ("TimerTimeout")

Če časovnik, potem ko ga aktiviramo, ni resetirran ampak se izteče, pošlje signal s svojim imenom, ki ga sprejme neki proces.

Problemi

Če uporablja računalnik 8-bitno grafiko, lahko ob zagonu editorja dobimo malce drugačne ikone.
Rešitev : Zapremo druge programe in ponovno poženemo editor.

Na začetek! Na začetek.

Index Na indeks.