• Keine Ergebnisse gefunden

Korrekte Software: Grundlagen und Methoden Vorlesung 1 vom 02.04.19

N/A
N/A
Protected

Academic year: 2022

Aktie "Korrekte Software: Grundlagen und Methoden Vorlesung 1 vom 02.04.19"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Korrekte Software: Grundlagen und Methoden Vorlesung 1 vom 02.04.19

Einführung

Serge Autexier, Christoph Lüth Universität Bremen Sommersemester 2019

11:27:18 2019-07-04 1 [22]

Organisatorisches

IVeranstalter:

Christoph Lüth christoph.lueth@dfki.de

MZH 4186, Tel. 59830

Serge Autexier serge.autexier@dfki.de Cartesium 1.49, Tel. 59834 ITermine:

IVorlesung: Dienstag, 12 – 14, MZH 1100 IÜbung: Donnerstag, 12 – 14, MZH 1450 IWebseite:

http://www.informatik.uni-bremen.de/~cxl/lehre/ksgm.ss19

Korrekte Software 2 [22]

Übungsbetrieb

I“Leichtgewichtige” Übungsblätter, diein der Übungbearbeitet und schnellkorrigiert werden können.

IÜbungsblättervertiefenVorlesungsstoff, Bewertung gibt Feedback.

IÜbungsbetrieb:

IGruppen bis zu drei Studierende IAusgabe: Donnerstag in der Übung IBearbeitung: in der Übung IAbgabe: Donnerstag abend

Korrekte Software 3 [22]

Prüfungsform und Übungsbetrieb

I10 Übungsblätter (geplant) IBewertung:

IA (sehr gut, 1.3) — nichts zu meckern, keine/kaum Fehler IB (gut, 2.3) — kleine Fehler, sonst gut

IC (befriedigend, 3.3) — größere Fehler oder Mängel INicht bearbeitet — oder zu viele Fehler

IPrüfungsleistung:

IMündliche Prüfung

IEinzelprüfung ca. 20– 30 Minuten

IÜbungsbetrieb (bis zu 20% Bonuspunkte, keine Voraussetzung)

Korrekte Software 4 [22]

Warum Korrekte Software?

Korrekte Software 5 [22]

Software-Disaster I: Therac-25

Korrekte Software 6 [22]

Software-Disasters II: Space

Mariner 1 (27.08.1962), Mars Climate Orbiter (1999), Ariane 5 (04.06.1996)

Korrekte Software 7 [22]

Software-Disaster III: AT&T (15.01.1990)

w h i l e ( ! empty ( r i n g _ r c v _ b u f f e r )

&& ! empty ( s i d e _ b u f f e r empty ) ) { i n i t i a l i z e p o i n t e r t o f i r s t m e s s a g e b u f f e r ; g e t c o p y o f b u f f e r ;

s w i t c h ( m e s s a g e ) { c a s e ( i n c o m i n g _ m e s s a g e ) :

i f ( s e n d e r i s o u t _ o f _ s e r v i c e ) { i f ( empty ( r i n g _ w r t _ b u f f e r ) ) {

s e n d " i n s e r v i c e " t o s t a t u s map ; } e l s e {

break; }

p r o c e s s i n c o m i n g message , s e t up p o i n t e r s ; break;

} }

do o p t i o n a l p a r a m e t e r work ; }

Korrekte Software 8 [22]

(2)

Software-Disaster IV: Airbus A400M

Sevilla, 09.05.2015

Korrekte Software 9 [22]

Inhalt der Vorlesung

Korrekte Software 10 [22]

Themen

Korrekte Software im Lehrbuch:

ISpielzeugsprache IWenig Konstrukte IKleine Beispiele

Korrekte Software im Einsatz:

IRichtige Programmiersprache IMehr als nur ganze Zahlen ISkalierbarkeit — wie können

große Programme verifiziert werden?

Korrekte Software 11 [22]

Inhalt

IGrundlagen:

IBeweis derKorrektheitvon Programmen: derFloyd-Hoare-Kalkül IBedeutungvon Programmen:Semantik

IBetrachtete Programmiersprache: “C0” (erweiterte Untermenge von C)

IErweiterung der Programmkonstrukte und des Hoare-Kalküls:

1 Referenzen (Zeiger)

2 Funktion und Prozeduren (Modularität) 3 ReicheDatenstrukturen(Felder,struct)

Korrekte Software 12 [22]

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

IFunktionsaufrufe und das Framing-Problem IAusblick und Rückblick

Korrekte Software 13 [22]

Warum Semantik?

Korrekte Software 14 [22]

Idee

IWas wird hier berechnet?p=n!

IWarum? Wie können wir das beweisen?

IWir berechnen symbolisch, welche Werte Variablen über den Programmverlauf annehmen.

p= 1 ; c= 1 ;

w h i l e ( c <= n ) { p = p ∗ c ; c = c + 1 ; }

Korrekte Software 15 [22]

Semantik von Programmiersprachen

Drei wesentliche Möglichkeiten:

IOperationale Semantik:

Ausführung auf einerabstraktenMaschine IDenotationale Semantik:

Abbildung in einmathematisches Objekt IAxiomatische Semantik:

Beschreibung durch eines Programmes durch seineEigenschaften

Korrekte Software 16 [22]

(3)

Unsere Sprache C0

IC0 ist eineUntermengeder Sprache C IC0-Programme sindausführbareC-Programme IErste Ausbaustufe:

IZuweisungen, Fallunterscheidungen, Schleifen IDatentypen: ganze Zahlen mit Arithmetik IRelationen: Vergleich (=,≤)

IBoolsche Operatoren: Konjunktion, Disjunktion, Negation I1. Ausbaustufe: Felder und Strukturen

I2. Ausbaustufe: Funktionen und Prozeduren (nur Ausblick) I3. Ausbaustufe: Referenzen (nur Ausblick)

IFehlt:union,goto, . . .

Korrekte Software 17 [22]

Operationale Semantik

IKernkonzept: Zustandstandsübergänge einer abstrakten Maschine IAbstrakte Maschine hatimpliziten Zustand

IZustand ordnetAdressenveränderlicheWertezu IKonkretes Beispiel:n7→3,pundcundefiniert

p = 1 ; c = 1 ; w h i l e( c <= n ) {

p = p ∗ c ; c = c + 1 ; }

p ? c ? n 3

p 1 c ? n 3

p 1 c 1 n 3

p 1 c 1 n 3

p 1 c 2 n 3

p 2 c 2 n 3

p 2 c 3 n 3

p 6 c 3 n 3

p 6 c 4 n 3

Korrekte Software 18 [22]

Denotationale Semantik

IKernkonzept: Abbildung von Programmen auf mathematisches Gegenstück (Denotat)

IPartielleFunktionen zwischen Zuständen [[c]] :σ * σ IBeispiel:

p = 1 ; c = 1 ; //p1

w h i l e ( c <= n ) { p = p ∗ c ; c = c + 1 ; //p2

} //p3

[[p1]](σ) =σ(p7→1)(c7→1)

[[p2]](σ) =σ(p7→σ(p)σ(c))(c7→σ(c) + 1)

[[p3]](σ)[[p3]] =???fix(Γ([[c≤n]])[[p2]]))([[p1]](σ))fix(Γ([[c≤n]])([[p2]]))◦[[p1]]

Γ([[c≤n]])([[p2]])(ϕ)(σ) =

(σ if [[c≤n]](σ) = 0

(ϕ◦[[p2]])(σ) if [[c≤n]](σ) = 1 Γ(β)(ρ)(ϕ)(σ) =

(σ ifβ(σ) = 0 (ϕ◦ρ)(σ) ifβ(σ) = 1

Korrekte Software 19 [22]

Axiomatische Semantik

IKernkonzept: Charakterisierung von Programmen durch Zusicherungen

IZusicherungen sind zustandsabhängige Prädikate IBeispiel (mitn= 3)

// (1) p = 1 ; // (2) c = 1 ; // (3) w h i l e( c <= n ) {

// (4) p = p ∗ c ; c = c + 1 ; } // (5)

(1) n= 3

(2) p= 1∧n= 3

(3) p= 1∧c= 1∧n= 3

(4) ???

(p= 1∧c= 1∨p= 1∧c= 2∨ p= 2∧c= 3∨p= 6∧c= 4)

n= 3

p= (c−1)!∧n= 3

(5) p= 6∧c= 4∧n= 3

Korrekte Software 20 [22]

Drei Semantiken — Eine Sicht

p = 1;

c := 1;

while (c <= n) { p= p * c;

c= c + 1;

}

Operational

Axiomatisch Denotational

Programm

Korrekte Software 21 [22]

Zusammenfassung

IWir wollen dieBedeutung(Semantik) von Programmen beschreiben, um ihre Korrektheit beweisen zu können.

IDazu gibt es verschiedene Ansätze, die wir betrachten werden.

INächste Woche geht es mit dem ersten los:operationaleSemantik

Korrekte Software 22 [22]

Referenzen

ÄHNLICHE DOKUMENTE

Serge Autexier Christoph Lüth Korrekte Software: Grundlagen und Methoden SoSe

Serge Autexier Christoph Lüth Korrekte Software: Grundlagen und Methoden SoSe

Korrekte Software: Grundlagen und Methoden Vorlesung 11 vom 19.06.18: Funktionen und Prozeduren. Serge Autexier, Christoph Lüth Universität Bremen

Korrekte Software: Grundlagen und Methoden Vorlesung 11 vom 19.06.18: Funktionen und Prozeduren.. Serge Autexier, Christoph Lüth Universität Bremen

Partial cor- rectness means that if the programs starts in a state where the precondition P holds, and it terminates, then it does so in a state which satisfies the postcondition

Serge Autexier Christoph Lüth Korrekte Software: Grundlagen und Methoden SoSe

Serge Autexier Christoph Lüth Korrekte Software: Grundlagen und Methoden SoSe

Korrekte Software: Grundlagen und Methoden Vorlesung 1 vom 06.04.17: Einführung.. Serge Autexier, Christoph Lüth Universität Bremen