Model-checking programów w Javie

Podobne dokumenty
Praktyczne metody weryfikacji

Specyfikacje formalne

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Techniki zabezpieczania kodu sprawdzanie modeli. Temat VI

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Programowanie obiektowe

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie obiektowe

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Multimedia JAVA. Historia

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Translacja wprowadzenie

Języki i techniki programowania Ćwiczenia 2

Java jako język programowania

Formalna weryfikacja oprogramowania w lotnictwie

Praktyczne metody weryfikacji

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie obiektowe

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Programowanie kontraktowe w Javie

Co jeszcze mogą nam dać adnotacje? Adam Warski

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Java EE produkcja oprogramowania

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Scala - programowanie obiektowo-funkcyjne

Specyfikacje w praktyce na przykładzie JML-a. Sesja I

Tworzenie aplikacji w języku Java

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Programowanie obiektowe. Wprowadzenie

Język JAVA podstawy. wykład 1, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Java EE produkcja oprogramowania

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Techniki zabezpieczania kodu - kontrola wyjatków. Temat VIII

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Wykład Ćwiczenia Laboratorium Projekt Seminarium

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

1 Atrybuty i metody klasowe

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Programowanie obiektowe

Komputery przemysłowe i systemy wbudowane

Wprowadzenie do programowania współbieżnego

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wprowadzenie do języka Java

Definiowanie własnych klas

Współbieżność w środowisku Java

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Logika Temporalna i Automaty Czasowe

Metody dostępu do danych

4. Procesy pojęcia podstawowe

PyPy's Approach to Virtual Machine Construction

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie obiektowe

Programowanie obiektowe

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Spis treści. Wprowadzenie 15

Programowanie obiektowe

Szablony funkcji i szablony klas

Podstawy programowania obiektowego

Java Collections Framework

Programowanie obiektowe zastosowanie języka Java SE

Kurs WWW. Paweł Rajba.

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie obiektowe

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Dokumentacja aplikacji Szachy online

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Metody Kompilacji Wykład 1 Wstęp

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Programowanie obiektowe

Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Programowanie obiektowe

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Java Język programowania

Programowanie RAD Delphi

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Projektowanie obiektowe oprogramowania Testowanie oprogramowania Wykład 13 Wiktor Zychla 2014

Lista, Stos, Kolejka, Tablica Asocjacyjna

Transkrypt:

Niezawodność systemów współbieżnych i obiektowych 20 stycznia 2010

1 O model-checkingu raz jeszcze 2 Modelowanie Translacja 3 w działaniu 4 Porównanie metod Bibliografia

Cel O model-checkingu raz jeszcze Dla danego programu, chcemy sprawdzić: 1 brak zakleszczenia 2 spełnienie asercji 3 brak nieobsłużonych wyjatków 4...

Sposób działania O model-checkingu raz jeszcze Weryfikacja przez wyliczenie stanów programu. Struktura Kripkego gdzie M = (S, S 0, R, L), S zbiór stanów modelu, S 0 S stany poczatkowe, R S S funkcja przejścia, L : S 2 P etykietowanie predykatami.

Podstawowe problemy O model-checkingu raz jeszcze Eksplozja stanów Skomplikowany język do analizy: odwołania do zewnętrznych bibliotek dynamiczna alokacja pamięci obsługa watków Duży rozmiar weryfikowanych programów

Modelowanie Modelowanie Translacja Sposób działania: Na podstawie projektu programu stwórz jego model w innym języku programowania. Użyj model-checkera dla tego języka.

Modelowanie zalety i problemy Modelowanie Translacja Zalety Abstrakcja: wywołań funkcji bibliotecznych wywołań niskopoziomowych Problemy Ograniczony zakres języka docelowego Możliwe błędy przy tworzeniu modelu Model może nie odzwierciedlać końcowego programu.

Translacja Modelowanie Translacja Sposób działania: Przetłumacz automatycznie kod Javy do prostszego języka Użyj istniejacego model-checkera Implementacje: Java Pathfinder (1999) translacja do Promeli Java Model Checker (Stanford, 2000) translacja bajtkodu do języka SAL

Algorytm Petersona w Promeli Modelowanie Translacja bool turn, f l a g [ 2 ] ; byte cnt ; active [ 2 ] proctype P1 ( ) { p i d i, j ; i = _pid ; j = 1 _pid ; again : f l a g [ i ] = true ; t u r n = i ;! ( f l a g [ j ] && t u r n == i ) > cnt ++; assert ( cnt == 1 ) ; cnt ; f l a g [ i ] = false ; goto again }

Translacja: problemy Modelowanie Translacja Język docelowy nie pokrywa źródłowego Java Promela dynamiczna alokacja pamięci obsługa liczb zmiennoprzecinkowych... Ograniczenie jakościa docelowego model-checkera Potrzebne źródła tłumaczonego programu.

Java Pathfinder () w działaniu Projekt Robust Software Engineering Group przy NASA Historia 1999 Translator Java Promela 2000 Odrębny model-checker Javy 2003 Implementacja mechanizmu rozszerzeń 2006 4 W 2005 roku udostępniono źródła.

4 w działaniu Zastępuje maszynę wirtualna Javy śledzenie stanów programu możliwość powrotu w punktach wyboru Ograniczony zakres weryfikacji Nacisk na rozszerzalność Swiss army knife of Java verification

w działaniu Główne elementy: JVM Reprezentacja maszyny wirtualnej. Odpowiada za: zarzadzanie klasami, metodami i polami obiektów symulację wykonywania bajtkodu przechowywanie stanów obiektów Search Abstrakcja polityki przeszukiwania przestrzeni stanów.

w działaniu

Reprezentacja stanów w działaniu Motywacja: język obiektowy złożony opis stanu konieczność efektywnego porównywania stanów

Reprezentacja stanów w działaniu Elementy stanu: Stan watku: ramki stosu zmienne lokalne Elementy statyczne: klasy zmienne statyczne Zmienne dynamiczne: pola obiektów stan monitorów Przechowywanie: elementy w osobnych tablicach haszujacych stan ciag indeksów

Reprezentacja stanów w działaniu

Przeszukiwanie w działaniu

Przeszukiwanie w działaniu Generator wyboru: tworzony w punkcie wyboru wylicza możliwości Przykładowe generatory wyboru ThreadChoiceGenerator BooleanGenerator DoubleThresholdGenerator...

Redukcje częściowo-porządkowe w działaniu

Redukcje częściowo-porządkowe w działaniu Motywacja: znaczne zmniejszenie liczby stanów niewiele instrukcji oddziałujacych z innymi watkami Realizacja: wykonywana w locie przez JVM oparta o analizę statyczna kodu

Model Java Interface w działaniu Motywacja: niektóre wywołania metod sa nieistotne Realizacja: wykonanie tych metod delegowane do zwykłej maszyny wirtualnej Javy szybsze wykonanie redukcja liczby stanów dla modelowanej klasy należy utworzyć natywna klasę jej odpowiadającą (NativePeer)

Model Java Interface w działaniu

Model Java Interface w działaniu

Verify API w działaniu API używane do budowy modeli w Javie. niedeterministyczny wybór: Verify.getBoolean() Verify.getDouble()... wsparcie wyszukiwania: Verify.ignoreIf(p) Verify.interesting() kontrola atomowości: Verify.beginAtomic() Verify.endAtomic()

Definiowanie własności w działaniu Asercje w kodzie assert(node.next!= null); Własności public class MyProperty implements Property { boolean check (Search search, VM vm) {...}; String geterrormessage() {...}; }

Definiowanie własności w działaniu Obserwatorzy: wyszukiwania maszyny wirtualnej Przykłady zdarzeń odwiedzenie nowego stanu przełaczenie wykonywanego watku wykonanie instrukcji Możliwe łaczenie obserwatorów i własności.

w działaniu w działaniu uczta filozofów analiza pokrycia kodu protokół sekcji krytycznej

Na chwilę obecną... w działaniu Programy do ok. 10 000 linii kodu Brak wsparcia: java.net java.awt Ograniczone wsparcie: java.io Brak wsparcia dla logik temporalnych.

Rozszerzenia w działaniu jpf-aprop Weryfikacja zgodnie z adnotacjami: @Nonnull @Requires @Const @Ensures @NonShared @Invariant @SandBox jpf-shell Graficzny front-end dla. rtembed Weryfikacja systemów wbudowanych (RT).

K9 Mars Rover (2005) Porównanie metod Bibliografia

Eksperyment weryfikacyjny Porównanie metod Bibliografia Testowanie ręczne Analiza statyczna PolySpace Verifier Runtime checking JPaX, DBRover Model-checking

Eksperyment: statystyki Porównanie metod Bibliografia

Eksperyment: statystyki Porównanie metod Bibliografia

Eksperyment: wnioski Porównanie metod Bibliografia testowanie tradycyjne słabo spisuje się przy współbieżności analiza statyczna: niezbyt skuteczna w danym zastosowaniu runtime checking: niewielki narzut, dobre wyniki model-checking: skuteczny, ale kosztowny Wynik eksperymentu: X9: runtime checking + model-checking

Bibliografia Porównanie metod Bibliografia Java Pathfinder strona projektu http://babelfish.arc.nasa.gov/trac/jpf Brat, Havelund, Lerda, Park, Visser, Model Checking Programs [w:] Automated Software Engineering Journal vol. 10, nr 2, kwiecień 2003 Havelund, Visser et al., Experimental evaluation of Verification and Validation tools on Martian Rover Software [w:] Formal Methods in Systems Design Journal, vol. 25, wrzesień 2005