Software Maintenance VU 3.0 WS 2015/16 · Software Maintenance Introduction 41 (Vorläufiger)...

Post on 15-Aug-2020

6 views 0 download

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

soma@ist.tugraz.at

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 soma@ist.tugraz.at

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?