Korrekte Software: Grundlagen und Methoden Vorlesung 1 vom 21.04.20
Einführung
Serge Autexier, Christoph Lüth Universität Bremen Sommersemester 2020
13:55:41 2020-07-14 1 [27]
Organisatorisches
IVeranstalter:
Christoph Lüth christoph.lueth@dfki.de
MZH 41861, Tel. 598302
Serge Autexier serge.autexier@dfki.de Cartesium 1.491, Tel. 598342 ITermine:
IDienstag, 12 – 14
IDonnerstag, 8 – 10 ←−Verlegen?
IWebseite:
http://www.informatik.uni-bremen.de/~cxl/lehre/ksgm.ss20
1Zur Zeit im Home-Office
2Wird weitergeleitet.
Korrekte Software 2 [27]
Online-Konzept in Corona-Zeiten
IKeine lange Vorlesung, lieber integrierte Veranstaltung IKürzere Vortragseinheiten (Folie/Lifestream), dazwischen
Arbeitsfragen(Kurzübungen)
IKein asynchrones Angebot (Aufzeichung der Meetings?) IWöchentliche Übungsaufgaben zur Vertiefung ITechnisch:
INutzung von GotoMeeting:
https://www.gotomeet.me/DFKI-BAALL/ksgmss20 IFragen/Kurzübungen in CodiMD:
http://hackmd.informatik.uni-bremen.de/
IÜbungsblätter als ausfüllbare PDFs.
Korrekte Software 3 [27]
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 [27]
Arbeitsblatt 1.1: Jetzt seid ihr dran!
IGruppiert euch in Gruppen zu drei Teilnehmenden! Nutzt dazu folgenden Doodle:
https://www.doodle.com/poll/utp4mg5yikbfta8d IZu jeder Gruppe gibt es ein Arbeitsblatt:
https://hackmd.informatik.uni-bremen.de/s/SkVLK1Q_I IAuf diesem Arbeitsblatt bearbeitet ihr die Arbeitsfragen im Laufe des
Kurses.
IBitte nur in “eurem” Arbeitsblatt arbeiten IDie Arbeitsblätter sind nicht notenrelevant.
Korrekte Software 5 [27]
Warum Korrekte Software?
Korrekte Software 6 [27]
Software-Disaster I: Therac-25
Korrekte Software 7 [27]
Software-Disasters II: Space
Mariner 1 (27.08.1962), Mars Climate Orbiter (1999), Ariane 5 (04.06.1996)
Korrekte Software 8 [27]
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 9 [27]
Software-Disaster IV: Airbus A400M
Sevilla, 09.05.2015
Korrekte Software 10 [27]
Arbeitsblatt 1.2: Jetzt seid ihr dran!
ISucht im Netz nach weiteren Software-Disastern:
1 Was ist passiert?
2 Wie ist es passiert?
3 Was war der Softwarefehler?
IQuellen: Suchmaschine nach Wahl (“software disasters”), The Risks Digest,https://catless.ncl.ac.uk/Risks/
Korrekte Software 11 [27]
Inhalt der Vorlesung
Korrekte Software 12 [27]
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 13 [27]
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 14 [27]
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 15 [27]
Warum Semantik?
Korrekte Software 16 [27]
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 17 [27]
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 18 [27]
Arbeitsblatt 1.3: Maschinen und Funktionen
Was genau kann man sich unter “abstrakten Maschine” vorstellen?
Betrachtet als Beispiel die Summe einer Liste von ganzen Zahlen:
IWie könnte man eine abstrakte Maschine definieren, welche Listen von Zahlen summiert?
IWie könnte man ein mathematisches Objekt definieren, welches Listen von Zahlen summiert?
Korrekte Software 19 [27]
Unsere Sprache C0
IC0 ist eineUntermengeder Sprache C IC0-Programme sindausführbareC-Programme IGrundausbaustufe:
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 20 [27]
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 21 [27]
Arbeitsblatt 1.4: Operationale Semantik
Gegeben folgendes C0-Programm:
1 x= 0 ;
2 w h i l e ( n > 0 ) {
3 x= x+ n∗n ;
4 n= n−1;
5 }
Entwickeln Sie die ersten zehn Schritte der operationalen Semantik wie im Beispiel oben für den initialen Zustand
n 4 x ? . . .
Korrekte Software 22 [27]
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 23 [27]
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 24 [27]
Arbeitsblatt 1.5: Zusicherungen
Betrachten Sie folgende Variation des Programms von oben:
// (1) p = 1 ; // (2) c = 1 ; // (3) w h i l e( c <= n ) {
// (4) c = c + 1 ; p = p ∗ c ; }
// (5)
IWelche der Zusicherungen (1) – (5) von oben gelten noch?
IWelche nicht?
IWas gilt stattdessen?
Korrekte Software 25 [27]
Drei Semantiken — Eine Sicht
p = 1;
c := 1;
while (c <= n) { p= p * c;
c= c + 1;
}
Operational
Axiomatisch Denotational
Programm
Korrekte Software 26 [27]
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 27 [27]