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]
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]
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]