Der Traum von fehlerfreier Software

Transcrição

Der Traum von fehlerfreier Software
Der Traum von fehlerfreier Software
Prof. Dr. Stefan Leue
Universität Konstanz
Lehrstuhl für Software Engineering
[email protected]
http://www.inf.uni-konstanz.de/~soft
22. Oktober 2005
software
Copyright © Stefan Leue 2005
engineering
Der Weg hierher...
1990
Diplom in Informatik und Wirtschaftswissenschaften
Universität Hamburg
1991 - 1995
Promotion Dr. phil.-nat.
Universität Bern
1995 - 2000
Assistant / Associate Professor
University of Waterloo, Kanada
1998
Member of Technical Staff
Bell Laboratories, USA
2000-2004
Professur für Rechnernetze und Telematik
Universität Freiburg
seit 2004
Universität Konstanz
© Stefan Leue 2005
2
software
Lehrstuhl für Angewandte Informatik / Software Engineering
engineering
Lehrstuhl für Software Engineering
♦ Wissenschaftliche MitarbeiterInnen
8Husain Aljazzar
8Alin Stefanescu
8Evghenia Stegantova
8Wei Wei
8NN1
© Stefan Leue 2005
3
software
8NN2
engineering
Quelle: IT-Forschung 2006 - Förderprogramm Informations- und Kommunikationstechnik
BMBF, 2002
© Stefan Leue 2005
4
software
Informations- und Kommunikationssektor
engineering
Quelle: IT-Forschung 2006 - Förderprogramm Informations- und Kommunikationstechnik
BMBF, 2002
© Stefan Leue 2005
5
software
Informations- und Kommunikationssektor
engineering
Bedeutung von Software
Quelle: IT-Forschung 2006 - Förderprogramm Informations- und Kommunikationstechnik
BMBF, 2002
© Stefan Leue 2005
6
software
♦ Werkstoff der Informationsgesellschaft
engineering
Ökonomische Bedeutung von Software
♦ Werkstoff der Informationsgesellschaft
8 Markt für Software-Produkte
– Deutschland: 16,5 Mrd. € (2001)
– Europa: 57 Mrd. € (2001)
8 Brutto-Wertschöpfung durch Softwareentwicklung und -anpassung
– ca. 25 Mrd. € (2001)
8 Martvolumen aller Produkte, die von Software abhängen, Primär- und
Sekundärbranchen
– ca. 500 Mrd. € (2001)
8 Hardware, Software, IT-Dienstleistungen (ohne Medien):
– 820.000 (2000)
8 davon Software und IT-Dienstleistungen
– 400.000 (2001, geschätzt)
8 Vergleich: Automobilindustrie
– 746.000 (2000, im Mittel)
© Stefan Leue 2005
7
software
♦ Beschäftigtenzahlen in Deutschland
engineering
Software-Krise
♦ Umfrage in IEEE Software, 1995
8 30% aller Softwareprojekte werden abgebrochen
8 50% aller Softwareprojekte überschritten ihr Budget um mind. 150%
8 nur 60% der ursprünglich geplanten Funktionalität ist in dem
endgültigen Produkt
♦ ...aber wir produzieren doch erfolgreich hochgradig
komplexe Softwaresysteme, die gut funktionieren?
8 Airbus A380
8 Toll Collect
8 SAP R/3
© Stefan Leue 2005
8
software
8 ...
engineering
Software-"Erkältung"
♦ Daher: es könnte noch besser gehen
8 "... bisher setzen nur 30% der Unternehmen systematische Prozesse
bei der Softwareentwicklung ein,,,"
8 Allerdings:
– Deutschland international zweitklassig in den Bereichen der
Entwicklung Betriebssysteme, Web-Systeme,
Informationssysteme, etc.
– Weltweit führend bei Entwicklung eingebetteter Softwaresysteme
iFlugzeugbau (EADS)
iAutomobilbau (Bosch, BMW, Daimler-Chrysler,...)
iSchienenverkehrstechnik
und hier auch weltweit führend in den Softwareprozessen!
8 bisher kein Todesfall in Flugzeugen durch fehlerhafte Software!
© Stefan Leue 2005
9
software
♦ Softwaregesteuerte Flugzeuge?
engineering
Software-Fehler und -Ausfälle (IEEE 729)
♦ Software-Fehler (fault)
8 durch einen Menschen verursachter Fehler (error) in einem Softwarebezogenen Arbeitsschritt, z. B.
– fehlerhafte Anforderungen,
– fehlerhafter Entwurf oder
– fehlerhafte Programmierung,
welcher zu einem falschen Programmzustand führt
♦ Software-Ausfall, Software-Fehlverhalten (failure)
8 beobachtete Abweichung des Systems von seinem geforderten
© Stefan Leue 2005
10
software
Verhalten
engineering
Software-Fehlverhalten
© Stefan Leue 2005
11
software
"... Schuld an der Abrechnungspanne sei die Texteingabehilfe. Das
Einfügen eines Apostrophs zum Beispiel bewirke, dass die SMS statt
der regulären 19 Cent bis zu 80 Cent koste. Vier Jahre lang sei
unerkannt geblieben, dass die Software bei einigen Sonderzeichen
Fehler verursache. ..."
engineering
© Stefan Leue 2005
12
software
Software-Fehlverhalten
engineering
Software-Fehlverhalten
© Stefan Leue 2005
13
software
"... Doch erst ein herbeieilender Wachmann konnte mit dem beherzten
Zertrümmern einer Scheibe den Minister befreien. "Wir konnten kaum noch
Atmen, weil die Klimaanlage ausgefallen war", sagte Jaovisidha später zu
Reportern. ... Schuld an der Panne sei ein Fehler des Bordcomputers
gewesen. "Es war äußerst unangenehm, weil nichts mehr funktionierte und
alles verschlossen war." ..."
engineering
Ökonomische Effekte von Software Fehlern
♦ Kosten Unzulänglicher Software-Test-Infrastruktur
8 Studie des National Institute for Standards and Technology (NIST,
USA)
– Kosten $59.5, entspricht etwa 0.6% des USBruttoinlandsproduktes
– potentielle Einsparungen $22.2 entsprechen etwa 0.2% des USBruttoinlandsproduktes
8 Schätzung Europa: Kosten €20 Mrd.
♦ Kosten des softwarebedingten Ariane-5 Absturzes
8 $500 Mio.
♦ Kosten von SW-Fehlern in Eingebetteten Systemen mit
hoher Replikation
© Stefan Leue 2005
14
software
8 ADAC (2003): 144 Rückrufaktionen aufgrund fehlerhafter
Bordelektronik, betroffen waren 940.000 Fahrzeuge
engineering
"... Tritt bei diesem Quersummen-Check ein Fehler auf, schaltet das Gerät
sofort auf ein Notlaufprogramm um; dazu bedient es sich der fest in die
Steuerplatte eingebrannten Basisdaten. ... Auf dieser Behelfsebene
existiert jedoch nur noch ein simpler Steuerbefehl: Im Falle eines Aufpralls
werden alle Airbags gezündet. Die einprogrammierte Deaktivierung ist dann
Makulatur. ..."
© Stefan Leue 2005
15
software
Software-Fehler in sicherheitskritischen Systemen
engineering
Warum ist Softwareproduktion so schwierig?
♦ Enorme Komplexität
8 mittlere eingebettete technische Systeme (z. B. Auto)
– ca. 500.000 - 2.000.000 Zeilen Code
8 grosse Softwaresysteme (z.B. Windows XP, TelefonVermittlungsstellen)
– > 50 Mio. Zeilen Code
♦ Einfache Formbarkeit
8 führt zu "code-and-fix"
♦ Diskrete Natur
8 Korrektheit kann nicht, wie in anderen ingenieurwissenschaftlichen
Disziplinen, approximiert werden
8 "Erst als ich das System das erste Mal sah, wusste ich, dass dies
nicht das war, was ich wollte."
© Stefan Leue 2005
16
software
♦ Fortwährende Änderungen der Anforderungen
engineering
Software-Prozess (Wasserfall)
Systementwurf
Anforderungen
Entwurf
Implementierung
Integration und
Testen
© Stefan Leue 2005
17
software
Wartung
engineering
Software-Qualitätssicherung
♦ Testen
8 spielen mit der Software
8 antizipieren der möglichen Fehler
♦ Code-Inspektion
8 Computer spielen
8 Vermeidung typischer Programmierfehler
8 Einhaltung von Programmierkonventionen
8 antizipieren möglicher Fehler
♦ Formale Verifikation
8 Theorembeweisen
© Stefan Leue 2005
18
software
8 Model Checking ("Modellprüfverfahren")
engineering
Software-Fehler
♦ Software ist Text
8 zu einem grossen Teil von Hand geschrieben
public void displayScreen ( int objectCount )
{ ...
if objectCount < 10
displayScreenDetailed();
if objectCount > 10
displayScreenOverview();
...
}
displayScreen(
displayScreen(
displayScreen(
displayScreen(
displayScreen(
© Stefan Leue 2005
0 );
1 );
9 );
10 );
11 ); ...
19
software
8 Code-Inspektion
– bei Entscheidungen alle Fälle abgedeckt?
8 Testen
– systematisches Testen der Boundary Conditions
engineering
Software-Fehler
♦ Komplexe Softwaresysteme besitzen gleichzeitig
arbeitende (= "nebenläufige") Komponenten
© Stefan Leue 2005
20
software
8 Frage: gehen Max und Paul immer so miteinander um, dass sie sich
nie gegenseitig blockieren?
iMax verlangt Cola und gibt erst dann Schokolade
iPaul verlangt Schokolade und gibt erst dann Cola
engineering
Software-Fehler
proctype Max(chan AnPaul, VonPaul )
{
Maxistgrosszuegig:
atomic {
if
:: true && true ->
AnPaul!Schokolade;
goto Maxistkleinlich;
fi
}
proctype Paul(chan AnMax, VonMax )
{
Paulistgrosszuegig:
atomic {
if
:: true && true ->
AnMax!Cola;
goto Paulistkleinlich
fi
}
Maxistkleinlich:
atomic {
if
:: VonPaul?[Cola] && true ->
VonPaul?PaulanMax_msg;
AnPaul!Schokolade;
goto Maxbetruegt
fi
}
Paulistkleinlich:
atomic {
if
:: VonMax?[Schokolade] && true ->
VonMax?MaxanPaul_msg;
AnMax!Cola;
goto Paulbetruegt
fi
}
Maxbetruegt:
atomic {
if
:: VonPaul?[Cola] && true ->
VonPaul?PaulanMax_msg;
goto Maxistkleinlich
fi
}
}
Paulbetruegt:
atomic {
if
:: VonMax?[Schokolade] && true ->
VonMax?MaxanPaul_msg;
goto Paulistkleinlich
fi
}
}
© Stefan Leue 2005
21
software
♦ Das Modell als textuelles Programm (Auszug):
engineering
Software-Fehler
♦ Testen? Inspektion?
© Stefan Leue 2005
22
software
8 Modell nicht mehr intuitiv nachvollziehbar
8 daher verhalten nicht antizipierbar
inicht inspizierbar
inicht testbar
8 außerdem: "Testing can always only show the presence of bugs, but
never their absence" (E. W. Dijkstra)
8 daher: vollständige, automatisierte Suchmethode
engineering
Model Checking
♦ Model Checking von Expliziten Zustandräumen
8 systematische Erzeugung aller Konfigurationen (= Zustände) des
Softwaresystems
8 systematische Erzeugung aller möglichen Schritte (Schokolade,
Cola) des Systems (= Zustandsübergänge)
AnPaul!Schoko
AnMax!Cola
© Stefan Leue 2005
23
software
AnPaul!Schoko
engineering
Counterexample with Depth-First Search (DFS)
♦ Model Checking von expliziten Zustandsräumen
8 durchsuchen aller erreichbaren Konfigurationen nach "schlechten"
Konfigurationen
– hier: Konfigurationen, die blockieren, also keinen Nachfolger
haben
8 der Weg zu einer solchen Fehler-Konfiguration heißt Fehlerpfad
– hilfreich zur Fehlerbehebung
AnPaul!Schoko
AnMax!Cola
AnPaul!Schoko
© Stefan Leue 2005
24
software
AnMax!Cola
engineering
© Stefan Leue 2005
25
software
Model-Checking
engineering
Model Checking
© Stefan Leue 2005
26
software
"... hat eine noch formalere Methode zur Fehlersuche die Schwelle zur
industriellen Anwendung auf Software überschritten: das "Model-Checking".
Ähnlich wie eine Ampel nicht gleichzeitig für den Straßenverkehr und den
Fußgängerüberweg Grün zeigen darf, lassen sich auch für SoftwareModule kritische Zustände beschreiben, die sie nicht gleichzeitig mit
anderen Programmteilen annehmen dürfen. Model-Checking versucht zu
beweisen, dass verbotene Kombinationen nie gemeinsam auftreten - oder
bricht mit einem solchen Fehlerbeispiel ab..."
engineering
Der Weg zur Industriellen Praxis?
© Stefan Leue 2005
27
software
"Intel setzt diese Methode heute zur Überprüfung komplexer SchaltungsLayouts ein. Auch Microsoft greift für Gerätetreiber zu Model-CheckingTools, bestätigt Tony Hoare vom Microsoft Research Center in Cambridge.
'Die Treiber werden oft von Fremdfirmen geschrieben, aber im
Betriebssystemkern ausgeführt, und können ernsthafte Auswirkungen
haben, wenn sie fehlerträchtig sind.'"
engineering
Projects
♦ DMC
8 Directed Model Checking
♦ DiRePro
8 Directed Model Checking in the Analysis of Real-Time and
Probabilitstic Systems
– associate membership in SFB TR 14 "AVACS"
– contribution to AVACS projects S3 and R3
♦ VisADyn
8 Visualization and Analysis of Dynamic Software Systems
– Graduiertenkolleg "Explorative Analysis and Visualization of Large
Information Spaces"
♦ IMCOS
© Stefan Leue 2005
28
software
8 Incomplete Model Checking for Concurrent, Object-Oriented Systems
engineering
DMC
informed, heuristic search
(best-first, A*,...)
O
g
g(s)
expansion criterion:
s ∈ O with min. g(s) + h(s)
h(s)
DFS
(Depth First Search)
A* directed search
8 explicit state model checking is state space search
8 ways to be smarter than just DFS?
– heuristics guided search (best-first, A*, IDA*,...)
– adequate heuristic estimates
8 shorter or even optimally short counterexamples
– improved error explanation
8 for some analyses improved scalability
© Stefan Leue 2005
29
software
♦ Directed Model Checking
engineering
DiRePro
♦ Analysis of Continuous Time Markov Chains
8 for instance, SCSI-2 based computing sytems
8 combined functional and dependability analysis
The probability to reach a state s violating a state proposition ϑ,
i.e., satisfying ϕ := ¬ ϑ, within the time interval [0, t], does not
exceed a probability p ∈ [0, 1]:
P<p : Transient probability does not exceed p.
♦· t : Timed reachability within [0, t]
8 CSL model checking does not produce counterexamples
Path-length optimizing search
(BFS, Best-First, A*)
Depth-First Search (DFS)
8 use heuristic search (Z*) to maximize timed run probability
© Stefan Leue 2005
30
software
we want this!
engineering
IMCOS
♦ Buffer Boundedness for Asynchronous Concurrent
Object-Oriented Models
8 inherently desired property (model sanity)
8 necessary precondition for finite-state analyzability
8 undecidable
– develop semi-test based on gross overapproximation of model
8 analysis of UML 2.0 / UML-RT models
8 developed tool directly linked to IBM Rational Rose RT
© Stefan Leue 2005
31
software
♦ Application
engineering
IMCOS
Verification of UML-RT models
UML
-RT model (from RoseRT)
UML-RT
capsule
hierarchical
state machine
port
Property
Java code on
transitions
e.g.
deadlock-freedom,
LTL formula
Java model checker
(Bogor)
© Stefan Leue 2005
+ extensions specialized for UML-RT
software
Abstractions + Translation to BIR
engineering
© Stefan Leue 2005
33
software
Software-Versagen?
engineering
© Stefan Leue 2005
34
software
Vielen Dank für Ihre Aufmerksamkeit!
engineering

Documentos relacionados