Software Maintenance VU 3.0 WS 2015/16 · Software Maintenance Introduction 41 (Vorläufiger)...
Transcript of Software Maintenance VU 3.0 WS 2015/16 · Software Maintenance Introduction 41 (Vorläufiger)...
Software Maintenance
Introduction 1
S C I E N C E P A S S I O N T E C H N O L O G Y
u www.tugraz.at
Software Maintenance
VU 3.0 WS 2015/16
Univ.-Prof. Dr. Franz Wotawa
und DI Roxane Koitz Institut für Softwaretechnologie
Folien freundlicherweise zur Verfügung gestellt von Dr. Birgit Hofer
Software Maintenance
Introduction 2
Inhalt dieser LV-Einheit
Motivation
Maintenance Beispiele
Fehler in Software
Über die Lehrveranstaltung
Inhalt
Beurteilungsschema
Organisatorisches
Static Slicing
Software Maintenance
Introduction 3
Inhalt dieser LV-Einheit
Motivation
Maintenance Beispiele
Fehler in Software
Über die Lehrveranstaltung
Inhalt
Beurteilungsschema
Organisatorisches
Static Slicing
Software Maintenance
Introduction 4
Wozu Software Maintenance?
Meine Software ist immer korrekt!
Keine Modifikationen. Nur neue Projekte!
Quelle: http://www.genrocket.com/
Software Maintenance
Introduction 5
1999
Y2K Bug
Quelle: http://www.wired.com/software/coolapps/news/2005/11/69355?currentPage=2
2014
Heartbleed
1993
Rechenfehler
in Chip
1996
Ariane 5
2005
Handy-Netzausfall,
Steiermark
2009
Teure Zigaretten
Einige schlechte Maintenance-Beispiele
2038
Y2K38
…
Software Maintenance
Introduction 6
Quelle: http://www.wired.com/software/coolapps/news/2005/11/69355?currentPage=2
1993
Rechenfehler
in Chip
• 3-5 Millionen Chips waren von einem Fehler
in der Division von Zahlen betroffen
• $ 475 Millionen Schaden
…
Software Maintenance
Introduction 7
Quelle: http://www.wired.com/software/coolapps/news/2005/11/69355?currentPage=2
1996
Ariane 5
• Fehler bei der Übersetzung einer Zahl
in ein anderes Zahlensystem
• Zu großer Schub führte zu Explosion
• $ 370 Millionen Schaden
…
Software Maintenance
Introduction 8
Quelle: http://www.wired.com/software/coolapps/news/2005/11/69355?currentPage=2
1999
Y2K Bug
• In den frühen 1970-ern: Programmierer
sparten Speicher durch Kürzen des Datums
• In den 1990-er Jahren waren viele
dieser Programme noch im Einsatz
…
Software Maintenance
Introduction 9
2005
Handy-Netzausfall,
Steiermark Quelle: Kleine Zeitung
• Neue Software führte zu Problemen als zu viele
Benutzer telefonierten
• 500.000 Steirer für 8-9 Stunden ohne
Handyempfang
…
Software Maintenance
Introduction 10
Quelle: Kleine Zeitung
2009
Teure Zigaretten
• Fehler in Software-Update
• Falschbuchungen bei
Kreditkarten-Abrechungen
…
Software Maintenance
Introduction 11
2014
Heartbleed
• Schwachstelle bestimmter OpenSSL Versionen
• Input Überprüfung
• Buffer over-read
• $500 Millionen Schaden
Quellen: http://www5.in.tum.de/~huckle/bugse.html,
http://www.codenomicon.com
…
Software Maintenance
Introduction 12
2038
Y2K38
• UNIX Zeit seit 1.1.1970 in Sekunden
• Vorzeichenbehaftete 32-Bit-Ganzzahl
• 19.01.2038, 03:14:08 UTC
Integer overflow
• $? Schaden
Quellen: http://listverse.com/2012/12/24/10-seriously-epic-computer-software-bugs/
…
Software Maintenance
Introduction 13
Fehler pro 1000 Zeilen Software
Quellen: http://www5.in.tum.de/~huckle/bugse.html,
http://catless.ncl.ac.uk/Risks/20.82.html#subj7,
http://en.wikipedia.org/wiki/Source_lines_of_code
Software Maintenance
Introduction 14
Beispiel: Binary Search
1: public static int binarySearch(int[] a, int key) { 2: int low = 0; 3: int high = a.length - 1; 4: 5: while (low <= high) { 6: int mid = (low + high) / 2; 7: int midVal = a[mid]; 8: 9: if (midVal < key) 10: low = mid + 1; 11: else if (midVal > key) 12: high = mid - 1; 13: else 14: return mid; // key found 15: } 16: return -(low + 1); // key not found. 17: }
Software Maintenance
Introduction 15
Probleme bei vorherigen Beispielen
• Testen unter Verwendung kleiner Eingangswerte
“Programm implementiert das gewünschte Verhalten
korrekt!”
• Probleme durch Limitierungen der
Ausführungsumgebung
int + int kann größer als int sein
Anzahl der rekursiven Aufrufe ist begrenzt
• Fehler treten zur Laufzeit auf!!!
Software Maintenance
Introduction 16
Mobile Phones: App Market
Is the support for
just one OS, e.g.,
Android, easy
Software Maintenance
Introduction 17
Mobile Phones: App Market
Supporting JUST Android?
Quelle: http://www.idownloadblog.com/2013/07/30/the-terrible-state-of-android-fragmentation/
http://thenextweb.com/insider/2015/08/05/this-is-what-android-fragmentation-looks-like-in-2015/
Software Maintenance
Introduction 18
Inhalt dieser LV-Einheit
Motivation
Maintenance Beispiele
Fehler in Software
Über die Lehrveranstaltung
Inhalt
Beurteilungsschema
Organisatorisches
Static Slicing
Software Maintenance
Introduction 19
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 20
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 21
Software Maintenance
Introduction 22
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 23
Process models
Development Maintenance
Wasserfall-Modell
Spiral-Modell
Osbornes Modell
Boehms Modell
Software Maintenance
Introduction 24
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 25
Programmverstehen
• Einflussfaktoren
• Strategien
Software Maintenance
Introduction 26
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 27
Zweck der Analyse
• Struktur von Programmen offenlegen
• Fragen beantworten wie
Welche Statements haben einen Einfluss auf eine
Variable in einer bestimmten Programmzeile?
Welche Statements haben keinen Einfluss auf Resultat?
Kann ich eine bestimmte Stelle im Programm erreichen?
• LV-Ziel
Grundlegende Konzepte vermitteln
Kleine Beispiele für Demonstrationszwecke
Ideen auf größere Programme anwendbar
Software Maintenance
Introduction 28
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 29
Beispiel
public int foo(int x,y) {
int i = 0;
int result = 0;
while (i < x) {
result = result + y;
i = i + 1;
}
return result;
}
Software Maintenance
Introduction 30
Graphische Repräsentationen
Control flow graph Program dependency graph
i=0
result=0
result=result+y
i<x
i=i+1
start
i=0 result=0 while i<x
i=i+1 result=result+y
Software Maintenance
Introduction 31
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 32
Slicing
• A Slice is a (reduced) program, that preserves the
original program’s behavior for a given set of variables
at a chosen point in a program
1. public int foo(int x,y) {
2. int i = 0;
3. int result = 0;
4. while (i < x) {
5. result = result + y;
6. i = i + 1;
7. }
8. return result;
9. }
Slicing Criterion:
(8, {i})
Software Maintenance
Introduction 33
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 34
Delta Debugging
• Strukturierter Ansatz zur Minimierung von
Fehlerverursachenden Inputsequenzen
• Beispiel
Mozilla Bugzilla entry #24735 – „Mozilla cannot print“
Browser crashed when printing a certain file
Input file with 896 lines reduced to a single „<SELECT>“
statement
Software Maintenance
Introduction 35
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 36
Object Flow Graphs
• Datenflussanalyse von Objekt-orientierten
Programmen
• Verwendung in Reverse Engineering
Verfeinerung von Klassendiagrammen
Software Maintenance
Introduction 37
Was Sie in dieser LV erwartet
• Was ist Software Maintenance?
Klassifizierung, Kosten, Umfeld
Prozessmodelle
Teilprozesse (Programmverstehen, Reuse)
• Techniken zur Programmanalyse
Graphische Repräsentationen
Slicing
Delta Debugging
Object Flow Graphs
Class Diagram Recovery
Software Maintenance
Introduction 38
Class Diagram Recovery
Software Maintenance
Introduction 39
Beurteilung
• 40 % Klausur
• 60 % Aufgabenblätter
3 Aufgabenblätter
Gruppenarbeit (4 Studierende)
Abgabegespräche
Minimalanforderung:
50 % der erreichbaren Punkte bei der Klausur
50 % der erreichbaren Punkte bei JEDEM Aufgabenblatt
Software Maintenance
Introduction 40
Notenschlüssel
Prozent Note
0..50 5
>50..63 4
>63..75 3
>75..88 2
>88..100 1
Software Maintenance
Introduction 41
(Vorläufiger) Zeitplan Vorlesung
6.10. Vorbesprechung + Program Slicing (static) – Roxane Koitz
13.10. Program Slicing (dynamic) – Prof. Wotawa
20.10. Program Slicing (relevant) + Hitting Sets – Prof. Wotawa
27.10. Delta Debugging – Prof. Wotawa
3.11. Forward Slicing – Roxane Koitz
10.11. Object Flow Graphs – Prof. Wotawa
17.11. Class Diagram Extraction + Theorie – Prof. Wotawa
24.11. Theorie – Roxane Koitz
1.12. Theorie – Prof. Wotawa
15.12. Klausur (2 Gruppen)
12. 1. Nachklausur Ort und Zeit:
Dienstag, 10:00 s.t.
bis ca. 12:15, HS i7
Software Maintenance
Introduction 42
Klausur
• Umfang
Theorie
Beispiele
• Nachklausur für LV-Teilnehmer, die
beim Haupttermin negativ waren
nicht zum Haupttermin angetreten sind
Software Maintenance
Introduction 43
Aufgabenblätter
Aufgabe Blatt 1 Blatt 2 Blatt 3
Studienassistent Stephan Claudio Bianca
Inhalt • Static Slicing
• Dynamic Slicing
• Hitting Sets
• Delta Debugging
• Forward Slicing
• Class Diagram Extr.
• Object Flow Graphs
Ausgabe (Di) 13.10. 3.11. 17.11.
Registrierung (Di) 20.10. 10.11. 24.11.
Tutorial 15.10. 5.11. od. 10.11. 26.11
Fragestunde (Do) 22.10. 12.11. 3.12.
Abgabe (Mo/Di 10
Uhr) 3.11. 17.11. 7.12.
Abgabegespräche
(Do / Fr) 5.11. / 6.11. 19.11. / 20.11 10.12. / 11.12.
Software Maintenance
Introduction 44
Aufgabenblätter
• Programmieraufgabe
Implementierung von Vorlesungs-Algorithmen
Programmiersprache: Java
Zur Verfügung gestelltes Material: Framework
Basistestfall
Abgabe via SVN
• Theoretische Aufgaben
Beispiele ähnlich zu denen aus der Vorlesung
Zur Verfügung gestelltes Material: Latex-Vorlage
Abgabebox
Software Maintenance
Introduction 45
Aufgabenblätter
• Gruppenregistrierung
4 Studierende
Für JEDES Aufgabenblatt
Gruppensuche via Newsgroup
(tu-graz.lv.soma.gruppensuche)
Möglichkeit Gruppe zu wechseln
Zugang zu SVN Repositories
• Abgabegespräche
Verpflichtend
JEDES Gruppenmitglied muss gelöste Aufgaben
erklären und vorrechnen können (wird überprüft!)
Software Maintenance
Introduction 46
Bei Fragen
Während / nach der Vorlesung
Fragestunde
Newsgroup (tu-graz.lv.soma)
Sprechstunden
• Prof. Wotawa: Dienstags, 13 – 14 Uhr
• Roxane Koitz: Montags, 13 – 14 Uhr
Email an [email protected]
Software Maintenance
Introduction 47
UE-Teilnahme
Klausur
Nachklausur
Positiv
Positiv Positives
Zeugnis
Negatives
Zeugnis
Kein
Zeugnis
JA
NEIN
NEIN
NEIN JA
JA
START Anmeldung
Abmeldung
Software Maintenance
Introduction 48
Literatur
Penny Grubb and Amstrong A. Takang, Software Maintenance: Concepts and Practice, 2nd Ed., World Scientific Publishing Company, 2003, ISBN: 981238426X
Paolo Tonella and Alessandra Potrich,
Reverse Engineering of Object Oriented Code,
Springer, 2005, ISBN 0-387-40295-0
Skriptum, Folien und Links zu weiterführender Literatur http://www.ist.tugraz.at/teaching/bin/view/
Main/SoftwareMaintenance
Software Maintenance
Introduction 49
Tipps / Ratschläge
• Besuchen Sie den Vorlesungsteil!
• Versuchen Sie ALLE Übungsbeispiele selbständig zu lösen!
• Nutzen Sie bei Fragen die Sprechstunden, Fragestunden, Tutorials und die Newsgroup (tu-graz.lv.soma)
Software Maintenance
Introduction 50
Fragen?