Professional Documents
Culture Documents
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.