1 / 15

Jak najít softwarové chyby (včas) Formální verifikace programů

Jak najít softwarové chyby (včas) Formální verifikace programů. Ji ří Adámek. Zajímavé softwarové chyby (1). 23. září 1999: sonda Mars Climate Orbiter (NASA) ztracena při vstupu do atmosféry Marsu Důvodem byla softwarová chyba

palani
Download Presentation

Jak najít softwarové chyby (včas) Formální verifikace programů

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. Jak najít softwarové chyby (včas)Formální verifikace programů Jiří Adámek

  2. Zajímavé softwarové chyby (1) • 23. září 1999: sonda Mars Climate Orbiter (NASA) ztracena při vstupu do atmosféry Marsu • Důvodem byla softwarová chyba • Jedna část programového vybavení pro řízení letu používala metrické jednotky (kg, km), zatímco druhá používala jednotky anglické (libry, míle) • Z tohoto důvodu sonda sestoupila na nižší orbitu než měla a bylo s ní ztraceno spojení • Ztráty: 327.6 milionů dolarů (spolu se sondou Mars Polar Lander)

  3. Zajímavé softwarové chyby (2) • 21. září 1997: během vojenského cvičení se americká vojenská loď Yorktown z neznámých důvodů zastavila a skoro 3 hodiny zůstala nečinně stát na širém moři • Důvodem byla opět softwarová chyba • Operátor omylem zadal do počítače jako jeden z údajů nulu • Dělení nulou způsobilo tzv. výjimku, která nebyla odpovídajícím způsobem ošetřena • Výjimka byla propagována na všech 27 počítačů propojených do sítě • Jeden z nich způsobil vypnutí lodních motorů

  4. Uživatel Jak vznikají softwarové chyby? int main(int argc, char **argv) { int i; double result; int err_position; char *s; print_test("", NULL, &err_position); print_test("", &result, NULL); for (i = 0; i < sizeof(tests)/sizeof(char*); i++) { print_test(tests[i], &result, &err_position); } return 0; } Spustitelný kód Kompilátor Chyba v programu Chyba v kompilátoru Chyba v komunikaci Jiný spustitelný kód Chyba uživatele

  5. Co dělat se softwarovými chybami? • Produkovat méně softwarových chyb • Používání bezpečnějších programovacích jazyků a platforem • Snažit se chyby včas najít • Testování • Nenalezne všechny chyby • Není vždy možné pro safety-critical systems • Formální verifikace

  6. Co jsou formální verifikace? • Metody, které nám umožňují formálně (tj. na základě matematického důkazu) ověřit, že v programu nejsou chyby • V ideálním případě jsou úplné • Dají se využít i pro safety-critical systems • Zvláště důležité jsou verifikace automatické • Konstrukce verifikačních softwarových nástrojů

  7. Jaké dílčí problémy je třeba vyřešit?(1) • Chování programu i chyby je třeba formálně popsat • Popsali jsme všechny možné chyby? • Co s chybami ve formálních popisech?

  8. State transition system: receive received wait wait process sent send Property (CTL): AG (received => AF sent)

  9. “Klasický” přístup Program Model Vytvoření modelu (manuální) Vlastnosti „Klasický“ verifikační nástroj Výsledky

  10. „Přímý“ přístup: Program Vlastnosti Verifikační nástroj Výsledky

  11. Jaké dílčí problémy je třeba vyřešit?(2) • Co když je formální popis příliš velký? • Rafinované algoritmy a datové struktury, redukce, heuristiky, … • Možno až 10600 stavů • Hrubá výpočetní síla • Co když je formální popis nekonečně velký? • Poznámka o teorii vyčíslitelnosti

  12. Co všechno již umíme formálně verifikovat? • Hardware • Algoritmy řízení • Safety critical systems • Komunikační protokoly a distribuované algoritmy • Některé části jader OSS • Ovladače zařízení • Kryptografické protokoly

  13. Zajímavé verifikační nástroje • SPIN • Bell Labs • http://spinroot.com/spin/whatispin.html • Java PathFinder • NASA • http://ti.arc.nasa.gov/projects/jpf/

  14. Funguje to? • Experimental Evaluation of Verification and Validation Tools on Martian Rover Software. G. Brat, D. Drusinsky, D. Giannakopoulou, A. Goldberg, K. Havelund, M. Lowry, C. Pasareanu, A. Venet, R. Washington and W. Visser. Formal Methods in Systems Design Journal. Volume 25, Number 2-3, September 2004. http://ase.arc.nasa.gov/visser/fmsdjournal.pdf • SLAM and Static Driver Verifier: Technology Transfer of Formal Methods inside Microsoft. Thomas Ball, Byron Cook, Vladimir Levin and Sriram K. Rajamani. MSR-TR-2004-8. Invited talk/paper for Integrated Formal Methods 2004. ftp://ftp.research.microsoft.com/pub/tr/tr-2004-08.pdf

  15. Chcete vědět víc? • Přednáška (MFF UK): Behavior Models and Verification (SWI101) • http://dsrg.mff.cuni.cz/~adamek/fm/

More Related