1 / 18

Várady Gergely 2003.június.19.

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

ulf
Télécharger la présentation

Várady Gergely 2003.június.19.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

  9. Statikus programellenőrzés • Statikus programellenőrzés absztrakt interpretációval

  10. 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)?

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

  12. Intervallum absztrakció

  13. Futási példa (intervallum) while j < 0 j := j + 1 • Példaprogram: • Inicializálás: j  [0,) j  [-20,)

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

  15. Továbbfejlesztett Interpreter

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

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

  18. UML modell Statikus verifikáció Parser Automatikus kódgenerálás Programkód Parser Alacsony- szintű kód Jövőkép

More Related