Az előadás vázlata. A SPIN modellellenőrző rendszer. Motivációk. (,,Ha a Microsoft autókat gyártana )

Hasonló dokumentumok
A SPIN használata, példák II

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Automatikus tesztgenerálás modell ellenőrző segítségével

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Verifikáció és validáció Általános bevezető

Szoftverminőségbiztosítás

BUDAPESTI MÛSZAKI EGYETEM Méréstechnika és Információs Rendszerek Tanszék. SPIN Mérési útmutató. Készítette: Jávorszky Judit

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

Absztrakció a szoftvertervezésben az Alloy specifikációs nyelv segítségével

Alapszintű formalizmusok

Biztonsági folyamatirányító. rendszerek szoftvere

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Rendszermodellezés: házi feladat bemutatás

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Digitális eszközök típusai

A formális módszerek szerepe

Bokor Péter. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Autóipari beágyazott rendszerek. Kockázatelemzés

A fejlesztési szabványok szerepe a szoftverellenőrzésben

Számítógép-rendszerek fontos jellemzői (Hardver és Szoftver):

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Szoftver-modellellenőrzés absztrakciós módszerekkel

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Modell alapú tesztelés mobil környezetben

Részletes szoftver tervek ellenőrzése

Bevezetés a kvantum informatikába és kommunikációba Féléves házi feladat (2013/2014. tavasz)

Modell alapú tesztelés: célok és lehetőségek

Nagy bonyolultságú rendszerek fejlesztőeszközei

Formális módszerek GM_IN003_1 Bevezetés

Szoftver-technológia I.

Miskolci Egyetem Alkalmazott Informatikai Intézeti Tanszék A minőségbiztosítás informatikája. Készítette: Urbán Norbert

Közösség, projektek, IDE

Kommunikációs rendszerek teljesítőképesség-vizsgálata

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Osztott rendszer. Osztott rendszer informális definíciója

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Dr. Schuster György október 30.

A szoftver-folyamat. Szoftver életciklus modellek. Szoftver-technológia I. Irodalom

A formális módszerek szerepe a rendszerek biztonságának növelésében

Párhuzamos programozási platformok

Modellező eszközök, kódgenerálás

Intelligens eszközök fejlesztése az ipari automatizálásban Evosoft Hungary kft., Evosoft Hungary Kft.

Részletes tervek ellenőrzése

Szenzorhálózatok programfejlesztési kérdései. Orosz György

SZOFTVEREK A SORBANÁLLÁSI ELMÉLET OKTATÁSÁBAN

Operációs rendszerek II. Folyamatok ütemezése

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Programok értelmezése

A formális módszerek szerepe

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

8.3. AZ ASIC TESZTELÉSE

Bevezetés a programozásba

Modellezési alapismeretek

Tartalomjegyzék. Előszó... 10

IK Algoritmusok és Alkalmazásaik Tsz, TTK Operációkutatás Tsz. A LEMON C++ gráf optimalizálási könyvtár használata

Párhuzamos programozási platformok

Autóipari beágyazott rendszerek Dr. Balogh, András

I I. H é t f ő Óra IR IR 012 3

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Szolgáltatásintegráció (VIMIM234) tárgy bevezető

Mérő- és vezérlőberendezés megvalósítása ARM alapú mikrovezérlővel és Linux-szal

A MatekSzabadon LiveDVD

Forgattyús mechanizmus modelljének. Adams. elkészítése, kinematikai vizsgálata,

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Modellezési alapismeretek

Az értékelés során következtetést fogalmazhatunk meg a

Takács Árpád K+F irányok

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben. Ráth István

Informatikai technológiák szakirány Rendszertervezés ágazat

Formális módszerek. A formális modellezés és a formális verifikáció alapjai. dr. Bartha Tamás BME Közlekedés- és Járműirányítási Tanszék

alkalmazásfejlesztő környezete

V. Félév Információs rendszerek tervezése Komplex információs rendszerek tervezése dr. Illyés László - adjunktus

HARDVER- ÉS SZOFTVERRENDSZEREK VERIFIKÁCIÓJA

Orvostechnikai eszköz tesztelése DSS Unit test. Taliga Miklós BME-IIT

Operációs rendszerek. 3. előadás Ütemezés

Teszt terv Új funkció implementációja meglévı alkalmazásba

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

Szoftver követelmények meghatározása

R3-COP. Resilient Reasoning Robotic Co-operating Systems. Autonóm rendszerek tesztelése egy EU-s projektben

A TANTÁRGY ADATLAPJA

Mikrorendszerek tervezése

Az internet ökoszisztémája és evolúciója. Gyakorlat 1

Gyakorlatok. VITMMA09 Okos város MSc mellékspecializáció

Autóipari beágyazott rendszerek. Local Interconnection Network

Programozható vezérlő rendszerek KOMMUNIKÁCIÓS HÁLÓZATOK 2.

Szoftvertechnológia ellenőrző kérdések 2005

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. 0. TANTÁRGY ISMERTETŐ

Komponens alapú programozás Bevezetés

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Információtartalom vázlata

DECOS Nemzeti Nap. DECOS Nemzeti Nap. DECOS Nemzeti Nap

Modellezés Petri hálókkal. dr. Bartha Tamás dr. Majzik István dr. Pataricza András BME Méréstechnika és Információs Rendszerek Tanszék

Átírás:

Az előadás vázlata A SPIN modellellenőrző rendszer Németh L. Zoltán (zlnemeth@inf.u-szeged.hu) A modellellenőrzés jelentőssége, alapjai A SPIN használata A PROMELA nyelv szintaktikája, szemantikája (példák) Helyességi kritériumok megfogalmazása (LTL logika) A TIMELINE editor Kompex modellezési példák SZTE, Informatikai Tanszékcsoport 2004/2005 I. félév 2004.09.14 SPIN 1 1 2004.09.14 SPIN 1 2 Motivációk ICT(Information and Communication Thechnology) rendszerek mindennapjainkban Internet beágyazott rendszerek (embedded systems) Egyre nő az igény az ICT rendszerek megbízhatóságára (,,Ha a Microsoft autókat gyártana ) Ugyanakkor a rendszerek komplexitása, elképesztően gyorsan nő Ma már intuitív eszközökkel komplex rendszerek nem tervezhetők/készíthetők => a formális módszerek térhódítása mind a tervezésben mind az ellenőrzésben Arine 5 rakéta (1996) Sajnos indítás után 36 másodpercel felrobbant egy 64 bites lebegőpontos sebesség-adat 16 bites egésszé való hibás konvertálása miatt A Terrac-25 radioterápiás készülék balesetei(1985-87) A varsói légiszerencsétlenség (1993) Mars Pathfinder (1997) 2004.09.14 SPIN 1 3 2004.09.14 SPIN 1 4

Ellellenőrzés Egy (szoftver) rendszer helyes, ha megfelel a vele szemben tervezéskor támasztott elvárásoknak. Ebben mindenki egyetért, de hogyan lehet ezt ellenőrizni? Szoftver ellenőrzési techikák: Tesztelés Peer reviewing (társak általi ellenőrzés) Formális módszerek Tesztelés Minden szoftvertervezési projekt része A költségek 30-50%-át fordítják rá!!! Tesztgenerálás és futtatás (félig) automatikusan Az összehasonlítást általában ember végzi A tesztelés általában nem képes ezt miden esetet kimerítően bizonyítani. Csak általános, tipikus szituációkat vizsgál. Nehéz megmondani, hogy mikor érdemes abbahagyni,,a program tesztelés csak a hibák kimutatására használható, de sohasem azok hiányának igazolására. (Dijkstra) 2004.09.14 SPIN 1 5 2004.09.14 SPIN 1 6 Peer Reviewing Szoftverfejlesztők (ideális esetben nem a készítők!) elemzik a kódot, annak végrehajtása nélkül Annak ellenére, hogy manuális módszer meglehetősen hatékony: A hibák 31-93%-át (átlagban 60%-át) lehet így felefedezni Szoftverfejlesztési projektek közel 80%-ban alkalmazzák De a nehezen észrevehető hibák sokszor továbbra is megmaradnak Konkurens rendszerek este Egyidejű (konkurens) rendszerekre tervezése és ellenőrzése különösen nehéz!!! az folyamatok végrehajtási sorrendje nemdeterminisztikus legalább is nem megfigyelhető / kontrollálható Pl. a folyamatok ütemezés egyidejűleg egy nagy hálózat különböző egymástól távoli processzorain törtéhet. tesztelésnél a javításhoz a hibát reprodukálni kell tudni! 2004.09.14 SPIN 1 7 2004.09.14 SPIN 1 8

Konkurencia mindenütt Áruházban a vevők (áruk, pénztárak) Telefonközpont mi van, ha ketten egyszerre hívják egymást? Közlekedés (elsőbbségadás) jobbkézszabály körforgalom táblák, lámpák Bejárat 2 udvarias vagy 2 törtető ember találkozása Formális módszerek ellenőrzésre Formális módszer,,alkalmazott matematika ICT rendszerek modellezésére és elemzésére A rendszer helyességét matematikai szigorral bizonyítják A fejlesztés korai fázisában alkalmazhatók, már a tervezéskor Modell alalpú módszerek modell alapú szimuláció modellellenőrzés modell alapú tesztelés Deduktív módszerek theorem proovers proof checkers 2004.09.14 SPIN 1 9 2004.09.14 SPIN 1 10 Modellellenőrzés Adott a rendszer (program) egy véges állapotú modelljét készítjük el: (M) Egy logikai tulajdonság (p) írja le a specifikációt (a kívánt viselkedést) A modellellenőrzés egy olyan automatikus módszer, mely szisztematikusan ellenőrzi, hogy e tulajdonság fennáll-e a rendszerben. Ha a tulajdonság nem teljesül, akkor a modellellenőrző egy ellenpéldát ad, ami alapján a hiba javítható A modellelenőrzés alkalmazásai verifikáció: bizonyítsuk be, hogy a tervezés alatt álló rendszer M modellje teljesíti a követelményekben megfogalmazott p tulajdonságo(ka)t hibakutatás (debugging): keressünk hibákat az M rendszermodellben Persze a p tulajdonságnak helyesen kell leírni a specifikációt. A specifikációtól elvárás, hogy - zárt (minden esetre kiterjedő) és - ellentmondásmentes legyen 2004.09.14 SPIN 1 11 2004.09.14 SPIN 1 12

Alkalmazási területek Modellellenőrzés a rendszerfejlesztésben Biztonságkritikus rendszerek: orvosi berendezések repülésirányítás katonaság Missziókritikus rendszerek: űrkutatás Adatvédelmi rendszerek: bank rendszerek orvosi nyilvátartás De sokszor ipari alkalmazásoknál is kifizetődő - processor gyártás (Pl. Intel Pentium FDIV Bug) - szórakozatató elektronika - autóelektronika stb. 2004.09.14 SPIN 1 13 2004.09.14 SPIN 1 14 Klasszikus modellellenőrzés Modern modellellenőrzés Középpontban: absztrakció (szándékos információvesztés) az állapottérrobbanást elkerülendő Ebben a kurzusban: csak a klasszikus megközelítés lesz De a Spin támogatja a C programokból automatikus modellextrahálást is 2004.09.14 SPIN 1 15 2004.09.14 SPIN 1 16

Miért pont a SPIN? modern modellellenőrző eszköz (egyidejű) szoftver fejlesztésre specializált új elméleti eredmények hatékony implementációjára épül ingyenes jól dokumentált folyamatosan fejlesztett több mint 2000 felhasználó, számuk gyorsan bővül könnyen kezelhető grafikus interfész: XSPIN elismert: ACM Software System Award 2004.09.14 SPIN 1 17 2004.09.14 SPIN 1 18 Az Xspin dióhéjban Az Xspin szolgáltatásai: Promela modellek szerkesztése (+ szintaxisellenőrzés) szimulációja véletlen (random) interaktív irányított (guided) verifikációja kimerítő (exhaustive) bitstate hashing mód (nem garantál 100%-os bizonyítást) További szolgáltatások bármely processz automatájának felrajzolása LTL formula szerkesztő Súgó (verifikációs és szimulációs támpontok) SPIN - Bevezetés SPIN (= Simple Promela Interpreter) konkurens rendszerek, különösen kommunikációs protokollok logikai konzisztenciáját ellenőrző eszköz modellezési nyelve: Promela Promela (= Protocol/Process Meta Language) konkurens processzek dinamikus létrehozása kommunikáció csatornákon keresztül: szinkron (azaz randevú), vagy aszinkron (azaz bufferelt). szintaxisában a C programozási nyelvre hasonlít specifikációs nyelv véges állapotú rendszerek modellezésére 2004.09.14 SPIN 1 19 2004.09.14 SPIN 1 20

Egy példa A Pathfinder 1997, Július 4-én landolt a Marson Egy kis terepjárót bocsátott útjára Elképesztő fizikai és mechanikai problémákat kellett leküzdeni A vezérlőprogram hibája miatt néha előre nem látható pillanatokban megszakadt a kapcsolat a Földdel 2004.09.14 SPIN 1 21 A hibás programrész Két egyidőben futó (konkurens) folyamat: A: a gyűjtött adatok memóriába való továbbítását végzi B: a memóriában lévő adatokat a Földre küldi Két egyszerű szabály: Kölcsönös kizárás: a memóriához egyszerre csak az egyik folyamat férhet hozzá megvalósítása egy mutex lock (lakat) változó segítségével Prioritási szabály: a B folyamatnak mindig elsőbbsége van az A folyamattal szemben, azaz A csak akkor futhat, ha B munka nélküli (idle) állapotban van 2004.09.14 SPIN 1 22 A folyamatok működése tétlen unlock fut vár lock 2004.09.14 SPIN 1 23 A SPIN Model mtype = { free, busy, idle, waiting, running }; show mtype h_state = idle; show mtype l_state = idle; show mtype mutex = free; active proctype high() /* can run at any time */ { end: do :: h_state = waiting; atomic { mutex == free -> mutex = busy }; h_state = running; /* critical section - consume data */ atomic { h_state = idle; mutex = free } od } 2004.09.14 SPIN 1 24

A SPIN Model II. active proctype low() provided (h_state == idle) /* scheduling rule */ { end: do :: l_state = waiting; atomic { mutex == free -> mutex = busy}; l_state = running; } /* critical section - produce data */ atomic { l_state = idle; mutex = free } od $ spin a pathfinder $ gcc o pan pan.c $./pan Ellenőzése: hint: this search is more efficient if pan.c is compiled -DSAFETY pan: invalid end state (at depth 4) pan: wrote pathfinder.trail (Spin Version 4.1.2 -- 21 February 2004) Warning: Search not completed + Partial Order Reduction. 2004.09.14 SPIN 1 25 2004.09.14 SPIN 1 26 Full statespace search for: never claim - (none specified) assertion violations + acceptance cycles - (not selected) invalid end states + State-vector 20 byte, depth reached 4, errors: 1 5 states, stored 1 states, matched 6 transitions (= stored+matched) 0 atomic steps hash conflicts: 0 (resolved) (max size 2^18 states) 2004.09.14 SPIN 1 27 A hiba felderítése: $ spin t p pathfinder 1: proc 1 (low) line 40 "pathfinder" (state 1) [l_state = waiting] 2: proc 1 (low) line 41 "pathfinder" (state 2) [((mutex==free))] 2: proc 1 (low) line 41 "pathfinder" (state 3) [mutex = busy] 3: proc 1 (low) line 42 "pathfinder" (state 5) [l_state = running] 4: proc 0 (high) line 27 "pathfinder" (state 1) [h_state = waiting] 5: proc 0 (high) line 28 "pathfinder" (state 2) [((mutex==free))] transition failed spin: trail ends after 5 steps #processes: 2 h_state = waiting l_state = running mutex = busy 5: proc 1 (low) line 46 "pathfinder" (state 8) 5: proc 0 (high) line 28 "pathfinder" (state 2) 2 processes created 2004.09.14 SPIN 1 28