You are on page 1of 26

Sveuilite u Zagrebu

Fakultet organizacije i informatike


Varadin





Uvod u formalne metode
Alat SPIN


Nositelji kolegija:
Prof. dr. sc. ubrilo Mirko
Prof. dr. sc. Lovreni Sandra
Projekt izradile:
Ana-Marija Balen / 42605
Darija Balen / 42604





Varadin, sijeanj 2014.
Sadraj

1. Uvod .................................................................................................................................... 3
1.1. Povijest razvoja alata Spin ........................................................................................... 4
2. Teorija (logika) na kojoj se alat temelji .............................................................................. 6
2.1. Provjera modela: Dopuna za testiranje i simulaciju .................................................... 6
2.2. FORMALNA VERIFIKACIJA ................................................................................... 7
2.3. VREMENSKA LOGIKA ............................................................................................ 7
2.4. AUTOMATI ................................................................................................................ 8
2.5. PROVJERA MODELA VREMENSKOM LOGIKOM .............................................. 9
3. Sintaksa ............................................................................................................................. 12
4. Nain rada alata ................................................................................................................. 14
4.1. jSpin ........................................................................................................................... 16
4.2. iSpin ........................................................................................................................... 17
4.3. xSpin .......................................................................................................................... 20
5. Primjeri izvoenja alata .................................................................................................... 23
6. Procjena praktine upotrebljivosti .................................................................................... 25
7. Literatura ........................................................................................................................... 26



1. Uvod
SPIN (Simple Promela Interpreter) je alat za analiziranje logike konzistentnosti
istodobnih sustava, posebno u protokolu prijenosa podataka. Napisao ga je Gerard J.
Holzmann u suradnji s drugima u izvornoj Unix skupini Raunalnog Znanstvenog
Istraivakog centra u tvrtki Bell Labs, s poetkom 1980. Softver je dostupan besplatno od
1991., i nastavlja se razvijati kako bi zadrao korak s novostima u podruju.
Sustavi koje treba verificirati su opisani u Promela jeziku (PROcess MEta LAnguage),
koji podrava modeliranje asinkrono distribuiranih algoritama kao nedeterministikih
automata. Promela omoguuje dinamiko stvaranje istodobnih procesa. Svojstva koje treba
verificirati su izraena u obliku formula linearnih vremenskih logika LTL (eng. Linear
Temporal Logic), koje se negiraju, a zatim pretvaraju u automat u sklopu algoritma za
provjeru modela.
Spin moe djelovati kao simulator, slijedi jedan mogui put izvrenja kroz sustav i predstavlja
dobivenu putanju izvrenja za korisnika.
Postoje tri vrste simulacije
1
:
1. Nasumina simulacija koristi se generator sluajnih brojeva za rjeavanje
nedeterminizama svojstvenih popratnom programu (Iz kojeg bi procesa naredba
trebala biti izvrena?), kao i moguih nedeterminizama u uvanim naredbama jednog
procesa. Drugim rijeima, Spin nasumino bira kojom e se granom programa kretati.
Moe pronai greku u radu programa, ali nije pouzdan jer pretrauje samo jednu
granu.
2. Interaktivna simulacija nudi korisniku mogunost izbora koja e se sljedea naredba
izvriti. Na svakom mjestu grananja postavlja korisniku upit kojom putanjom eli
nastaviti provjeru. Interaktivna simulacija je takoer podrana u istodobnim
(konkurentnim) simulatorima i neophodna je za demonstracije koje e se vjerojatno
dogoditi sluajno.
3. Voena simulacija korisnik moe navoditi provjeru prema pogreci, ali to zahtjeva
od korisnika da unaprijed zna gdje bi se greka mogla pojaviti.
Osim kao simulator, Spin djeluje i kao verifikator. Za razliku od mnogih modela provjere,
Spin zapravo ne obavlja provjeru modela sam, ve generira C izvor za provjeru modela

1
Mordechai (Moti) Ben-Ari: A Primer on Model Checking
specifinog problema. Ova tehnika tedi memoriju i poboljava svojstva provjere, te u isto
vrijeme omoguava direktno ubacivanje dijelova C kda u model. Spin takoer nudi velik
broj opcija za daljnje ubrzanje procesa provjere modela i utedu memorije. Neke od opcija su:
redukcija djelominog poretka (eng. partial order reduction), kompresija stanja (eng. state
compression), bitstate hashing (umjesto pohrane itavih stanja, pohranjuje se samo njihov
hash kod ovim nainom se tedi mnogo memorije, ali se ponitava potpunost) i druge.
Spin je alat koji nema grafiko suelje, ve se poziva iz komandne linije.
Svi Spin softveri su pisani u ISO standardu, i mogu se prenositi preko svih verzija Unix-a,
Linux-a, cygwin-a, Plan9-a, Inferno-a, Solaris-a, Mac-a i Windows-a.

1.1. Povijest razvoja alata Spin
2


Sve zapoinje 1980. godine razvojem alata Pan (kratica za protocol analyzer). Kao i Spin, Pan
je jedno-prolazni (eng. one pass), verifikacijski sustav u hodu (eng. on-the-fly). Za razliku od
Spina, ogranien je na sigurnosna svojstva.
1982. godine Pan postaje dio Pandore, verifikacijskog sustava napravljenog za Netherlands
PTT.
1983. Trace postaje zamjena za Pan/Pandoru. Mijenja se i verifikacijska metoda, iz metode
temeljene na algebri procesa, u onu temeljenu na automatu. To je izvorno nastalo samo radi
razmatranja uinkovitosti, kako bi se omoguila izrada uinkovitijeg alata.
1987. Trace je zamijenjen eksperimentalnim alatom Supertrace, te je 1988. taj alat integriran
u SdlValid (verifikator za CCITT(danas ITU) standard).
1989. je napisana prva verzija Spin-a kako bi se prikazao primjer modela za provjeru sustava
o kojem se moe raspravljati u tijeku verifikacije protokola. Paradigma verifikacije u hodu je
sada proirena u primjeni verifikacije omega-regular svojstava u cjelini (ukljuujui, ali ne i
ograniavajui na linearnu vremensku logiku (eng. linear temporal logic)).
Nakon mnogo eksperimenata s razliitim metodama redukcije, Spin je proiren 1994. godine
sa statikom redukcijskom tehnikom (nazvana STREM, za Static Reduction Method) koja se
temelji na opoj teoriji redukcije djelominog poretka.

2
S Interneta: http://spinroot.com/spin/Doc/roots.html
Godinu nakon, Spin je proiren ugraenim algoritmom za prebacivanje iz LTL sintakse u
automat.
1997. Minimizacijski automat. Novo znaajno proirenje Spin-a je dodavanje algoritma za
predstavljanje dostupnog cjelokupnog prostora s BDD, kao predstavljanje koje je
optimizirano za primjenu nad problemima softverske verifikacije. Podaci su puno prirodnije
zarobljeni u bajte ili koliine veliine teksta. Kao u tehnici djelomine redukcije,
minimizacijski automat moe, u nekim sluajevima, eksponencijalno smanjiti zahtjeve nad
memorijom.
1999. uvodi se spajanje naredbi. U Spin verziji 3.3 dodana je tehnika spajanja naredbi. Iako
je ta tehnika prilino jednostavno proirenje pravila redukcije djelominog poretka, moe
znaajno smanjiti koritenje memorije i vrijeme rada alata za provjeru modela.
2000. dolazi najnoviji dodatak Spinu, a to je tehnika bazirana na rezanju svojstava (eng.
property-based slicing) koja moe biti korisna u kombinaciji s automatskim modelom
ekstrakcije.
2003. Podrka za ugraeni C kd. Spin v.4.0 sadri izravnu podrku za ugraene fragmente
jezika C, koji nudi svu potrebnu infrastrukturu za provjeru modela ANSI-C programa,
koritenjem modela ekstraktora. Takoer novo u verziji 4.0.1. je podrka za pretraivanje u
irinu.
2007. Spin v.5.0 sadri podrku za provjeru modela na viejezgrenim sustavima.
2008. nastupa podrka za istovremenu verifikaciju mnogo procesa. Spin v.5.1.5 sadri
podrku za tehniku istovremene verifikacije mnogo procesa, to moe napraviti optimalno
koritenje velikih brojeva dostupnih izraunatih jezgri, na utjecaj paralelizma i tehnike
pretraivanja diversifikacije, to poveava ansu pronalaenja greaka u jako velikim
modelima verifikacije.
2010. podrka za mijenjanje ogranienog konteksta, koji se moe skuiti na primjerima s
malim brojem mijenjanja neogranienog konteksta meu aktivnim procesima.
2012. podrka za Parallel BFS i rasporeivanje temeljeno na prioritetima. Spin v.6.2.0 sadri
podrku za paralelizaciju pretraivanja u irinu na viejezgrenim strojevima s podrkom za
verifikaciju, sigurnost i smrzavanje svojstava.
2. Teorija (logika) na kojoj se alat temelji
2.1. Provjera modela: Dopuna za testiranje i simulaciju
3

Naa dnevna ovisnost o raunalnim aplikacijama je motivirala raunalne znanstvenike da
proizvedu nove tehnike koje poveavaju nae povjerenje u tonost aplikacija. Takve
aplikacije su u rasponu od jednostavnih ureaja za kavu do nuklearnih postrojenja tornjeva
kontrole leta. Mnogo tih aplikacija su bez pogovora kritine i greka bi u njihovom sluaju
mogla dovesti do velikih teta, kako ekonomskih tako i fizikih. Spomenut emo samo veliku
katastrofu koja se dogodila 04. lipnja 1996., kada je europska raketa Ariadne eksplodirala
samo nekoliko sekundi nakon lansiranja. teta je bila, ne samo u milijunima dolara, ve je
kotala i vremenski, izgubljene su godine i godine rada. Otkriveno je da se katastrofa mogla
izbjei koritenjem tehnika formalnih metoda koje bi otkrile greke softvera koje su dovele do
sramote.
Kako netko moe biti siguran u ispravnost kritinih sustava, s tisuama (ponekad i
milijunima) meusobno sloenih komponenti? U nekim je sluajevima mogue izgraditi
sustav koji se razmatra, primjerice stvarni ip, ili aparat za kavu, i hraniti ga osjetljivim
podacima kako bismo provjerili da se stvarno ponaa kako bi trebao. To je princip testiranja.
Takav pristup se koristi u mnogim podrujima i jako je koristan u praksi, iako ga nije mogue
koristiti u vrlo kritinim sustavima, gdje bi testiranje s podacima moglo proizvesti tete u
sluaju pogreke prije stvarne implementacije.
Drugo rjeenje je simulacija ponaanja sustava na raunalu. Simulacija se ne odvija direktno
na stvarnom sustavu, ve na njegovom modelu. Model je apstraktna prezentacija stvarnog
sustava, uglavnom pisana koristei matematiku ili logiku. Model je stvarnom sustavu ono to
je nacrt arhitekta stvarnoj kui. Jedna od prednosti simulacije je ta to nije potrebno izgraditi
stvarni sustav kako bi se primijenila simulacija, i esto je simulacija mnogo isplativija od
testiranja.
I testiranje i simulacija se primjenjuju u industriji, i njihovo koritenje se pokazalo veoma
korisnim. Jedan nedostatak je to nije mogue simulirati ili testirati sve mogue scenarije ili
ponaanja odreenog sustava. Te tehnike openito nisu dovoljno iscrpne, zbog velikog broja
moguih sluajeva koje treba uzeti u obzir (ponekad ih je beskonano u teoriji), a sluajevi
greaka bi mogli biti ba oni koji nisu testirani ili simulirani.

3
S Interneta: http://www.cse.chalmers.se/~gersch/model-checking/What-is-Model-Checking.html
Postoji li neka druga tehnika koja dopunjava testiranje i simulaciju? Odgovor je da: formalna
verifikacija, disciplina koja lei na granicama matematike, logike i raunalne znanosti.

2.2. FORMALNA VERIFIKACIJA
4

Formalna verifikacija obuhvaa razliite tehnike, kojima je kao zajedniki nazivnik osnova na
vrstim matematikim i logikim temeljima. Neki znanstvenici ipak koriste testiranja, ali pod
uvjetom da se temelje na formalnim tehnikama. Mi emo ovdje opisati jednu takvu tehniku,
nazvanu provjera modela vremenskom logikom, koja je uvedena poetkom 1980-ih,
nezavisno su je uveli Queille i Sifakis (Francuska) i Clarke i Emerson (Sjedinjene Amerike
Drave).
Kako bismo objasnili provjeru modela koristei vremensku logiku, prvo moramo razumjeti
to je vremenska logika i to su automati.

2.3. VREMENSKA LOGIKA
Na isti nain kao i prirodni jezici, matematika (klasina) logika ima sintaksu i semantiku.
Sintaksa odreuje pravila gradnje dobro formiranih rijei i reenica, dok semantika prua
njihovo tumaenje ili znaenje. Tu su i reenice koje su sintaktiki ispravne, ali nisu ispravne
sa semantike toke gledita. Na primjer reenica velika kua je zelena je i sintaktiki i
semantiki ispravna (pod uvjetom da je promatrana kua doista zelena), dok je reenica
velika kua je mala kontradiktorna, a time i semantiki pogrena.
Logika uzima u obzir sintaktiki dobro oblikovane reenice i provjerava jesu li one i
semantiki ispravne. Interpretacija se uobiajeno daje u odreenom kontekstu, nazvanom
svijet. U normalnim jezicima kontekst daju rjenici i neformalna stvarna razumijevanja
rijei. U logici se izjava (sintaksa) najee tumai u odreenom semantikom svijetu. Ako je
tumaenje istina (true) u odreenom svijetu (primjerice, velika kua je doista zelena),
onda se kae da je izjava zadovoljavajua u odreenom svijetu. Vaee i uobiajeno pitanje
u logici je: Je li dana izjava zadovoljavajua u odreenom semantikom svijetu? Drugim
rijeima, je li tvrdnja istinita prema tumaenju?

4
S Interneta: http://www.cse.chalmers.se/~gersch/model-checking/What-is-Model-Checking.html
Interesantno bi bilo znati hoe li neto biti istinito u budunosti. Primjerice, je li mogue da e
negdje u budunosti velika kua biti zelena?. Takva vrsta izjava ne moe se izraziti na
precizan nain klasinom logikom, ali moe produetkom te logike.
1957. Arthur Prior je napisao utjecajan lanak kojim je proglasio potrebu za dobrim
simbolikim formalizmom koji bi analizirao filozofska pitanja o vremenu. Vremenski izrazi
poput negdje u budunosti, uvijek u budunosti ili uvijek u prolosti mogu se izraziti
takozvanom vremenskom logikom. Iako su prapoeci takve logike bili u filozofiji (tense
logika), njezina glavna primjena je danas u raunalnoj znanosti, a posebice u podruju
formalne verifikacije, zahvaljujui poticajnom radu Amira Pnuelia. Pnueli je 1977. predloio
koritenje vremenske logike kao okvira za navoenje i razumijevanje sloenih programa.

2.4. AUTOMATI
5

Automatom podrazumijevamo niz stanja i niz veza meu tim stanjima. Stanja se
uobiajeno prikazuju kao krunice, a odnosi meu stanjima kao strelice koje povezuju te
krunice.
Strelice su esto ukraene etiketama (eng. labels) koje predstavljaju uvjete ili akcije. Kada
je automat u odreenom stanju, moe prijei u drugo stanje samo ako je dani uvjet na strelici
koja povezuje oba stanja zadovoljen (ili ako se odvija radnja). Ako postoji strelica koja ide iz
stanja A u stanje B, to znai da se stanje A dogaa prije stanja B. Isto tako, stanje A se mora
dogoditi prije stanja C, ukoliko postoji strelica iz stanja B u stanje C, i to znai da e se stanja
B i C dogoditi u budunosti stanja A.
Kao primjer, razmotrit emo automat modeliranja jednostavnog aparata za kavu na slici 1.

5
S Interneta: http://www.cse.chalmers.se/~gersch/model-checking/What-is-Model-Checking.html

Slika 1. Model aparata za kavu

U poetku je aparat u stanju Start i eka kovanicu. Ako je kovanica ubaena, stanje se
mijenja na stanje Button gdje su mogue dvije opcije: pritisnuti gumb k i prijei u stanje
Coffee ili pritisnuti gumb t i prijei u stanje Tea. Nakon posluivanja odgovarajueg
pia, aparat ide u stanje Glass i daje au s odabranim piem, a nakon toga se vraa u stanje
Start.

2.5. PROVJERA MODELA VREMENSKOM LOGIKOM
6

Kada netko izgradi sustav za obavljanje odreenog zadatka, uobiajeno je definirati skup
svojstava koja sustav mora zadovoljiti. Provjera modela je tehnika koja se koristi kako bismo
dobili odgovor na sljedee pitanje: Zadovoljava li sustav dana svojstva?
Provjera modela ne radi na stvarnom sustavu, ve na modelu, a svojstva obino nisu izraena
u prirodnom jeziku, ve u formalnom jeziku. esto je sustav predstavljen kao automat, a
svojstva su napisana koristei vremensku logiku.
Objasnit emo metodu s dva primjera.
Primjer 1.
Svojstvo Uvijek, nakon to aparat dobije kovanicu i korisnik pritisne gumb, aparat daje kavu
ili aj, moe biti napisano koristei vremensku logiku:
ALWAYS (IF Button THEN (SOMETIME-IN-THE-FUTURE (Coffee OR Tea))

6
S Interneta: http://www.cse.chalmers.se/~gersch/model-checking/What-is-Model-Checking.html
Rijei napisane velikim slovima su poveznice ili operatori vremenske logike, a ostale rijei
predstavljaju interakciju izmeu aparata za kavu i korisnika. Gornji izraz je formula
vremenske logike.
Kako je mogue vidjeti je li dani automat zadovoljio formulu? Moemo to objasniti koristei
gornju formulu i automat modeliranja aparata za kavu.
Moramo prvo shvatiti kako se poveznice ALWAYS, IF-THEN, OR i SOMETIME-IN-
THE-FUTURE tumae u automatu. Pretpostavimo da je trenutno stanje automata poetno
stanje Start.
Neka su A i B izjave, tada:
ALWAYS A znai da A izjava mora biti istinita u svim stanjima automata.
IF A THEN B znai da kadgod je A istinit u danom stanju, istinit je i B.
A OR B znai da najmanje jedna izjava, A ili B, mora biti istinita u stanju.
SOMETIME-IN-THE-FUTURE A znai da mora postojati stanje u budunosti trenutnog
stanja u kojem je A izjava istinita.
Mogue je provjeriti zadovoljava li automat navedenu formulu, jer je iz stanja Button
(nakon ubacivanja kovanice) mogue nai stanje u budunosti u kojem je mogua akcija
poput coffee ili tea.
Primjer 2.
Razmotrimo sada sljedee svojstvo: Uvijek, nakon pritiska gumba za kavu, aparat e
posluiti kavu, a odmah nakon toga i aj. Moemo ovu reenicu napisati na sljedei nain:
ALWAYS (IF Button THEN (Coffee AND NEXT Tea))
Ovdje je NEXT formalna poveznica izraza odmah nakon. Kao i za prethodni primjer,
mogue je provjeriti zadovoljava li automat svojstvo. U ovom sluaju vidimo da to nije
mogue, jer se iz stanja Button moe doi do stanja kava i aj, ali iz stanja kava nije
mogue odmah prijei u stanje aj. Ovo svojstvo jami da aparat nikada nee (na nesreu
korisnika i sreu vlasnika aparata) izdati kavu i odmah nakon toga aj, a da se plati samo
jednom.
Gore navedeni primjeri su vrlo jednostavni i u oba je sluaja toan odgovor vrlo oit. U
principu, automat koji odgovara sustavu moe biti izuzetno velik (red veliine milijuna stanja)
i odgovori na ovakva vremenska pitanja su daleko od oitih. Alati za provjeru modela
automatski mogu odgovoriti na takva pitanja za vrlo komplicirane sustave i svojstva.

3. Sintaksa
spin [options] file
spin V
spin p primjer.pml
7

Sintaksa programa Spin se sastoji od kljune rijei spin, jedne ili niza naredbi, te na kraju
imena datoteke nad kojom se izvravaju naredbe.
Lista naredbi se pokree naredbom spin -help, nakon ega je navedeno kako se koriste
use: spin [-option] ... [-option] file
Note: file must always be the last argument
Zatim slijedi lista naredbi i objanjenja:
-A Applyslicing algorithm
-a Generate a verifier in pan.c
-B No final state details in simulations
-b Don't execute printfs in simulation
-C Print channel access info (combine with g etc.)
-c Columnated s r simulation output
-d Produce symbol-table information
-Dyyy Pass Dyyy to the preprocessor
-Eyyy Pass yyy to the preprocessor
-e Compute synchronous product of multiple never claims (modified by L)
-f ..formula.. translate LTL into never claim
-F File like f, but with the LTL formula stored in a 1-line fine
-g Print all global variables
-h At end of run, print value of seed for random nr generator used
-i Interactive (random simulation)
-I Show result of inlining and preprocessing
-J Reverse eval oreder of nested unlesses
-jN Skip the first N steps in simulation trial
-k Fname use the trailfile stored in file fname, see also t

7
S Interneta - http://spinroot.com/spin/Man/Spin.html
-L When using e, use strict language intersection
-l Print all local variables
-M Print msc-flow in Postscript
-m Lose msgs sent to full queues
-N Fname use never claim stored in file fname
-nN Seed for random nr generator
-O Use old scope rules /pre 5.3.0.)
-o1 Turn off dataflow-optimizations in verifier
-o2 Don't hide write-only variables in verifier
-o3 Turn off statement merging in verifier
-o4 Turn on rendezvous optimization in verifier
-o5 Turn on case caching (reduces size of pan.m, but affects reachability reports)
-o6 Revert to the old rules fot interpreting priority tags (pre version 6.2.)
-Pxxx Use xxx for preprocessing
-p Print all statements
-pp Pretty-print (reformat) stdin, write stdout
-qN Suppress io for queue N in printouts
-r Print recieve events
-S1 and S2 Separete pan source for claim and model
-s Print send events
-T Do not indent printf output
-t[N] Follow [Nth] simulation trail, see also k
-Uyyy Pass Uyyy to the preprocessor
-uN Stop a simulation run after N steps
-v Verbose, more warnings
-w Very verbose (whem combined with l or g)
-[XYZ] Reserved for use by xspin interface
-V Print verson number and exit




4. Nain rada alata
Kao to je ranije spomenuto, Spin nema grafiko suelje. No u pedagoke svrhe i u svrhe
lakeg uenja i koritenja Spina stvoreno je nekoliko grafikih suelja. Neki od njih su jSpin,
iSpin, Xspin, ...
Prikazat emo kako svaki od navedenih grafikih suelja izgleda i funkcionira, te kako Spin
funkcionira u svom osnovnom obliku, pokrenut iz komandne linije.

Slika 2. Spin pozvan iz komandne linije

Slika 2. prikazuje pozivanje Spina iz komandne linije, zadana je i naredba V koja ispisuje
verziju instaliranog programa. U sluaju da smo samo pozvali Spin, bez ikakve naredbe, tada
bi se ispisala verzija programa i greka koja govori da nije odabrana niti jedna datoteka, to je
i prikazano u drugom pozivu programa.



Slika 3. Prikaz naredbi Spina

Slika 3. prikazuje listu svih postojeih naredbi Spina i koja je njihova funkcija. Lista se
prikazala pozivajui naredbu --help. Takoer, prije liste naredbi objanjeno je na koji nain se
primjenjuju, odnosno sintaksa za upotrebu.


4.1. jSpin


Slika 4. jSpin alat

Slika 4. je prikaz jSpin alata, jednog od grafikih rjeenja alata Spin napravljenog u
programskom jeziku Java. Suelje alata jSpin je jednostavno i sastoji se od trake s
izbornicima, alatne trake i tri podesiva tekstualna okvira. Nizovi opcija Spina su automatski
integrirani i izlazna stanja Spina su filtrirana i prikazana u obliku tablice. Sve opcije jSpina su
podesive, neke za vrijeme kompajliranja, neke za vrijeme inicijalizacije kroz konfiguracijske
datoteke, a neke za vrijeme izvoenja.
1 alatna traka s izbornicima
2 traka s alatima Spina za pokretanje simulacije i verifikaciju
3 okvir u koji se upisuje ili uitava Promela program
1

2
3
4
5
4 okvir u kojem se nakon pritiska jedne od opcija alata ispisuje Spin kd koji se koristi u
komandnoj liniji
5 okvir u kojem se prikazuju rezultati Promela programa, odnosno izvrenja nakon
pokretanja


4.2. iSpin


Slika 5. iSpin grafiko suelje

Slika 5. prikazuje iSpin grafiko suelje koje je naizgled vrlo slino jSpinu.
Glavni okvir za tekst s lijeva nudi neke osnovne opcije za ureivanje i pretraivanje. Ukoliko
Promela kd koji je uitan u iSpinu ureujemo u nekom drugom ureivau teksta, nakon
spremljenih promjena u iSpinu biramo opciju ReOpen te se tada kd aurira. Opcije koje se
prve nude su provjera sintakse, provjera zalihosti (eng. Redundancy Check) koje se nalaze pri
samom vrhu ekrana. Razlika jSpina i iSpina se uoava s desne strane suelja, ondje je prikaz
automata (eng. Automata View), no ta opcija se mora posebno instalirati, nije u osnovnoj
funkciji iSpin-a. Klikom na prikaz automata pojavljuje se cijeli proces kao graf.


Slika 6. iSpin simulacija

Slika 6. prikazuje karticu za simulaciju programa iSpin. Ondje se mogu odabrati parametri
simulacije. Rezultati simulacije prikazuju se u donjem srednjem okviru, dok se naredbe Spina
onako kako one zaista sintaksno izgledaju prikazuju desno gore u okviru Background
command executed.



Slika 7. iSpin verifikacija
Pomaknemo li se u sljedeu karticu naziva Verification nudi nam se irok izbor opcija koji se
mogu birati ovisno o vrsti verifikacije. One najee opcije nalaze se s lijeve strane u svijetlo
plavom okviru, dok se one rjee koritene, proirene nalaze u desnom, sivom okviru. Nakon
odabranih opcija na tipku Run se pokree verifikacija, a njeni rezultati se ispisuju u donjem
desnom crnom okviru. Spin prvo generira verifikator, zatim kompajlira, izvrava i prikazuje
rezultate. Ako je sve u redu, u rezultatu se ispisuje kako niti jedna greka nije pronaena.
8



8
S Interneta - http://spinroot.com/spin/Man/GettingStarted.html
4.3. xSpin


Slika 8. xSpin suelje

Slika 8. prikazuje sljedee grafiko rjeenje alata Spin naziva xSpin. xSpin je vrlo
jednostavnog izgleda, takoer je jednostavan i za koristiti. Sastoji se od dva okvira, gornjeg za
Promela kd, te donjeg za generiranje naredbi i izvrenja. Klikom na file > open uitavamo
Promela kd nad kojim izvravamo simulaciju i verifikaciju.


Slika 9. xSpin pokretanje
Sve opcije za pokretanje nalaze se u Run kartici kao to je prikazano slikom 9.
Tipini koraci uporabe xSpina su redom:
1. Provjera sintakse kako bi dobili upozorenja
2. Nasumina simulacija za daljnje otklanjanje pogreaka
3. Odabiranje svojstava i tvrdnji za verifikaciju
4. Izvravanje slicing provjere za provjeru zalihosti
5. Izvravanje verifikacije za dokaz ispravnosti modela
6. Voena simulacija za pregled pogreaka koje su prijavljene verifikacijom
Takoer, kao i u iSpinu, Promela kd moe se ureivati u nekom drugom ureivau teksta
nakon ega se opcijom ReOpen aurira kd.
9



9
Help(Xspin Usage) xSpin programa ver. 5.2.5 17 April 2010.

Slika 10. xSpin simulacija
Slika 10. prikazuje tri prozora koja se otvaraju nakon poziva simulacije, a to su: izvrenja
simulacije (Simulation Output), vrijednosti podataka (Data Values) i sekvence grafa
(Sequence Chart).



5. Primjeri izvoenja alata
Primjer
10
:
Auriranje globalne varijable i izvravanje u petlji, 10 puta u svakom procesu:

10
Extended papers: Moti Ben-Ari - A Primer on Model Checking, str.40, oujak 2010.

integer n = 0;

process P
integer regP = 0;
do 10 times
load n into regP
increment regP
store regP into n
end

process Q
integer regQ = 0;
do 10 times
load n into regQ
increment regQ
store regQ into n
end

Takoer, prikazat emo i Promela kd
ovog programa:
byte n = 0, finish = 0;

active [2] proctype P() {
byte register, counter = 0;
do :: counter = 10 -> break
:: else ->
register = n;
register++;
n = register;
counter++
od;
finish++
}
active proctype WaitForFinish() {
finish == 2;
printf(n = %d\n, n)
}

Deklaracija active [2] proctype P() stvara dva procesa pa ne trebamo replicirati kod
modeliranja vie procesa. Naredba do-od ima dvije alternative, uvari (eng. the guards) su
evaluirali i nedeterministiki izbor je napravljen meu njima. Alternativni else se provodi
jedino ako su sve ostale alternative neispravne (eng. false). Dakle, naredba u ovom programu
implementira poznatu for petlju. Jedina instinska nepoznata tvrdnja je izraz finish == 2. U
Promeli, izraz moe biti koriten kao naredba i njeno znaenje je: ako je naredba istinita,
prijei na sljedeu naredbu; inae, proces je prekinut (eng. blocked). Naravno, takva tvrdnja
ima smisao samo u kontekstu popratnog programa u kojem jo jedan proces moe mijenjati
vrijednost varijabli, tako da izraz postaje istinit, a tako i izvran. Namjera je da vrijednost n
bude ispisana samo kada oba procesa P budu zavrena. Kada je finish jednak 2, jedini
izvrni proces je WaitForFinish i tada e se ispisati vrijednost od n.

6. Procjena praktine upotrebljivosti
Prilikom uenja i testiranja rada u alatu Spin koji se pokree preko komandne linije Windows
operativnog sustava, moemo zakljuiti nekoliko prednosti i mana to se tie same
praktinosti alata.
Kao prvu manu bismo naveli nedostatak GUI-a ili grafikog korisnikog suelja koji bi sam
alat uinio vie user friendly. Nepostojanje GUI-a poetniku uvelike oteava koritenje
alata jer je samo izvravanje naredbi u komandnoj liniji zastarjelo i oekuje od korisnika
poznavanje takvog naina rada. Usporedbom dviju simulacija programa nismo naili na velike
razlike to se tie same praktine upotrebljivosti. Pokretanjem iz komandne linije i
pokretanjem iz alata jSpin, ne vidimo razliku prilikom verificiranja pravilno napisanog kda,
osim toga to jSpin nakon izvravanja kda koji nema greki ispisuje poruku, odnosno
ukazuje korisniku da je program verificiran dok to u komandnoj liniji nije sluaj.
Kao manu prilikom pozivanja naredbi u komadnoj liniji moemo navesti neraspoznavanje
pogreaka u sintaksi (naredbe krivog naziva). Npr. spin ad imeprograma.pml. U
navedenom primjeru alat u komandnoj liniji nee javiti greku prilikom pozivanja naredbe, a
samim time to ne prikazuje niti da je verifikacija uspjena moe doi do zbunjivanja
korisnika.
Prilikom usporeivanja alata na osjetljivost na sintaksne i logike pogreke u kdu alat
uspjeno prepoznaje i upuuje na pogreke. Vjerujemo da bi prilikom rjeavanja
kompleksnijih problema u Promeli naili na jo imbenika koji mogu ocijeniti praktinost
alata, ali prilikom izvavanja i testiranja jednostavnih primjera nismo naili na druge
eventualne nedostatke.
7. Literatura

[1] Extended papers: Moti Ben-Ari - A Primer on Model Checking, oujak 2010., str.44
[2] http://spinroot.com/spin/Doc/roots.html
[3] http://www.cse.chalmers.se/~gersch/model-checking/What-is-Model-Checking.html
[4] http://spinroot.com/spin/Man/Spin.html
[5] http://spinroot.com/spin/Man/GettingStarted.html
[6] Help(Xspin Usage) xSpin programa ver. 5.2.5 17 April 2010.
[7] Extended papers: Moti Ben-Ari - A Primer on Model Checking, oujak 2010., str.40
[8] Theo C. Ruys - SPIN Beginners' Tutorial, version: Friday, 13 September 2002
[9] http://spinroot.com/spin/Man/Manual.html
[10] http://spinroot.com/spin/Doc/SpinIntro.pdf
[11] http://spinroot.com/spin/Doc/spin-quick-reference.pdf
[12] Formalne metode u oblikovanju sustava predavanja s FER-a, 2013.
[13] Ville R. Koskinen, Juha Plosila: Applications for the SPIN Model Checker A Survey,
TUCS, 2006.
[14] Prof. Dr. Bernhard Beckert, Dr. Vladimir Klebanov: Applications of Formaln
Verification, predavanje Karlsruhe Institue of Technology, 2010.

You might also like