180 likes | 286 Views
Statikus Programellenőrzés Absztrakt Interpretáció Nagyhatékonyságú Logikai Programozási technikák segítségével. Várady Gergely 2003.június.19. Tartalom. Szoftver verifikáció, formális módszerek Absztrakt Interpretáció (AI) AI és a logikai programozás (XSB) Absztrakt interpreterek XSB-ben
E N D
Statikus ProgramellenőrzésAbsztrakt Interpretáció Nagyhatékonyságú Logikai Programozási technikák segítségével Várady Gergely 2003.június.19.
Tartalom • Szoftver verifikáció, formális módszerek • Absztrakt Interpretáció (AI) • AI és a logikai programozás (XSB) • Absztrakt interpreterek XSB-ben • AI kényszer-kielégítéssel (CLP) • Program verifikációs példa
Bevezetés • Hatalmas növekedés • HW SW • Nagy programrendszerek • Több 1000 fős fejlesztői és karbantartó csapatok • Programok jelentős szerepe az élet rengeteg területén • Szoftver megbízhatósági probléma fontossága nő
Szoftver Verifikáció • Verifikáció: a specifikációnak való megfelelés (helyesség) ellenőrzése • „Kézzel” ellenőrizhetetlen programok • Számítógéppel segített ellenőrzés kell
Tesztelés • Program szimulálása sok különböző környezetben (debug-olás) • Egyes végrehajtási utak ellenőrzése, de nem összes! • Valóságos rendszert ellenőrzi (nem modellt) • Csak kimutat hibákat, nem bizonyítja hiányukat
Formális módszerek • Program helyességének formális bizonyítása • Matematikai alapok: logika, automata- vagy gráfelmélet • Formális specifikáció: precíz, ellentmondásmentes • Program helyesség (általánosan) algoritmikusan eldönthetetlen probléma • Egyszerűsített program (modell) kimerítő vizsgálata absztrakció
Absztrakt Interpretáció • Absztrakt értékek és függvények • Vezérlési szerkezet (végrehajtási utak) absztrakciója • (Absztrakt) program végrehajtható • Absztrakció információ veszteség „igen–nem–eldönthetetlen” jellegű válaszok
Absztrakciók • Tartomány absztrakció, pl.: • Intervallum • Kongruencia • Függvény absztrakció • Vezérlés absztrakciója: • Fixpont szemantika • f fixpontja S, ha f (S) = S
Statikus programellenőrzés • Statikus programellenőrzés absztrakt interpretációval
XSB Prolog • Logikai programozási nyelv (Prolog) • Absztrakt tartomány eldönthetetlen feltételek (pl.: if) nemdeterminizmus • Terminálási problémák (while) • Fejlett rezolúciós stratégia (táblázás) a(1,1). a(2,1). tca(X,Y) :- a(X,Y). tca(X,Y) :- a(X,Z), tca(Z,Y). tca(1,2)?
Absztrakt Interpretáció XSB-vel • Egyszerű procedurális nyelv interpretálása • Egész és valós változók • Egyszerű aritmetikai műveletek (+, -, *) • Logikai operátorok (<,=,>) • Vezérlési struktúrák (if, while) • Egymásba ágyazott eljárások • Interpreter keret (evalStmt,evalExp) • Absztrakt interpreter: adott absztrakt megfelelő (változók, műveletek, vezérlés) • Fixpontok számítása automatikusan AST
Futási példa (intervallum) while j < 0 j := j + 1 • Példaprogram: • Inicializálás: j [0,) j [-20,)
Kényszer-kielégítés – CLP • Változók • Kényszerek (pl.: X < 3Y + 4Z) • Megoldás (kényszerek kielégítése) • Numerikus (CSP) • Szimbolikus (Constraint Solving) • Constraint Logic Programming (CLP) • Prolog + kényszer-kielégítés • Különböző tartományokon • Igazságértékek: clp(B) • Racionális / valós számok: clp(Q),clp(R) • Véges tartományok: clp(FD) • clpr könyvtár XSB
Program verifikációs példa proc bubble_sort(a[1..n] of real) for f := n to 2 do for i := 12 to n-1 do if a[i] > a[i+1] then dummy = a[i]; a[i] = a[i+1]; a[i+1] = dummy; fiododend • Példaprogram pszeudokódja • Futási eredmények
nemdeterminizmus Prolog XSB + fixpontszámítás táblázás + szimbolikus számítások clp(R) Összefoglalás • Absztrakt interpretáció: program dinamikus jellemzőinek statikus vizsgálata • Absztrakció állapottér bejárható, de információvesztés részleges döntés • Megvalósítás: • Alkalmazás program verifikációra
UML modell Statikus verifikáció Parser Automatikus kódgenerálás Programkód Parser Alacsony- szintű kód Jövőkép