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

Hasonló dokumentumok
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)

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

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

Alapszintű formalizmusok

Részletes szoftver tervek ellenőrzése

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

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

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

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

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

Sztochasztikus temporális logikák

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

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

Modell alapú tesztelés

A formális módszerek szerepe

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

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

Modell alapú tesztelés

Alapszintű formalizmusok

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

Modell alapú tesztelés

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

Modell alapú tesztelés mobil környezetben

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

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

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

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)

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

Bevezetés az informatikába

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

2. Visszalépéses keresé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

Szoftverminőségbiztosítás

Modell alapú tesztelés

2. Visszalépéses stratégia

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

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

Kiterjesztések sek szemantikája

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

Szoftverminőségbiztosítás

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

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

A formális módszerek szerepe

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

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

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

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

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

A formális módszerek szerepe

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.

Mesterséges Intelligencia MI

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

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

Mesterséges intelligencia 2. laborgyakorlat

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

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

Szoftver karbantartás

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

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:

Programok értelmezése

Véges automaták, reguláris nyelvek

Algoritmusok bonyolultsága

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

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

Intelligens Rendszerek Elmélete IRE 4/32/1

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Szoftver modul/unit tesztelés

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

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

1. Egyszerű (primitív) típusok. 2. Referencia típusok

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.

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

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

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

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

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

Fordítás Kódoptimalizálás

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

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás alapjai. 5. előadás

Java programozási nyelv

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

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

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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

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

A szoftverellenőrzés szerepe

Átírás:

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 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 i Automatikus modellellenőrző n OK Ellenpélda 2

Ismétlés: A modellellenőrzés tanult technikái PLTL modellellenőrzés: Tabló módszer: Kifejezések felbontása a modell mentén s - p U q s - q s - p, s - X(p U q) Automata alapú megközelítés (kiegészítő anyag) CTL modellellenőrzés: s - p, s 1 - p U q s - p, s n - p U q Szemantika alapú módszer: Állapotok iteratív címkézése E(P U Q) E(P U Q) P P P {P,Q} E(P U Q) 3

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

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 temporális 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

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 9

Informális bevezetés Hogyan képezzük az állapotteret? Kiindulás a kezdőállapotból: I(s) karakterisztikus függvénnyel megadható Kibontás : Lehetséges továbblépések az á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 (kihajtogatunk) az állapotátmeneti reláció mentén: C R (s,s ) Ellenpélda (valahol p(s) nem teljesül): p(s) diszjunkció 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 10

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 átmenet karakterisztikus függvénye operátorral összefogva 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 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ó Vesszős változók helyett felső index 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 ) 13

A probléma formalizálása Bizonyítandó p(s) invariáns: Minden útvonal, ami a kezdőállapotból indul, olyan állapotokba jut, ahol p(s) igaz i s s s I s s s s p s 0 1 i 0 0 1 i i :,,..., : ( ( ) p a th (,,..., ) ( )) 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 ( ) p a th (,,..., ) ( ) A fv. igaz értékéhez tartozó behelyettesítést adja a SAT megoldó! Azaz az (s 0,s 1,...,s i ) útvonalat meghatározó (i+1)n változó értéket Első ö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 ( ) p a th (,,..., ) ( ) 14

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

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ó 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 True: Az invariáns igaz. 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 16

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 17

Az algoritmus finomítása Az iterálást nem 0-ról kezdjük Adott k hosszú útvonallal kezdjük, és erre először az ellenpéldát próbáljuk meg generálni: Ha van ilyen ellenpélda, akkor azt gyorsan megtaláljuk (iteráció nélkül)! Ezután vizsgáljuk, hogy k+1-re terminál-e az iteráció, majd növeljük az útvonal hosszát Nem garantált, hogy az eredményül kapott ellenpélda (útvonal) minimális hosszúságú Nem 0-ról kezdtük az iterációt; ha k nagy, akkor túllövünk a célon Itt k értékére heurisztika kell, ha rövid útvonalra törekszünk További megkötések a SAT megoldó bemenetére: Az előre haladó útvonalakon ne legyenek kezdőállapotok (ez nem ciklust jelent, hiszen akár több kezdőállapot is lehet) A visszafelé haladó útvonalakon ne legyenek olyan köztes állapotok, ahol p(s) nem igaz 18

A finomított algoritmus i k while True do end i 0 0 1 i j if SAT( I( s ) path( s, s,..., s ) ( p( s )) j 0 0 1 i then return ( s, s,..., s ) i 1 0 j 0 1 i 1 if not SAT( I( s ) ( I( s )) lfpath( s, s,..., s )) j 1 0 1 i 1 j i 1 or not SAT((lfpath( s, s,..., s ) p( s ) p( s )) then return True i i 1 Kezdő érték i j 0 Van i hosszú útvonal kezdőállapotból rossz állapoton át Nincs i+1 hosszú ciklusmentes út, (amiben nincs másik kezdőállapot) Nincs i+1 hosszú ciklusmentes út rossz állapotra (közben jó állapotokat érintve) 19

Ö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 20

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

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 Teljes kihajtogatás 22

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 23

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 24

Összefoglalás: Hatékony 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 az ellenpélda) Tesztgenerálásra jól alkalmazható 25

A modellellenőrzés jellemzői 26

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 27

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) 28

A modellellenőrzés hiányosságai Skálázhatóság 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 hatalmas állapotteret jelentenek 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) 29