FAV
: Informace pro studenty (zimní semestr 2011/2012)



Informace, termíny:

Zde se objevují upozornění na nové závažné informace, blížící se termíny apod.
  • Projekt: Do 30.10. je nutno registrovat nástroje, na které se jednotliví studenti zaměří. Bližší informace k projektu viz popis kurzu. Registraci proveďte zasláním emailu na mou adresu. Termín odevzdání vypracovaného eseje v pdf přes IS FIT je 14.12.2011 23:59 CET.
  • Průběžně doplněnovaný seznam zaregistrovaných studentů pro řešení projektu je uveden ZDE.


Přednášky



Monografie, přehledové články




Některé příbuzné kursy




Nástroje - experimentální i průmyslové


Upozornění: (1) Níže jsou uvedeny jen některé příklady existujících nástrojů, v žádném případě se nejedná o úplný seznam! (2) Uvedené krátké charakteristiky nebyly vždy získány na základě vlastní zkušenosti s příslušným nástrojem a nemusí být přesné -- naleznete-li nějakou nepřesnost či rozpor, prosím napište mi.

Model checking

  • Spin -- verifikace (nejen) distribuovaných SW systémů, vstupem je specializovaný modelovací jazyk Promela (existují překladače do Promely z některých dalších jazyků)

  • Slam a Static Driver Verifier -- verifikace driverů v MS Windows s využitím predikátové abstrakce
  • CPAchecker -- konfigurovatelný nástroj pro verifikaci software, zahrnuje model checking založený na predikátové abstrakci a interpolaci
  • SatAbs -- verifikace programů v C s využitím predikátové abstrakce založené na SAT a zachovávající sémantiku operací v C prováděných na úrovni bitových vektorů
  • Wolverine -- verifikace programů v C s využitím predikátové abstrakce založené na interpolaci
  • CBMC -- omezený model checking C programů
  • Threader -- predikátová abstrakce a modulární verifikace pro jednoduchou paralelní nadstavbu nad C programy
  • Blast -- verifikace C programů (již starší nástroj), základem je predikátová abstrakce a interpolace
  • Copper -- model checking paralelních C programů se sdílenými proměnnými a komunikací pomocí zasílání zpráv

  • ARMC -- predikátová abstrakce nad C programy pro potřeby ověřování bezpečnosti i živosti (konečnosti)
  • Terminator -- predikátová abstrakce pro potřeby ověřování konečnosti programů

  • CHESS -- omezený model checking paralelních programů v C, Microsoft (na pomezí testování)
  • dBug -- systematické testování (omezený model checking) paralelních programů v C využívajících pthreads i programů distribuovaných

  • Kratos -- predikátová abstrakce pro potřeby verifikace HW v SystemC

  • Java PathFinder -- JPF -- verifikace (i testování) Java programů

  • SMV -- verifikace (nejen) HW (specializovaný vstupní jazyk, překladač z Verilogu) využívající BDD
  • NuSMV -- reimplementace a rozšířeni SMV
  • Uclid -- omezený model checking, ověřování ekvivalence a invariantů HW
  • Incisive Formal Analysis -- komerční nástroj pro verifikaci hardware od Cadence
  • RuleBase -- verifikace HW, IBM
  • O-in -- verifikace HW, Mentor Graphics
  • Magellan -- verifikace HW, Synopsys
  • Jasper -- verifikace HW
  • Oski -- společnost neprodukuje přímo nástroj, ale nabízí verifikaci s využitím model checkingu

  • Uppaal -- model checking RT systémů popsaných časovanými automaty

  • Prism -- pravděpodobnostní model checker nad Markovskými systémy

  • ...

Statická analýza, analýza toku dat, abstraktní interpretace, ...

  • Přehled nástrojů pro statickou/dynamickou analýzu C kódu
  • Seznam nástrojů pro statickou analýzu na Wikipedii
  • Zajímavé srovnání některých nástrojů pro statickou analýzu

  • FindBugs -- volně dostupný nástroj pro statickou analýzu Javy (chybové vzory, analýza toku dat)

  • Coverity -- komerční nástroje pro statickou analýzu C/C++/Java (chybové vzory, analýza toku dat, vylučování nereálných chyb)
  • Klocwork Insight -- komerční nástroje pro statickou analýzu C/C++/Java/C# (chybové vzory, analýza toku dat, vylučování nereálných chyb)
  • CodeSonar -- komerční nástroje pro statickou analýzu C/C++
  • PolySpace -- komerční nástroje pro statickou analýzu vestavěných systémů reálného času v C, C++, Adě
  • PREfast a další -- statická analýza u Microsoftu
  • AbsInt a Astrée -- komerční nástroje pro statickou analýzu (abstraktní interpretaci) vestavěných systémů, zejména analýzu časování a práce se zásobníkem

  • Clang Static Analyzer -- statický analyzátor pro C a Objective C, využívá chybové vzory, analýzu toku dat
  • Cppcheck -- statický analyzátor pro C/C++, relativně jednoduché vyhledávání chybových vzorů v toku řízení
  • cppclean -- statická analýza programu v C++, vyhledávání chybových vzoru nad AST
  • Splint -- statická analýza C programu, vyhledávání chybových vzorů v toku řízení, anotace pro zpřesnění analýzy
  • Sparse -- statická analýza pro jádro Linuxu
  • Stanse -- statická analýza nad C (chybové vzory, zamykání, uváznutí) vyvíjený na FI MU

  • Space Invader -- nástroj pro verifikaci C programů zaměřený na manipulaci s dynamickými datovými strukturami (již starší nástroj)
  • Predator -- nástroj pro verifikaci C programů zaměřený na manipulaci s dynamickými datovými strukturami vyvíjený na FIT VUT
  • SLAyer -- nástroj pro verifikaci C programů zaměřený na manipulaci s dynamickými datovými strukturami vyvíjený v Microsoft Research
  • jStar -- nástroj pro verifikaci Java programů zaměřený na manipulaci s dynamickými datovými strukturami
  • CINV -- experimentální systém pro verifikaci komplexních vlastností programů se seznamy obsahujícími užitečná data

  • KLEE -- kombinace statické analýzy založené na symbolickém provádění a testování
  • Yogi -- statická analýza založená na symbolickém provádění a predikátové abstrakci

  • SPEED -- symbolická analýza časových a prostorových nároků programů (tj. automatická analýza složitosti)

  • ...

Theorem proving, SAT solving, SMT solving, rozhodovací procedury

  • PVS -- interaktivní theorem prover
  • Coq -- interaktivní theorem prover
  • HOL -- interaktivní theorem prover
  • ACL2 -- interaktivní theorem prover

  • SAT Competition -- soutěž o nejlepší nástroj pro řešení SAT problému
  • Glucose -- SAT solver

  • SMT-Comp -- soutěž o nejlepší nástroj pro řešení problémů SMT (SAT modulo teorie)
  • Z3 -- SMT solver
  • Barcelogic -- SMT solver
  • CVC3 -- SMT solver
  • Hampi -- nástroj pro řešení vztahů nad řetězci (využitelný např. při analýze webových útoků apod.)

  • VCC -- verifikace anotovaných programů v C
  • ESC/Java2 -- verifikace anotovaných programů v Javě

  • ...

Další seznam nástrojů pro formální analýzu a verifikaci

Dynamická analýza, pokročilé testování

  • Přehled nástrojů pro statickou/dynamickou analýzu C kódu

  • ConTest -- testování paralelních Java programů (kombinováno s výzkumem možností automatického sebe-opravování a využití formálních metod: projekt Shadows)
  • SearchBestie -- prostředí pro testování paralelních Java programů založené na prohledávání prostoru parametrů testů vyvíjené na FIT VUT

  • Valgrind -- dynamická analýza (založená na interpretaci) koretní práce s pamětí vlákny

  • CSmith -- nástroj pro fuzz testování překladačů



Poslední modifikace: 10. března 2012
Připomínky k obsahu stránky posílejte na e-mail: vojnar@fit.vutbr.cz