of 50 /50
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 [email protected] Folien freundlicherweise zur Verfügung gestellt von Dr. Birgit Hofer

Software Maintenance VU 3.0 WS 2015/16 · Software Maintenance Introduction 41 (Vorläufiger) Zeitplan Vorlesung 6.10. Vorbesprechung + Program Slicing (static) – Roxane Koitz 13.10

  • Author
    others

  • View
    3

  • Download
    0

Embed Size (px)

Text 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

    [email protected]

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

  • 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 „“

    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]

    mailto:[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

    http://www.ist.tugraz.at/soma08.htmlhttp://www.ist.tugraz.at/soma08.htmlhttp://www.ist.tugraz.at/soma08.htmlhttp://www.ist.tugraz.at/soma08.htmlhttp://www.ist.tugraz.at/soma08.html

  • 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?