Analiza programelor - curs

Prezentare

Marți, orele 18-20, sala A109 (Fac. de Automatică și Calculatoare), din 27 aprilie 2004, timp de 6 săptămâni
Cadru didactic: Marius Minea, marius@cs.upt.ro>

Cursul e adresat tuturor celor interesați de programare, limbaje, instrumente de dezvoltare și analiză, tehnici utilizate, rezultate noi, și perspectiva de a lucra în domeniu: proiecte de diplomă, și de cercetare.

Motivație

Sistemele software sunt tot mai complexe. Trebuie să detectăm erori sau probleme de securitate, sau și mai greu, să garantăm absența lor; să analizăm funcționarea și performanța programelor; sau chiar să definim un nou limbaj și să implementăm un mediu de dezvoltare. Deci, trebuie să știm ce tehnici și instrumente există, și cum să realizăm altele la nevoie.

Rezultatele de cercetare recente în domeniul analizei programelor sunt spectaculoase:

Conținut

Domeniul analizei programelor grupează o serie de tehnici pentru a deduce proprietăți ale programelor prin analiza codului sursă, fără a rula executabilul. Vom discuta patru abordări: analiza fluxului de date, analiza bazată pe constrângeri, interpretare abstractă, sisteme de tipuri, prezentând succint principiile și aplicabilitatea lor în practică: calculul fluxului de valori din program (pentru detectarea de atribuiri eronate), analiza atribuirilor indirecte prin pointeri, analiza structurilor alocate dinamic, simplificarea programelor la proprietățile relevante pentru analiza dorită, instrumentarea cu verificări la rulare sau înlocuirea lor cu verificări statice.

Cerințe

Noțiuni fundamentale de limbaje de programare, gândire algoritmică și matematică. Cursul e înrudit cu cele de limbaje și compilatoare, dar se poate urma independent.
Nu vor fi note sau teme, ci doar o serie de expuneri ca prim pas spre un curs opțional, dacă există interes.

Note de curs

  1. Introducere. Analiza fluxului de date. PDF, 1:1 și 1:6, pentru listat
  2. Analiza fluxului de date. Sistematizare. PDF, 1:1 și 1:6, pentru listat (versiune incompletă)
  3. Interpretare abstractă PDF, 1:1 și 1:6, pentru listat
    Folii cu exemple de widening/narrowing (Doug Gregor, RPI)
  4. Analiza bazata pe constrângeri
    Un articol de sinteză de Alex Aiken
  5. Sisteme de tipuri
    Foliile din cursul lui Zhendong Su (UC Davis)
    Luca Cardelli. Type Systems
  6. Aplicatii: Splint, ESC/Java, CIL, CCured ...

Cursuri la alte universități

Articole (lectură suplimentară)


Marius Minea
Last modified: Tue May 25 14:45:21 EEST 2004