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

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

Korlátos 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: Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Modellellenőrzés és tesztelés: egy kombinált megközelítés szoftverek verifikálására

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

Alapszintű formalizmusok

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek 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ő

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

Részletes szoftver tervek ellenőrzése

Az informatika logikai alapjai

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

Modell alapú tesztelés mobil környezetben

Modellek ellenőrzése és tesztelése

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

BPEL nyelvű üzleti folyamatok modellezése és formális ellenőrzése

A formális módszerek szerepe

Programozási nyelvek 6. előadás

Részletes tervek ellenőrzése

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

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

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

Programok értelmezése

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

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

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

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

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

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

2. Fejezet : Számrendszerek

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Bevezetés az informatikába

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

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

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Diszkrét matematika I.

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

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Kiterjesztések sek szemantikája

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

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

ködös határ (félreértés, hiba)

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

Kifejezések. Kozsik Tamás. December 11, 2016

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

Matematikai logika és halmazelmélet

Szoftverminőségbiztosítás

Logika és informatikai alkalmazásai

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33

Dinamikus modellek szerkezete, SDG modellek

Modell alapú tesztelés

Diszkrét matematika I.

Logika és informatikai alkalmazásai

Időzített átmeneti rendszerek

A modell-ellenőrzés gyakorlata UPPAAL

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

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

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

Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26

Predikátumkalkulus. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Vizsgáljuk meg a következ két kijelentést.

Algoritmusok bonyolultsága

Modell alapú tesztelés

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)

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

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

Deníciók és tételek a beugró vizsgára

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Az informatika logikai alapjai

Digitális technika (VIMIAA02) Laboratórium 1

Elérhetőségi probléma egyszerűsítése: Állapottér és struktúra redukció Petri-háló alosztályok

Szoftvertechnológia alapjai Java előadások

Digitális technika (VIMIAA02) Laboratórium 1

Számítógép és programozás 2

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

Sztochasztikus temporális logikák

Elsőrendű logika. Mesterséges intelligencia március 28.

Cselekvési tervek generálása. Máté Annamária

Térinformatikai algoritmusok Elemi algoritmusok

Matematikai alapok. Dr. Iványi Péter

A C# programozási nyelv alapjai

Szoftverminőségbiztosítás

Temporális logikai specifikációk vizsgálata

Logika és informatikai alkalmazásai

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

Java II. I A Java programozási nyelv alapelemei

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

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

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

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

Diszkrét matematika 1. középszint

Logika és informatikai alkalmazásai

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

Szoftver karbantartás

Logika és informatikai alkalmazásai

Kaposi Ambrus. Informatikai Kar. Pannonhalmi Bencés Gimnázium november 24.

Modell alapú tesztelés

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

Java II. I A Java programozási nyelv alapelemei

Átírás:

Szoftver-modellellenőrzés absztrakciós módszerekkel Hajdu Ákos Formális módszerek 2017.03.22. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék 1

BEVEZETŐ 2

Pontosság Költség Motiváció Bevezető o Forráskód közvetlen ellenőrzése o Gombnyomásra működjön Ne kelljen komoly háttérismeret Szoftverellenőrzési technikák o Statikus analízis Hibaminta keresők Absztrakt interpretáció o Modellellenőrzés 3

Bevezető Modellellenőrzés Formális modell Modellellenőrző algoritmus Formalizált követelmény Ok Ellenpélda 4

Bevezető Control-Flow Automata: CFA = (X, L, l 0, G) o X: Változók halmaza o L: Vezérlési helyek halmaza o l 0 : Kezdő vezérlési hely o G L Ops L: Élek halmaza Ops: Műveletek a vezérlés átlépésekor Pl. őrfeltétel, értékadás, x : int 0: x = 0 1: while (x < 5) { 2: x = x + 1 } 3: assert (x <= 5) Tipikus követelmény: error hely (l E ) ne legyen elérhető 5

Bevezető Modellellenőrzés Formális CFA modell Modellellenőrző algoritmus Adott Formalizált l E L nem követelmény elérhető Ok Ellenpélda 6

Bevezető CFA állapottere o Állapot: vezérlési hely + változók értéke (l, x 1, x 2,, x n ) L D x1 D x2 D xn D xi : i. változó doménje o Probléma: állapottér robbanás Pl.: 5 vezérlési hely, 2 db 32 bites int 5 x 2 32 x 2 32 7

Bevezető Propozicionális logika (nulladrendű) o Boolean változók és operátorok o SAT probléma: formula kielégíthető-e Példa: korlátos modellellenőrzés o Kifejezőerő nem mindig elégséges Elsőrendű logika o Függvények, predikátumok, kvantorok o Általános esetben nem eldönthető Satisfiability Modulo Theories (SMT) o Elsőrendű logikai formulák o Interpretált szimbólumok Pl. egész aritmetika p (p q) x, y z: p(f x, y, g z ) (x y + 1) (y 3) 8

ABSZTRAKCIÓ 9

Absztrakció Absztrakció bevezető o Általános matematikai eszköz o Részletek elhagyása o Könnyebb probléma Példa o Vezérlési hely absztrakció o l, x 1, x 2,, x n l o Önmagában általában kevés Kiegészítés predikátum-absztrakcióval CFA Absztrakt állapottér 10

Predikátumabsztrakció Predikátumabsztrakció o Változók konkrét értékei helyett predikátumok nyilvántartása o Absztrakt állapot: adott vezérlési helyhez tartozó konkrét állapotok, amelyekre ugyanazok a predikátumok teljesülnek Absztrakció kiszámolása o Konkrét állapotok felsorolása és összevonása o Példában 3x3 konkrét állapot 5 absztrakt o Állapottér robbanás Változók: x, y; D x = D y = 0,1,2 Predikátumok: (x = y), (x < y), (y = 2) 11 y\x 0 1 2 0 (x = y) 1 (x < y) (x = y) 2 (x < y) (y = 2) (x < y) (y = 2) (x = y) (y = 2)

Predikátumabsztrakció Absztrakció kiszámolása (más módszer) o Csak az absztrakt állapotok felsorolása o P predikátumhalmaz L 2 P lehetséges absztrakt állapot Példa o 3 predikátum 8 lehetséges absztrakt állapot (vezérlési helyenként) o Nem mind lehetséges Szűrés SMT megoldóval Pl. (x = y) (x < y) (y = 2) x = y x < y y = 2 1 X X X 2 X X 3 X X 4 X 5 X X 6 X 7 X 8 12

Absztrakt állapotok Predikátumabsztrakció Konkrét Absztrakt o (l, x 1,, x n ) (l, b 1,, b m ) o b i : Bool változó: i. predikátum teljesül vagy nem o Jelölés: p(b i ) = p i ha b i igaz p i egyébként Példa Változók: x, y; D x = D y = 0,1,2 Predikátumok: (x = y), (x < y), (y = 2) l x y 0,0,0 0, T, F, F 6,1,2 6, F, T, T l x = y x < y y = 2 13

Predikátumabsztrakció Absztrakt kezdőállapot, hibaállapot, átmenetek o Absztrakt kezdőállapot: (l, b 1,, b m ), ahol l = l 0 o Absztrakt hibaállapot: (l, b 1,, b m ), ahol l = l E o Absztrakt átmenet: létezik legalább egy konkrét átmenet a tartalmazott konkrét állapotok között Számítás SMT megoldóval (konkrét állapotok felsorolása nélkül) (l, b 1,, b m ) és l, b 1,, b m esetén: op: l, op, l G (legyen él a két hely között a CFA-ban) p b 1 p b m op p b 1 p b m kielégíthető Egzisztenciális absztrakció 14

Predikátumabsztrakció Példa P = x 5 6 vezérlési hely, 1 predikátum 12 absztrakt állapot 15

Predikátumabsztrakció Példa P = x 5 Átmenet példák o (2, true) (1, true) (2, x = x + 1, 1) G és x 5 (x = x + 1) x 5 kielégíthető: x = 0, x = 1 o (2, true) (1, false) (2, x = x + 1, 1) G és x 5 (x = x + 1) x 5 kielégíthető: x = 5, x = 6 16

Egzisztenciális absztrakció Egzisztenciális absztrakció tulajdonságai o Felülbecsli az eredeti modellt Minden konkrét útvonalhoz van megfelelő absztrakt útvonal Univerzálisan kvantált követelmény teljesül eredeti modellben is Nem lehet eljutni hibaállapotba (AG Hiba) eredetiben sem o Mi történik absztrakt ellenpélda esetén? Nem minden absztrakt útvonalhoz van megfelelő konkrét útvonal! 17

Absztrakt ellenpélda Absztrakt ellenpélda alakja o Vezérlési helyek és predikátumok sorozata o l 1, b 1,1,, b 1,m, l 2, b 2,1,, b 2,m,, l n, b n,1,, b n,m Konkrét útvonal keresése konkrét állapottér egy részének bejárása o Absztrakt ellenpélda által vezérelve o SMT megoldó segítségével Korlátos modellellenőrzéshez hasonlóan Egzisztenciális absztrakciónál egy átmenetre bemutatott módszer általánosítása n lépésre Ha van konkrét útvonal konkrét modell is hibás Ha nincs konkrét útvonal hamis ellenpélda 18

Absztrakt ellenpélda Példa x 2 = 0 x 2 < 5 x 3 = x 2 x 4 = x 3 + 1 x 1 5 x 2 5 x 3 5 x 1 = 3 x 2 = 0 x 3 = 0 x 4 =? Nem kielégíthető (x 4 5) (x 4 < 5) x 5 = x 4 (x 5 5) (x 5 5) x 6 = x 5 (x 6 5) P = x 5 Absztrakt ellenpélda (6 állapot) Műveletek az átmeneteken Állapotok predikátumai 19

Hamis ellenpélda Adott állapotig van út és onnan tovább is, de ezek különálló konkrét utak failure állapot Konkrét állapotok csoportosítása a failure állapotban o D = Dead-end : elérhető o B = Bad : következő állapotra lép o IR = Irrelevant : többi failure Hamis ellenpélda oka o Predikátumhalmaz nem különbözteti meg D-t és B-t 20

Hamis ellenpélda Hamis ellenpélda kiküszöbölése o Bővebb predikátumhalmaz (finomabb absztrakció) o D és B szétválasztása Konkrét állapotok felsorolása nélkül D és B leírása formulákkal SMT megoldó képes egy φ formulát generálni, ami szétválaszt (interpoláció) o P φ predikátumhalmaz esetén ez a hamis ellenpélda megszűnik Sőt, elég csak a failure állapotot vágni ( lusta absztrakció) További hamis ellenpéldák o Újabb predikátumok φ φ 21

Hamis ellenpélda Példa x 1 = 3 x 2 = 0 x 3 = 0 x 4 =? P = x 5 x < 5 22

Hamis ellenpélda Példa P = x 5 P = x 5, (x < 5) 23

A teljes algoritmus Konkrét modell Absztrakció Absztrakt modell Absztrakt ellenpélda Vizsgálat és finomítás Finomított absztrakt modell Konkrét modell Absztrakt modell Kezdő absztrakció Követelmény teljesül Modellellenőrzés OK Absztrakt ellenpélda Absztrakció finomítása Ellenpélda vizsgálata Hamis Ellenpélda Konkretizálható 24

A teljes algoritmus Counterexample-Guided Abstraction Refinement (CEGAR) o Automatikus módszer Minden lépése automatikusan működik Nem szükséges formális módszerek részletes ismerete o És a kezdeti predikátumhalmazt ki mondja meg? Lehet üres halmaz is akár Programban szereplő feltételes utasításokból Egyéb heurisztikák alapján Konkrét modell Absztrakt modell Kezdő absztrakció Követelmény teljesül Modellellenőrzés OK Absztrakt ellenpélda Absztrakció finomítása Ellenpélda vizsgálata Hamis Ellenpélda Konkretizálható 25

ESZKÖZÖK 26

SLAM2 Eszközök o Static Driver Verifier Research Platform (SDVRP) része o Felépítése Driver C kód: vizsgált komponens Platform model: környezet leírása Ellenőrzés: API használati szabályok betartása o Működése Boole-program előállítása predikátumabsztrakcióval Szimbolikus modellellenőrzés: BEBOP eszköz CEGAR ciklus o research.microsoft.com/en-us/projects/slam/ 27

BLAST Eszközök o Berkeley Lazy Abstraction Software Verification Tool o Bemenet: C program + követelmény (BLAST Query Language) o Predikátumabsztrakció Absztrakt elérhetőségi fa építése o Finomítás: új predikátum interpolációval Lusta absztrakció : új predikátum alkalmazása lokálisan o Korlátok: szorzás, bitműveletek, aritmetikai túlcsordulás o mtc.epfl.ch/software-tools/blast/index-epfl.php 28

CPAchecker Eszközök o The Configurable Software-Verification Platform o Bemenet: C program + specifikáció Assertion, error címke, deadlock, null dereference, o Nagymértékben konfigurálható Többféle absztrakció típus (nem csak predikátum) Absztrakt ellenpélda több prefixét tekinti Többféle lehetséges finomítás közül választ (finomítási stratégia) o cpachecker.sosy-lab.org/ 29

Eszközök Competition on Software Verification 2016 (SV-COMP) o sv-comp.sosy-lab.org/2016/ o 35 eszköz, 6661 bemeneti verifikációs probléma (program + követelmény) o Kategóriák Arrays (ArraysReach, ArraysMemSafety) Bit Vectors (BitVectorsReach, Overflows) Heap Data Structures (HeapReach, HeapMemSafety) Floats Integers and Control Flow (ControlFlow, Simple, ECA, Loops, Recursive, ProductLines, Sequentialized) Termination Concurrency Software Systems (DeviceDriversLinux64, BusyBox) 30

ÖSSZEFOGLALÁS 31

Összefoglalás Szoftver-modellellenőrzés o Szokásos probléma: állapottér robbanás o Megoldás: absztrakció Vezérlési hely + predikátumok Egzisztenciális absztrakció tulajdonsága o CEGAR: megfelelő absztrakció automatikus előállítása 1. Kezdő absztrakt modell elkészítése 2. Modellellenőrzés 3. Ellenpélda vizsgálata 4. Absztrakció finomítása o Eszközök 32