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

Hasonló dokumentumok
Hatékony technikák modellellenőrzéshez: Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

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

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

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

Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD)

Alapszintű formalizmusok

Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD)

Részletes szoftver tervek ellenőrzése

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

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

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

Részletes tervek ellenőrzése

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

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

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

Sztochasztikus temporális logikák

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

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

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

A formális módszerek szerepe

Zárthelyi mintapéldák. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

Alapszintű formalizmusok

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

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

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

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

Modell alapú tesztelés

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

Modell alapú tesztelés mobil környezetben

Modell alapú tesztelés

Modell alapú tesztelés

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

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ő

Alapszintű formalizmusok

Temporális logikák és modell ellenırzés

A formális módszerek szerepe

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Követelmények formalizálása: Temporális logikák

Modell alapú tesztelés

Szoftver karbantartási lépések ellenőrzése

Mesterséges Intelligencia MI

2. Visszalépéses keresés

BASH script programozás II. Vezérlési szerkezetek

A formális módszerek szerepe

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

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

Bevezetés az informatikába

Kiterjesztések sek szemantikája

2. Visszalépéses stratégia

Szoftverminőségbiztosítás

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

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

Szoftverminőségbiztosítás

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Forráskód generálás formális modellek alapján

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

Programok értelmezése

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Szoftver értékelés és karbantartás

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Algoritmusok helyességének bizonyítása. A Floyd-módszer

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

Algoritmusok bonyolultsága

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

A helyességbizonyítás klasszikus módszerei

Múlt és jövő: Új algoritmusok lineáris temporális tulajdonságok szaturáció-alapú modellellenőrzésére

5. A kiterjesztési elv, nyelvi változók

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 1/363

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Szoftver karbantartás

GROVER-algoritmus. Sinkovicz Péter. ELTE, MSc II dec.15.

Algoritmizálás és adatmodellezés tanítása 1. előadás

Algoritmusok bonyolultsága

Szoftver modul/unit tesztelés

Struktúra nélküli adatszerkezetek

Mintavételes szabályozás mikrovezérlő segítségével

A szoftverellenőrzés szerepe

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

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Mesterséges intelligencia 2. laborgyakorlat

Elosztott adatbázis-kezelő formális elemzése

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Intelligens Rendszerek Elmélete IRE 4/32/1

Java programozási nyelv

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

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

Szoftver újrafelhasználás

Amortizációs költségelemzés

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Átírás:

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

Hol tartunk most? Alacsony szintű formalizmusok (KS, LTS, KTS) Magasabb szintű formalizmusok Temporális logikák: PLTL, CTL, CTL* Rendszer modellje Követelmény megadása Alapszintű algoritmus Hogyan lesz hatékony? i Automatikus modellellenőrző n OK Ellenpélda 2

A tárgyalt technikák áttekintése CTL modellellenőrzés: Szimbolikus technika Szemantika alapú technika Címkézett állapothalmazok Műveletek állapothalmazokon Szimbolikus technika Karakterisztikus függvények (Boole logikai függvények): ROBDD reprezentáció Hatékony műveletek ROBDD-ken Invariánsok modellellenőrzése: Korlátos modellellenőrzés Logikai függvények igazságának keresése SAT megoldóval Adott mélységig folytatható modellellenőrzés: Korlátos hosszúságú ellenpéldák keresése Egy megtalált ellenpélda mindenképpen érvényes ellenpélda Ha nincs ellenpélda, az nem végleges eredmény 4

A korlátos modellellenőrzés alapja Az állapotteret nem egyben kezeljük Az útvonalak hosszát korlátozva végezzük az ellenőrzést Állapottér bejárás egyszerre csak adott útvonalhossz korlátig történik: részleges ellenőrzés Az útvonalhossz iteratívan növelhető Egyes esetekben van átmérője az állapottérnek: a leghosszabb útvonal, ami bejárható A korlát becsülhető: Intuíció a probléma méretéről Worst case végrehajtási idő alapján 6

Változók száma Felhasználható eredmény: SAT megoldók SAT megoldó: Adott logikai függvényhez olyan változó-értékeket (változó-behelyettesítést) keres, amelyekkel a függvény értéke igaz Példa: f(x 1,x 2,x 3 )=x 1 x 2 x 3 függvény esetén (1,1,0) bitvektor NP-teljes probléma, de hatékony algoritmusok vannak zchaff, MiniSAT, 100000 10000 1000 100 10 1 1960 1970 1980 1990 2000 2010 Év 7

Célkitűzés A probléma alkalmas leképzése logikai függvényre Modell és logikai követelmény együttesen Tipikusan invariáns követelmény ellenőrzésére: Minden állapotra előírt tulajdonság SAT megoldó használata modellellenőrzésre Ha a követelmény teljesül, a SAT megoldó nem talál behelyettesítést a függvényhez Ha a követelmény nem teljesül, a SAT megoldó által adott behelyettesítés lesz egy ellenpélda Az ellenpélda használható a hibakereséshez Invariáns tulajdonságok esetén jól használható módszer 8

Informális bevezetés Hogyan képezzük az állapotteret? Kiindulás a kezdőállapotból: I(s) karakterisztikus függvénnyel megadható Bejárás : Lehetséges továbblépések a C R állapotátmeneti reláció mentén Állapotátmeneti reláció (hová léphetünk tovább): C R (s,s ) karakterisztikus függvénnyel Ha s-ben vagyunk, C R (s,s ) alkalmazása adja meg a lehetséges s rákövetkezőket, majd s esetén C R (s,s ) alkalmazása adja meg a lehetséges s rákövetkezőket Egyszerűbb jelölés: Vesszők használata helyett felső index: C R (s 0,s 1 ) majd C R (s 1,s 2 ) Hogyan adjuk meg a követelményt? Invariáns: Minden állapotra előírt kritérium: általánosan egy p(s) predikátum Az ellenpéldát kijelölő logikai függvény részei (konjunkcióval): Kezdőállapotból indulunk: I(s) Lépegetünk az állapotátmeneti reláció mentén: C R (s,s ) sorozatos alkalmazása Ellenpélda (valahol p(s) nem teljesül): p(s) vagylagosan a bejárt állapotokra Ezt a függvényt igazzá tevő behelyettesítés adja az ellenpéldát! C R C R C R 9

M=(S,R,L) Kripke-struktúra Logikai függvények: Jelölések I(s): kezdőállapotok n változós karakterisztikus függvénye Háttér: Állapotok kódolása n hosszú bitvektorokkal C R (s,s ): állapotátmenetek 2n változós karakterisztikus függvénye Minden egyes átmenet karakterisztikus függvénye operátorral path(): k hosszú útvonalak (k+1)n változós karakt. függvénye 0 1 1 path( s, s,..., s k ) C ( i, i R s s ) 0 i k Kezdőállapotból induló, k hosszú útvonalak karakt. függvénye 0 0 1 k I(s ) path( s, s,..., s ) Vesszős változók helyett felső index az s állapotok kódolásában p(s): címkézett állapotok halmazának karakterisztikus függvénye Atomi kijelentésekre pl. P(s), Q(s): Az L címkézés határozza meg Általánosan: Állapotváltozók alapján konstruálható 10

Példa: A modell leképzése logikai függvénybe (0,0) s1 s3 (1,1) s2 (0,1) Kezdőállapot predikátum: I(x,y) = ( x y) Állapotátmeneti reláció: C R (x,y,x,y ) = ( x y x y ) ( x y x y ) ( x y x y ) ( x y x y ) s 0 : s 1 : s 2 : (0,0) (0,1) (1,1) 3 lépéses kibontás: path(s 0,s 1,s 2,s 3 ) = = C R (x 0,y 0, x 1,y 1 ) C R (x 1,y 1, x 2,y 2 ) C R (x 2,y 2, x 3,y 3 ) s 3 : 11

Példa: A modell leképzése logikai függvénybe (0,0) s1 s3 (1,1) s2 (0,1) Kezdőállapot predikátum: I(x,y) = ( x y) Állapotátmeneti reláció: C R (x,y,x,y ) = ( x y x y ) ( x y x y ) ( x y x y ) ( x y x y ) s 0 : s 1 : s 2 : s 3 : (0,0) (0,1) (1,1) 3 lépéses kibontás a kezdőállapotból: I(x 0,y 0 ) path(s 0,s 1,s 2,s 3 ) = = I(x 0,y 0 ) C R (x 0,y 0, x 1,y 1 ) C R (x 1,y 1, x 2,y 2 ) C R (x 2,y 2, x 3,y 3 ) 12

A probléma formalizálása Ha p(s) nem igaz valahol, akkor lesz olyan i, amire a következő függvény igaz értéket vesz fel: I s s s s p s 0 0 1 i i ( ) path(,,..., ) ( ) A fenti függvény igaz értékéhez tartozó behelyettesítést tud keresni a SAT megoldó, ez lesz az ellenpélda Azaz az (s 0,s 1,...,s i ) útvonalat meghatározó (i+1)*n változó értéket (i+1 állapot, állapotonként n bitérték) Ötlet: i=0,1,2,...-ra rendre megvizsgálni, hogy i hosszú útvonalon igaz lehet-e a következő függvény (ha igaz, akkor van ellenpélda): I s s s s p s 0 0 1 i i ( ) path(,,..., ) ( ) 13

Az algoritmus elemei Iteráció: i=0,1,2,... az útvonalak hosszára Ciklusmentes utakat vizsgálunk: lfpath 0 1 k 0 1 k i j lfpath( s, s,..., s ) path( s, s,..., s ) s s 0 i j k Megállási feltétel az iteráció során: Kezdőállapotból nincs i hosszú ciklusmentes út, azaz nem lehet igaz I s s s s 0 0 1 ( ) lfpath(,,..., i ) A rossz állapothoz (ahol p(s) nem igaz) nem is létezik i hosszú ciklusmentes út (kezdőállapottól függetlenül), azaz nem lehet igaz 0 1 lfpath(,,..., i i s s s ) p( s ) Ha megáll az iteráció, akkor p(s) mindenütt igaz Kifejthető az állapotváltozókkal 14

i 0 while True do end Az algoritmus 0 0 1 i if not SAT( I( s ) lfpath( s, s,..., s )) 0 1 i i or not SAT((lfpath( s, s,..., s ) p( s )) then return True 0 0 1 i i if SAT( I( s ) path( s, s,..., s ) p( s )) then i i 1 0 1 i return ( s, s,..., s ) Iteráció Ha az eredmény True: Az invariáns igaz. Van i hosszú út kezdőállapotból rossz állapotba Nincs már i hosszú ciklusmentes út kezdőállapotból Nincs i hosszú ciklusmentes út rossz állapotra Ha az eredmény egy (s 0,s 1,...,s i ) útvonalat meghatározó (i+1)n bitérték: ez lesz az ellenpélda olyan állapot eléréséhez, ahol p(s) nem igaz 15

Korlátos modellellenőrzés iterációval i=0 Modell útjainak kibontása i hosszig Ellenpélda keresés (SAT) i értékének növelése 1-gyel i és a határ összehasonlítása [van ellenpélda] Követelmény nem teljesül [elértük a határt] Követelmény teljesül 16

Összefoglalás: A BMC használata Invariánsok vizsgálatára hatékony Helyes módszer ciklusmentes utakat használva Ha van ellenpélda az adott kihajtogatási korlátig, azt megtalálja Ha ellenpéldát talál, akkor az valódi ellenpélda Állapottér kezelés SAT megoldó: szimbolikus technika, logikai függvényeken Adott kihajtogatásig részleges eredmény kapható Legrövidebb ellenpélda keresése Tesztgeneráláshoz használható Automatikus módszer A korlát kijelölése lehet heurisztikus (az állapottér átmérője ) Eszközök: Pl. Symbolic Analysis Laboratory (SAL): sal-bmc, sal-atg 19

Az Intel eredményei (hardver verifikáció) 20

Alkalmazás szoftverek esetén: A ciklusok problémája A ciklusok bejárása új állapotokat eredményez! Ciklus a szoftverben: Állapotváltozók módosulnak! Vezérlési gráf (CFG) példa Ciklus bejárással új állapotok jönnek létre 21

Korlátozott ciklusbejárás Modell kihajtogatás lehetőségei: Alapeset: Teljes kihajtogatás (path enumeration) Mindig szisztematikusan előre minden lehetséges ágon Korlátozott ciklusbejárás (loop unrolling) Ciklusokra egyenként lefutási korlátot adni és úgy kibontani Max. 2 lefutás 22

Szoftver modellellenőrzés F-SOFT (NEC): Hagyományos teljes széthajtogatás Unix rendszerprogramokra alkalmazták (pl. pppd) CBMC (CMU, Oxford University): C, SystemC támogatása Korlátozott ciklusbejárás (loop unrolling) Egyes Linux, Windows, MacOS rendszerkönyvtárak támogatása Integer aritmetikai műveletek leképzése: Bitvektor szintű megvalósítás ( bit-flattening, bit-blasting ) CBMC SMT megoldóval: Satisfiability Modulo Theories: Kiterjesztés különböző domének kezelésére (pl. integer aritmetika) SATURN: Korlátozott ciklusbejárás: Max. 2 lefutás Teljes Linux kernel ellenőrizhető: Null pointer hivatkozásokra 23

Összefoglalás: Technikák modellellenőrzéshez Szimbolikus modellellenőrzés ROBDD alakban kezelt karakterisztikus függvények Jól strukturált problémák esetén hatékony Pl. azonos viselkedésű résztvevők protokollokban Változók sorrendezésétől is függ a méret Korlátos modellellenőrzés invariánsokra Logikai függvények igazságának keresése (SAT eszköz) Korlátos hosszúságú ellenpéldák keresése Ha ad ellenpéldát, az mindenképpen érvényes Ha nincs ellenpélda, az még nem végleges eredmény (lehet, hogy hosszabb ellenpélda keresése szükséges) Tesztgenerálásra jól alkalmazható További lehetőség: Absztrakció 24

Összefoglalás: A modellellenőrzés jellemzői 25

Modellellenőrzés a tervezési folyamatban Követelmények elemzése Rendszer specifikálás Architektúra tervezés Követelmények Modellek Modul tervezés Modul implementáció Új alkalmazások: Modellellenőrzés a forráskód alapján (modell visszafejtés, absztrakció) Rendszer integrálás Rendszer tesztelés Üzemeltetés, karbantartás 26

A modellellenőrzés kedvező tulajdonságai Lehetséges nagy modellméretet is kezelni Akár 10 20, de példa van 10 100 -nál nagyobb méretre is Ez a rendszermodell mérete (pl. automaták hálózata) Hatékony technikák: Szimbolikus, SAT alapú (korlátos) Általános módszer Szoftver, hardver, protokollok, Teljesen automatikus eszköz, nem szükséges tervezői intuíció, erős matematikai háttérismeret Tételbizonyítás ennél bonyolultabb! Ellenpéldát generál, ami segít a hibák javításában 2007. évi Turing Award a modellellenőrzés kifejlesztőinek: E. M. Clarke, E. A. Emerson, J. Sifakis (1981) 27

Skálázhatóság A modellellenőrzés hiányosságai Explicit állapottér bejárást alkalmaz Hatékony technikák vannak ugyan erre, de nem garantált a jó skálázhatóság Elsősorban vezérlés-orientált alkalmazásokra Komplex adatstruktúrák nagy állapotteret jelenthetnek Nehéz az eredményeket általánosítani Ha egy protokoll helyes 2 résztvevő esetén, akkor helyes-e N résztvevő esetén? A követelmények formalizálása nem egyszerű Temporális logika nyelvjárások alakultak ki különböző alkalmazási területeken Példa: PSL (Property Specification Language, IEEE szabvány) 28