Formalna weryfikacja oprogramowania w lotnictwie

Podobne dokumenty
Kompilator języka C na procesor 8051 RC51 implementacja

Microsoft IT Academy kurs programowania

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

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Specyfikacje formalne

Wprowadzenie do programowania

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Zaawansowane algorytmy i struktury danych

Podstawy programowania w języku C

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Szablony funkcji i szablony klas

Podstawy Programowania C++

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,

KONSTRUKCJA KOMPILATORÓW

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Język ludzki kod maszynowy

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Tablice, funkcje - wprowadzenie

Składnia języka EPL. EUCIP Programming Language

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Paradygmaty programowania

Podstawy programowania skrót z wykładów:

ZASADY PROGRAMOWANIA KOMPUTERÓW

Podstawy programowania. Wprowadzenie

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy Informatyki. Sprawność algorytmów

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

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

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

Języki i techniki programowania Ćwiczenia 2

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

Model-checking programów w Javie

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podstawowe części projektu w Javie

Instrukcje sterujące. Programowanie Proceduralne 1

Wskaźniki w C. Anna Gogolińska

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Język C zajęcia nr 11. Funkcje

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

WERYFIKACJA WSPOMAGANA KOMPUTEROWO

Wykład 2. Poprawność algorytmów

Podstawy programowania komputerów

Diagramy UML, przykład problemu kolizji

Stałe, tablice dynamiczne i wielowymiarowe

Programowanie w elektronice: Podstawy C

Wprowadzenie do UML, przykład użycia kolizja

Rodzaje Code slicing w weryfikacji Narzędzia Literatura. Code slicing. Bartłomiej Wołowiec. 16 lutego 2011

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Analiza konstrukcji zawierających wskaźniki. Piotr Błaszyński

- - Ocena wykonaniu zad3. Brak zad3

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Wskaźniki. Programowanie Proceduralne 1

Programowanie obiektowe

KOTLIN. Język programowania dla Androida

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Rok akademicki: 2013/2014 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Wprowadzenie do weryfikacji oprogramowania systemów automatyki z wykorzystaniem Frama C

1 Podstawy c++ w pigułce.

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Przyczyny dwustopniowego tłumaczenia

Zapisywanie algorytmów w języku programowania

KARTA KURSU. Wstęp do programowania

Podstawy programowania.

Podstawy Programowania

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

Wstęp do programowania

Przykładowe sprawozdanie. Jan Pustelnik

Zarządzanie pamięcią operacyjną

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

PARADYGMATY PROGRAMOWANIA Wykład 4

Efekty uboczne błędów

Zmienne, stałe i operatory

PROGRAMOWANIE w C prolog

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej

Pętla for. Wynik działania programu:

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Szablony. Szablony funkcji

Programowanie komputerowe. Zajęcia 4

METODY PROGRAMOWANIA

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

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

Wstęp. do języka C na procesor (kompilator RC51)

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wykład 4: Klasy i Metody

Transkrypt:

30 listopada 2010

Motywacja Wymagania ACSL CIL SCADE wysoka niezawodność, zmniejszenie kodu obsługi sytuacji wyjątkowych, DO178B

Motywacja Wymagania ACSL CIL SCADE Wymagania stawiane nowemu podejściu: możliwość sprawdzania kodu C (nie modelu!), łatwe do zrozumienia i używania, szybki zwrot (zastąpienie testów), łatwość integracji, sprawdzanie właściwości funkcjonalnych, bezpieczeństwa, zależności czasowych sprawdzanie małych modułów, ale również całego systemu (do 1mln linii kodu), głównie proste algorytmy, proste pętle i ich niezmienniki.

Motywacja Wymagania ACSL CIL SCADE ANSI/ISO C Specification Language (ACSL) stworzony pod koniec 2008 przez Commissariat à l Énergie Atomique i INRIA, inspirowany JML, nastawiony na weryfikacje przez wnioskowanie (nie na sprawdzanie w czasie wykonania). /*@ requires \valid(p); assigns *p; ensures *p == \old(*p) + 1; */ void incrstar (int *p);

Motywacja Wymagania ACSL CIL SCADE CIL - C Intermediate Language podzbiór języka C, narzędzia do tłumaczenia C na CIL (Ocaml, BSD), prosta analiza, zgodny z GCC (testy: kernel, gimp), MSC.

Motywacja Wymagania ACSL CIL SCADE Różne opcje do włączenia: unikalne identyfikatory, brak anonimowych typów itd, redukcja zagnieżdżonych struktur, tablice bez rozmiarów (int tab[] = 1,2,3; ), brak zmiennych statycznych, pojedynczy return, brak goto, break, continue, brak operatora? :, itd...

Motywacja Wymagania ACSL CIL SCADE Dodatkowe ograniczenia zakładane przez niektóre programy: brak rekurencji, nieograniczonych pętli, brak efektów ubocznych funkcji, brak wskaźników do funkcji, brak arytmetyki na wskaźnikach,

SCADE (Esterel, komercyjny) modelowanie całego systemu wstępne generowanie kodu Motywacja Wymagania ACSL CIL SCADE

Idea Caveat Frama-C Dowodzenia własności na niskim poziomie, interpretując znaczenie instrukcji. Idea działania: 1 uproszczenie języka C do jego podzbioru (np CIL), 2 przedstawienie własności jako twierdzenia w formalnym języku, 3 udowodnienie twierdzenia, albo za pomocą automatycznego narzędzia (cvc3, z3, alt-ergo), albo z pomocą interaktywnego dowodzenia (coq, isabelle).

Idea Caveat Frama-C Caveat operuje na ograniczonym zbiorze języka C, własny język specyfikacji oparty na logice pierwszego rzędu, dwa cele: analiza sterowania i przepływu danych, dowodzenie własności zdefiniowanych przez użytkownika, brak dostępnych informacji poza publikacjami.

Idea Caveat Frama-C Frama-C (LGPL, BSD) framework, integracja z CIL, wspiera ACSL. Wiele modułów, m.in: jessie - formalne dowodzenie (adnotacje, bezpieczeństwo operacji), value analysis - oblicza zbiór możliwych wartości zmiennej (lub jego przybliżenie), slicing - usuwanie zbędnego kodu z zachowaniem pewnych własności.

Astree ait Stackanalyzer Fluctuat CompCert Astree operuje na podzbiorze języka C, sprawdzanie wystąpień RTE, bez rekurencji, bez dynamicznej alokacji pamięci, analiza głównie automatyczna, 1000 false alarms na 100 000 instrukcji (ile prawdziwych?).

Astree ait Stackanalyzer Fluctuat CompCert ait analiza binarnego kodu (10 platform, m.in ARM7, PowerPC), obliczanie WCET (worst-case execution time), precyzyjna analiza łącznie z cache procesora, analiza abstrakcyjna, szacowanie z góry, przeanalizowana większość komponentów A380, umożliwia off-line scheduling.

Astree ait Stackanalyzer Fluctuat CompCert Ograniczenia brak innych wątków, przerwań w tym samym czasie brak wyjątków procesora brak dynamicznej alokacji

Astree ait Stackanalyzer Fluctuat CompCert

Astree ait Stackanalyzer Fluctuat CompCert Stackanalyzer analiza binarnego kodu (10 platform, m.in ARM7, PowerPC), obliczanie maksymalnej wielkości stosu, analiza abstrakcyjna, szacowanie z góry, używany przez wszystkie zespoły w Airbus, umożliwia statyczny przydział stosu do zadania.

Astree ait Stackanalyzer Fluctuat CompCert Fluctuat operuje na C lub asm, znajduje problemy z liczbami typu float, double, szacowanie górne i dolne wyniku.

Astree ait Stackanalyzer Fluctuat CompCert Certyfikowana kompilacja. Zapewnienie, że dowodzone własności w C dalej zachodzą w asm. Przykład CompCert (2005, GPL / komercyjny). formalnie zweryfikowany (coq, 2008) kompilator CIL na powerpc.

http://frama-c.com/ http://www.first.fraunhofer.de/owx_download/ acsl-by-example-5_1_0.pdf http://www.esterel-technologies.com/ Formal Verification of Avionics Software Products, Jean Souyris, Virginie Wiels, David Delmas, and Herve Delseny Applying Formal Proof Techniques to Avionics Software: A Pragmatic Approach, Famantanantsoa Randimbivololona and Jean Souyris