• Keine Ergebnisse gefunden

Korrekte Software: Grundlagen und Methoden Vorlesung 13 vom 16.07.20

N/A
N/A
Protected

Academic year: 2022

Aktie "Korrekte Software: Grundlagen und Methoden Vorlesung 13 vom 16.07.20"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Korrekte Software: Grundlagen und Methoden Vorlesung 13 vom 16.07.20

Rückblick & Ausblick

Serge Autexier, Christoph Lüth

Universität Bremen Sommersemester 2020

10:35:20 2020-07-16 1 [28]

Fahrplan

IEinführung

IOperationale Semantik IDenotationale Semantik

IÄquivalenz der Operationalen und Denotationalen Semantik IDer Floyd-Hoare-Kalkül

IInvarianten und die Korrektheit des Floyd-Hoare-Kalküls IStrukturierte Datentypen

IVerifikationsbedingungen IVorwärts mit Floyd und Hoare IModellierung

ISpezifikation von Funktionen IReferenzen und Speichermodelle IAusblick und Rückblick

Korrekte Software 2 [28]

Was gibt’s heute?

IRückblick

IAusblick

IFeedback

IPrüfungsvorbereitung

Korrekte Software 3 [28]

Rückblick

Korrekte Software 4 [28]

Semantik

IOperational — Auswertungsrelationhc, σi →σ0

IDenotational — Partielle Funktion [[c]] : Σ*Σ

IAxiomatisch — Floyd-Hoare-Logik

IWelche Semantik wofür?

IBeweis: Äquivalenz von operationaler und denotationaler Semantik

Korrekte Software 5 [28]

Floyd-Hoare-Logik

IFloyd-Hoare-Logik: partiell und total

I` {P}c{Q}vs.|={P}c{Q}: Vollständigkeit, Korrektheit

IDie sechs Basisregeln

IZuweisungsregel: vorwärts (Floyd) vs. rückwärts (Hoare)

IVCG: Schwächste Vorbedingung und stärkste Nachbedingung

IBeweis: Korrektheit und Vollständigkeit der Floyd-Hoare-Logik

Korrekte Software 6 [28]

Erweiterungen der Programmiersprache

IFür jede Erweiterung:

IWie modellieren wir semantisch?

IWie ändern sich die Regeln der Logik?

Korrekte Software 7 [28]

1. Erweiterung der Programmiersprache

IStrukturen und Felder

ILokationen: strukturierte WerteLexp

IErweiterte Substitution in Zuweisungsregel

ISonstige Regeln bleiben

Korrekte Software 8 [28]

(2)

2. Erweiterung der Programmiersprache

IProzeduren und Funktionen

IModellierung vonreturn: Erweiterung zu Σ*Σ + Σ×VU

ISpezifikation von Funktionen durch Vor-/Nachbedingungen

ISpezifikation der Funktionen muss im Kontext stehen

IUnterscheidung zwischen zwei Nachbedingungen

IRegeln für den Funktionsaufruf

Korrekte Software 9 [28]

3. Erweiterung der Programmiersprache

IReferenzen

IKonversion zwischenLexpundAexp

ILokationen nicht mehr symbolisch (Variablennamen), sondern abstrakt Σ =Loc*V,V=Z+Loc

IZustand alsabstrakter Datentypmit Operationenreadundupd

IZuweisung nicht mehr mit Substitution, sondern explizit durchupd

ISpezifikationen sindexplizite Zustandsprädikate, Konversion (−),(−)#

Korrekte Software 10 [28]

Prüfungsvorbereitung

IMündliche Modulprüfung, 20– 30 Minuten

ISchwerpunkte:

IVerständnisdes Stoffes, weniger Folien auswendig lernen

IStoff der Vorlesung und Übungsblätter, weniger eure Lösungen

IBewertung

ISicherheit/Beherrschung des Stoffes

Icovered ground

Korrekte Software 11 [28]

Mögliche Fragen I

IWas haben wir in KSGM gemacht?

IWie funktioniert die operationale Semantik und wozu?

IWie funktioniert die denotationale Semantik und wozu? Was ist ein Fixpunkt, und wozu?

IWas bedeutet die Äquivalenz der Semantiken? Wie haben wir das bewiesen? Was ist der Unterschied zwischen struktureller und Regelinduktion?

IWas ist der Floyd-Hoare-Kalkül? Was bedeutet` {P}c{Q}und

|={P}c{Q}?

IWieviele Regeln hat der Floyd-Hoare-Kalkül und warum?

IWie beweisen wir die Korrektheit dieses Programmes?

Korrekte Software 12 [28]

Mögliche Fragen II

IWelche Probleme tauchen bei folgenden Erweiterungen der Programmiersprache auf, und wie behandeln wir sie:

IFelder und Strukturen,

IFunktionen und Funktionsaufrufe,

IReferenzen.

IWas ist der Unterschied zwischen dem Kalkül vorwärts und rückwärts?

Wie sind die Regeln?

IWie funktioniert die Generierung von Verifikationsbedingungen?

Korrekte Software 13 [28]

Ausblick

Korrekte Software 14 [28]

Was geht noch?

IDie Sprache C

IAndere Programmiersprachen

ILogik und Spezifikation

ISuccess Stories

Korrekte Software 15 [28]

Die Sprache C: Was haben wir ausgelassen?

Semantik:

INichtdeterministische Semantik: Seiteneffekte, Sequence Points

−→Umständlich zu modellieren, Effekt zweitrangig

IImplementationsabhängiges, unspezifiziertes und undefiniertes Verhalten

−→Genauere Unterscheidung in der Semantik Kontrollstrukturen:

Iswitch −→Ist im allgemeinen Fall eingoto

Igoto,setjmp/longjmp

−→Allgemeinfall: tiefe Änderung der Semantik (continuations)

Korrekte Software 16 [28]

(3)

Die Sprache C: Was haben wir ausgelassen?

Typen:

IFunktionszeiger −→Für “saubere” Benutzung gut zu modellieren

IWeitere Typen:short/long int,double/float,wchar_t, und

Typkonversionen −→Fleißarbeit

IFließkommazahlen −→Spezifikation nicht einfach

Iunion −→Kompliziert das Speichermodell

I volatile −→Bricht read/update-Gleichungen

Itypedef −→Ärgernis für Lexer/Parser, sonst harmlos

Korrekte Software 17 [28]

Die Sprache C: Was haben wir ausgelassen?

Fürrealistische C-Programme:

ICompiler-Erweiterungen (gcc,clang)

IBüchereien (Standardbücherei, Posix, . . . )

INebenläufigkeit

Korrekte Software 18 [28]

Andere Sprachen: Wie modelliert man Java?

IDieKernspracheist ähnlich zu C0.

IJava hat erschwerend:

Idynamische Bindung,

IKlassen mit gekapselten Zustand und Invarianten, INebenläufigkeit, und

IReflektion.

IJava hat dafür aber

Iein einfacheres Speichermodell, und

Ieine wohldefinierte Ausführungsumgebung (die JVM).

Korrekte Software 19 [28]

Andere Sprachen: Wie modelliert man C++?

ISehrvorsichtig(konservativ)

IViele Features, fehlende formale Semantik, . . .

IMehrfachvererbung theoretisch anspruchsvoll

IEs gibtkeineFormalismen/Werkzeuge, die C++ voll unterstützen

IAnsätze: Übersetzung nach C/LLVM, Behandlung dort

Korrekte Software 20 [28]

Andere Sprachen: Wie modelliert man PHP?

Gar nicht.

Korrekte Software 21 [28]

Logik und Spezifikation

IWirgenerierenVerifikationsbedingungen, wie kann man sie beweisen?

IAutomatische Beweiser:

ISAT-Checkerlösen Erfüllbarkeitsproblem der Aussagenlogik (MiniSAT, Chaff)

ISMT-Beweiserbeweisen Aussagen der Prädikatenlogik mit linearer Arithmetik, Funktionen und Induktion (Z3, Yices, CVC)

IInteraktive Beweiser:

IBeweisführung durch Benutzer,Überprüfungdurch Beweiser ISehrmächtigeLogiken, aber nicht vollautomatisch (Isabelle, Coq)

Korrekte Software 22 [28]

Beispiel: Z3

ISMT-Beweiser versuchen Gegenbeweis zu konstruieren IDaher: umφzu beweisen, versuchen wir6Φ zu widerlegen Beweis einer VC:

x≥0∧y>0 =⇒x= 0∗y+x Input Z3:

(declare-const x Int) (declare-const y Int) (assert

(not (=> (and (>= x 0) (> y 0)) (= x (+ (* 0 y) x)))) )

(check-sat)

Antwort:

unsat

Unerfüllbare VC:

x≥0∧y>0 =⇒xy Input Z3:

(declare-const x Int) (declare-const y Int) (assert

(not (=> (and (>= x 0) (> y 0)) (>= x y)))

) (check-sat)

Antwort:

sat

Korrekte Software 23 [28]

Beispiel: Isabelle

Korrekte Software 24 [28]

(4)

Korrekte Software in der Industrie

IMeist in speziellen Anwendungsgebieten: Luft-/Raumfahrt, Automotive, sicherheitskritische Systeme, Betriebssysteme IAnsätze:

1 Vollautomatisch:statische Analyse(Abstrakte Interpretation) für spezielle Aspekte: Freiheit von Ausnahmen und Unter/Überläufen, Programmsicherheit, Laufzeitverhalten (WCET) (nicht immer korrekt, meist vollständig)

I Werkzeuge:absint

2 Halbautomatisch:Korrektheitsannotationen, Überprüfung automatisch I Werkzeuge: Spark (ADA), Frama-C (C), JML (ESC/Java, Krakatao; Java),

Boogie und Why (generisches VCG), VCC (C)

3 Interaktiv: Einbettung der Sprache in interaktiven Theorembeweiser (Isabelle, Coq)

I Beispiele: L4.verified, CompCert, SAMS

Korrekte Software 25 [28]

Feedback

Korrekte Software 26 [28]

Deine Meinung zählt

IWas war gut, was nicht?

IArbeitsaufwand?

IMehrTheorieoder mehrPraxis?

IProgrammieraufgaben?

ILeichtgewichtiger Übungsbetrieb — mehr oder weniger?

IBitte auch dieEvaluationauf stud.ip beantworten!

Korrekte Software 27 [28]

Tschüß!

Korrekte Software 28 [28]

Referenzen

ÄHNLICHE DOKUMENTE

Zu zeigen ist, dass sowohl w also auch if (b) {c; w} else { } zu dem selben Programmzustand auswerten oder beide zu

Korrekte Software: Grundlagen und Methoden Vorlesung 3 vom 17.04.18: Denotationale Semantik.. Serge Autexier,

[r]

1 Vollautomatisch: statische Analyse (Abstrakte Interpretation) für spezielle Aspekte: Freiheit von Ausnahmen und Unter/Überläufen, Programmsicherheit, Laufzeitverhalten (WCET)

−→ Allgemeinfall: tiefe Änderung der Semantik (continuations). Korrekte Software

sie die gleichen

Korrekte Software: Grundlagen und Methoden Vorlesung 4 vom 24.04.17: Denotationale Semantik.. Serge Autexier,

[r]