Modellellenőrző szoftverek

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

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

Szoftverminőségbiztosítás

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

Alapszintű formalizmusok

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

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

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

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

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

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

Formális módszerek GM_IN003_1 Bevezetés

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

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

Rendszermodellezés: házi feladat bemutatás

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

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

Részletes szoftver tervek ellenőrzése

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

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

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

Digitális eszközök típusai

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

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

... 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.

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

Modell alapú tesztelés mobil környezetben

Részletes tervek ellenőrzése

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

A formális módszerek szerepe

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

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

Nagy bonyolultságú rendszerek fejlesztőeszközei

Bevezetés a programozásba

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

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

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

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

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

Szoftver-technológia I.

Modellezési alapismeretek

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

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

Élettartam teszteknél alkalmazott programstruktúra egy váltóvezérlő példáján keresztül

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

Hatékony iteratív fejlesztési módszertan a gyakorlatban a RUP fejlesztési módszertanra építve

Közösség, projektek, IDE

Modellezési alapismeretek

Programozási nyelvek (ADA)

Programfejlesztési Modellek

A formális módszerek szerepe

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

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

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

Formális verifikáció Modellezés és modellellenőrzés

HARDVER- ÉS SZOFTVERRENDSZEREK VERIFIKÁCIÓJA

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

8.3. AZ ASIC TESZTELÉSE

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

Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Fejlesztés kockázati alapokon 2.

Szoftverminőségbiztosítás

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

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

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

Szoftver-mérés. Szoftver metrikák. Szoftver mérés

(kernel3d vizualizáció: kernel245_graph.mpg)

Formális modellezés és verifikáció

Párhuzamos programozási platformok

Modell alapú tesztelés

alkalmazásfejlesztő környezete

Utolsó módosítás:

Digitális technika (VIMIAA02) Laboratórium 4

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Programtervező informatikus MSc nappali tagozat ajánlott tanterv 2018

Java programozási nyelv

Dr. Schuster György október 30.

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Podoski Péter és Zabb László

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

SPECIÁLIS CÉLÚ HÁLÓZATI

Digitális technika (VIMIAA02) Laboratórium 4

Követelmények formalizálása: Temporális logikák. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Ember és robot együttműködése a gyártásban Ipar 4.0

Forgalmi modellezés BMEKOKUM209

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Programozási módszertan

A SZOFTVERTECHNOLÓGIA ALAPJAI

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai

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

Bevezetés a párhuzamos programozási koncepciókba

Átírás:

Modellellenőrző szoftverek Dr. Németh L. Zoltán (zlnemeth@inf.u-szeged.hu) Első előadás SZTE, Informatikai Tanszékcsoport 2008/2009 I. félév 2008.09.11 Modell 1 1

Az előadás vázlata A modellellenőrzés jelentőssége, alapjai A SPIN és használata A PROMELA nyelv szintaktikája, szemantikája (példák) Helyességi kritériumok megfogalmazása (LTL logika) Komplex konkurens modellezési példák Időzített rendszerek és időzített automaták Az UPPAAL modellellenőrző Példák időzített rendszerek ellenőrzése 2008.09.11 Modell 1 2

Motivációk ICT(Information and Communication Thechnology) rendszerek mindennapjainkban renszerek vezérlése (mindenhol) internet: e-bankok, e-vásársárlás, e-ügyintézés, e- beágyazott rendszerek (embedded systems): intelligens kártyák, mobilok, autók, szórakoztató elektronika, orvosi műszerek, stb. Egyre nő az igény az ICT rendszerek megbízhatóságára (A,,Ha a Microsoft autókat gyártana vicc nagyon komoly! ) Ugyanakkor a rendszerek komplexitása, elképesztően gyorsan nő (komponensek száma, funkcionalitása, interaktivitás, környezettől való függés, nem determinisztikusság, időfüggés, elosztottság, stb. ) Ma már intuitív eszközökkel komplex rendszerek nem tervezhetők/készíthetők => a formális (matemetikai( matemetikai) ) módszerek m térht rhódítása mind a tervezésben mind az ellenőrz rzésben 2008.09.11 Modell 1 3

Sajnos Arine 5 rakéta (1996) 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) 6 ember halt meg túladagolás miatt A varsói légiszerencsétlenség (1993) Mars Pathfinder (1997) A megbízható működés elengedhetetlen biztonsági és anyagi okokból. 2008.09.11 Modell 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 Hardver ellenőrzési techikák: - Szerkezeti elemzés (Structural Analysis) - Emuláció - Szimuláció 2008.09.11 Modell 1 5

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 A program tesztelés s csak a hibák k kimutatására használhat lható,, de sohasem azok hiány nyának nak igazolására ra. (Dijkstra) 2008.09.11 Modell 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 2008.09.11 Modell 1 7

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! De pontosan ugyanazt a futást, ami a nemdeterminisztikus környezettől is függhet hogyan ismételjük meg? 2008.09.11 Modell 1 8

Konkurencia mindenütt Áruházban a vevők (áruk, pénztárak), a bejáratnál: 2 udvarias vagy 2 törtető ember találkozása 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 Osztott rendszerek, többfelhasználós rendszerek, adtbázisok stb. 2008.09.11 Modell 1 9

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 tétel bizonyítók (theorem proovers) bizonyítás ellenőrzők (proof checkers) 2008.09.11 Modell 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ó 2008.09.11 Modell 1 11

A modellelenőrzés végeletei 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/teljes (minden esetre kiterjedő) és - ellentmondásmentes legyen 2008.09.11 Modell 1 12

Verifikácó - validáció Maga a modellellenőrzés, a verifikáció csak akkor ér valamit, ha 1. a modell helyesen írja le a rendszert és 2. a specifikáció helyesen írja le a követelményeket Ezért ezt is ellenőrizni kell, ezt szokták validációnak hívni. Másként fogalmazva: validáció: Jó rendszert építünk-e? (tényleg erre van-e szükség?) verifikáció: Jól építjük-e a rendszert? (a modell teljesíti-e a már validált specifikációt) 2008.09.11 Modell 1 13

Alkalmazási területek 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. 2008.09.11 Modell 1 14

Modellellenőrzés a rendszerfejlesztésben 2008.09.11 Modell 1 15

Klasszikus modellellenőrzés 2008.09.11 Modell 1 16

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 pl. a SPIN támogatja a C programokból automatikus modellextrahálást is 2008.09.11 Modell 1 17

A klasszikus modellellenőrzés folyamata I. Modellezési fázis (modeling phase) II. a vizsgált rendszer modelljének megalkotása modelleíró + modellellenőrző szoftver segítségével a rendszer vizsgálata/javítása néhány szimulációval az ellenőrizendő tulajdonságok megadása valamilyen specifikáció leíró nyelvben Futtatási fázis (running phase) a modellellenőrző futattása sorra a tulajdonságok ellenőrzésére 2008.09.11 Modell 1 18

A klasszikus modellellenőrzés folyamata II. III. Elemzési fázis (analysis phase) a tulajdonság teljesül? -> ellenőrizzük a következőt (ha még van) a tulajdonság nem teljesül? -> 1. analizáljuk a kapott ellenpéldát szimulációval 2. tervezési/modellezési hiba -> módosítsuk a modellt VAGY a kért tulajdonságban van a hiba -> módosítsuk a specifikációt 3. ismételjük meg az ellenőrzést (azaz vissza II-re) elfogyott a memória? próbáljuk ki a modellellenőrző más beállításait (a modell szimmetria tulajdonságainak kihasználása, szimbólikus technikák) alkalmazzunk erősebb absztrakciót a modellezésben, esetleg csak külön ehhez a tulajdonsághoz elégedjünk meg sok véletlenül választott és nem az összes lehetséges állapot vizsgálatával 2008.09.11 Modell 1 19

A modellellenőrzés előnyei általános verifikációs technika (hw, sw, beágyazott) paricális verifikáció támogatása, azaz a specifikációnak nem kell teljesnek lennie a hibákat valószínűségüktől függetlenül deríti fel diagnosztikus információt (ellenpédát) is ad az ellenőrzés automatikus, gombnyomásra megy gyorsan terjed ipari alkalmazásokban is könnyen integrálható a meglevő rendszerfejlesztési ciklusba szilárd matematikai alapokra épül (gráf algoritmusok, adatszerkezetek, logika) 2008.09.11 Modell 1 20

A modellellenőrzés hátrányai elsősorban vezérlés-központú rendszerkebn alkalmazható, nem adat-központúakban eldönthetőségi kérdésektől függhet (pl. végtelen állapottér, absztakt adattípusok esetén) csak a renszer modelljét ellenőrzi, nem deríti fel a gyártási (hw) és kódolási (sw) hibákat, (tesztelés is kell!). csak a megfogalmazott tulajdonságokat ellenőrzi, melyek nem feltétlenül teljesek (azaz minden esetre kiterjedőek) az állapottér robbanás komoly memória korlátokat ad a helyes absztrakció megtalálása szakértelmet igényel maga a modellellenőrző szoftver is hibás lehet az ellenőrzés nem általánosítható (tetszőleges paraméterekre és komponens számra) 2008.09.11 Modell 1 21

Az egyik szoftver a SPIN. 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 vagy JSPIN elismert: ACM Software System Award 2008.09.11 Modell 1 22

2008.09.11 Modell 1 23

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) 2008.09.11 Modell 1 24

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 pufferelt). szintaxisában a C programozási nyelvre hasonlít specifikációs nyelv véges állapotú rendszerek modellezésére 2008.09.11 Modell 1 25

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 2008.09.11 Modell 1 26

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 2008.09.11 Modell 1 27

A folyamatok működése unlock tétlen fut lock vár 2008.09.11 Modell 1 28

A SPIN Model mtype = { free, busy, idle, waiting, running }; mtype h_state = idle; mtype l_state = idle; 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 } 2008.09.11 Modell 1 29

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 2008.09.11 Modell 1 30

Ellenőzése: $ spin a pathfinder $ gcc o pan pan.c $./pan 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. 2008.09.11 Modell 1 31

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) 2008.09.11 Modell 1 32

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 2008.09.11 Modell 1 33

A hiba egy lehetséges javítása active proctype low() provided (h_state == idle) { end: do :: l_state = waiting; (h_state == idle ) atomic { mutex == free -> mutex = busy}; l_state = running; /* critical section - produce data */ atomic { l_state = idle; mutex = free } od} Őrfeltétel, csak akkor lépheti át a folyamat, ha igaz 2008.09.11 Modell 1 34