prof. dr. walter f. tichy dr. matthias müller

51
Prof. Dr. Walter F. Tichy Dr. Matthias Müller Sommersemester 2006 Empirische Softwaretechnik

Upload: salvador-flynn

Post on 30-Dec-2015

37 views

Category:

Documents


1 download

DESCRIPTION

Empirische Softwaretechnik. Prof. Dr. Walter F. Tichy Dr. Matthias Müller. Sommersemester 2006. Experimente über Zusicherungen. Übersicht. Einführung „Programmieren mit Vertrag“ 2 Experimente über die Nützlichkeit von Zusicherungen beim Programmieren Gegenbalancierter Experimententwurf - PowerPoint PPT Presentation

TRANSCRIPT

Prof. Dr. Walter F. TichyDr. Matthias Müller

Sommersemester 2006

Empirische Softwaretechnik

2

Experimente überZusicherungen

3

Übersicht

• Einführung „Programmieren mit Vertrag“

• 2 Experimente über die Nützlichkeit von Zusicherungen beim Programmieren

• Gegenbalancierter Experimententwurf

• Wilcoxon-Rangsummen-Test

4

Entwurf durch Vertrag

• 1988 Bertrand Meyer stellt Programmiersprache Eiffel vor

• In Eiffel sind Zusicherungen eingebaut

• Verwendung von Zusicherungen endet in Vertrag zwischen Dienstnehmer und Dienstgeber

6

Vertrag: Dienstnehmer undDienstgeber

Dienstnehmer Dienstgeber

Vorbedingung(eineMethode) == true

Nachbedingung(eineMethode) == true

7

Zusicherungen

• C: assert.h

• Java 1.4: Zusicherungen in Sprachstandard eingebaut

Mitlerweile in jeder Programmiersprache

verfügbar

8

Meyers Hypothesen

• Hypothese Korrektheit

• Hypothese Wiederverwendung

Mit Zusicherungen geschriebene Software ist korrekt, da sie zusammen mit ihrer Spezifikation entwickelt wird

Zusicherungen führen zu höherer Wiederverwendung

9

Untersuchte Hypothesen

• Mit Zusicherungen erstellte Programme sind nicht zuverlässiger

• Benutzung von Zusicherungen reduziert Programmieraufwand nicht

• Zusicherungen erhöhen die Wiederverwendung nicht

10

Umfeld

• Durchgeführt im WS 1999 (Exp99) und 2000 (Exp00)

• Teilnehmer waren Informatikstudenten im Hauptdiplom

• Beide Experimente waren Teil des Praktikums Der persönliche Software-prozess (PSP)

11

Programmiersprachen und Werkzeuge

Sprache

Exp99 Exp00

C, Java Java

Werkzeug APP, jContract jContract

Teilnehmer 10/C, 10/Java 13

12

Auswertung

• Datenmenge klein

• Nicht normalverteilt

• nichtparametrischer Test für Lagebestimmung (Rangsummen-Test nach Wilcoxon)

• Signifikanzniveau = 0.05

13

Wilcoxon-Rangsummen-Test

• Hypothesentest bei kleinen Datenmengen, wenn Art der Verteilung unklar

• nichtparametrisches Gegenstück zum t-Test

14

Weiteres Vorgehen

• Vorstellung Exp99

• Gegenbalancierter Experimententwurf

• Vorstellung Exp00

• Statistik: Wilcoxon-Rangsummen-Test

15

Exp99: APP

• Annotation Preprocessor (APP)

• Vor/Nachbedingungen im Kommentar von C-Programmen

• Zusicherungen lassen sich aus- und einschalten

17

APP – im Programm

int square_root(int x)/*@ assume x >= 0; return y where y >= 0; return y where y*y <= x && x < (y+1)*(y+1);@*/{ ... }

18

jContract

• Erlaubt Formulierung von– Klasseninvarianten– Vor/Nachbedingungen bei Methoden

• Zusicherungen in Java-Doc-Kommentaren mit speziellen Tags

20

jContract – im Programm

/** * @pre time != null * @post return.equals("Hello") * || return.equals("Good night") */String welcome(String time) { ... }

21

Erfahrung mit jContract

• jContract war beim Experiment noch im Teststadium

• Teilnehmer widmeten sich mehr der Syntax von jContract als der Problemstellung

• Folge: jContract Daten verfälscht

• Konsequenz: jContract Daten verworfen; also keine Java-Datenpunkte

22

Entwurf: Exp99

• Gegenbalancierter Experimententwurf

• Jeder Teilnehmer liefert zwei Datenpunkte

• Jeder Teilnehmer benutzt beide Programmiermethoden:– einmal mit Zusicherungen– einmal ohne Zusicherungen

• Jede Methode mit anderer Aufgabe

23

Naiver Aufbau

A1 / M1

A = AufgabeM = Methode

A2 / M2Jeder:

1. Aufgabe 2. Aufgabe

24

1. Problem

• Effekt abhängig von mehr als einer unabhängigen Variable.• Effekt durch Zusammenspiel zweier Variablen, Aufgabe und Methode

Jede Aufgabe wird immer mit derselben

Methode bearbeitet.

25

2. Problem

• Reihenfolgeeffekt (order) Reihenfolge der Aufgaben beeinflusst den Effekt (Lerneffekt)

• Übertragungseffekt (carry-over) Vorangegangene Leistung beeinflusst die weitere Leistung (Motivation)

Aufgabe/Methode immer an derselben Stelle: A1/M1 an erster Stelle, A2/M2 an zweiter

26

• Kombiniere jede Aufgabe mit jeder Methode

• Stelle jede Kombination aus Aufgabe/Methode an jede Stelle im Versuchsplan

Gegenbalancierter Entwurf (GBE)

27

A1 / M1A1 / M2A2 / M1A2 / M2

A = AufgabeM = Methode

A2 / M2A2 / M1A1 / M2A1 / M1

Gruppe 1:Gruppe 2:Gruppe 3:Gruppe 4:

1. Aufgabe 2. Aufgabe

GBE

28

GBE

• Bisher Inter-Subjekt GBE, Gruppen verglichen

• Aber auch Intra-Subjekt GBE möglich: lasse jeden Teilnehmer alle möglichen Wechsel der Versuchsbedingungen machen

29

Intra-Subjekt GBE

• Bei zwei Versuchsbedingungen A und B: gib jedem Teilnehmer beide Reihenfolgen, also ABBA.

• Beispiel: Geschmackstest Coca Cola vs. Pepsi Cola.

30

Intra-Subjekt GBE

• Annahme: Bei jedem wiederholten Versuch steigt die Bewertung um einen konstanten Wert

• Wenn die Summe der Bewertungen für A und B gleich ist, so ist der Folge-Effekt neutralisiert.

A B B A

0 1 2 3

Bedingung

Bewertung

Bewertung A: 3Bewertung B: 3

31

Intra-Subjekt GBE

• Wenn Steigerung der Bewertung nicht linear ist (z.B. 0, 4, 6, 8), dann Ordnungseffekt durch Folge BAAB kontrollieren

Bewertung A: 18Bewertung B: 18

A B B A

0 4 6 8

Bedingung

Bewertung

B A A B

0 4 6 8

32

GBE in Exp99

1. Aufgabe

Gruppe 1Gruppe 2Gruppe 3Gruppe 4

Str, APPCh, nAPPStr, nAPPCh, APP

2. Aufgabe

Ch, nAPPStr, APPCh, APPStr, nAPP

#G

2323

Str = String-AufgabeCh = Kettenregel-Aufgabe (engl. chain-rule)#G = Anzahl geplant#A = Anzahl aktuell

#A

2313

33

Die Aufgaben

• Teile eines Programms für symbolische Ableitung

• Programm entstand durch Portierung von Pascal nach C

34

Aufgabe String

• String-Operationen von Pascal sind nicht Teil der C-Standardbibliothek

• Implementierung der insert und delete String-Funktionen

• Funktionen haben nichts mit umgebendem Programm zu tun

35

Aufgabe Kettenregel

• Erweiterung des Programms um die Kettenregel:

• Implementierung der Funktion verlangt Wissen über Ableitungsprogramm

xxfxf

36

Versuchsaufbau

Training derAPP Syntax

Lösen der1. Aufgabe

Lösen der2. Aufgabe

37

Ergebnis: Programmieraufwand

• Gemessen in Mann-Minuten

• Kein Unterschied für String und für Kettenregel

38

Ergebnis: Wiederverwendung

• Anzahl der wiederverwendeten Funktionen in und ausserhalb von Zusicherungen

• Gezählt für Kettenregel-Aufgabe

• Innerhalb Zusicherungen: APP scheint Wiederverwendung zu fördern (pval = 0.07)

39

Ergebnis: Wiederverwendung

• Ausserhalb Zusicherungen: APP-Gruppe hat mehr Funktionen wiederverwendet (pval = 0.19)

• Es scheint, dass Verwendung von APP und Zusicherungen Wiederverwendung fördert

• Mögliche Ursache: Besseres Programm-verständnis durch Zusicherungen

40

Exp00: jContract

• jContract im WS 2000 stabiler

• Experiment mit Java und jContract

41

Experimententwurf

• Ein Faktor, Nachtest, Intersubjekt-Entwurf

• Experimentgruppe (7 Teilnehmer)– Verwendeten jContract– Zusicherungen im Programmtext

• Kontrollgruppe (6 Teilnehmer)– Verwendeten keine Zusicherungen– Keine Zusicherungen im Programmtext, aber

natürlichsprachliche Information

42

Experimentaufgabe

• GraphBase

• Implementierung der Hauptklasse einer Graphenbibliothek

• Methodensignaturen vorgegeben

• Methodenrümpfe sollten geschrieben werden, z.B.– addEdge, removeNode– für gerichtete und/oder gewichtete Graphen

43

Versuchsaufbau

Webkurs fürjContract

Lösen vonGraphBase

Experiment-Gruppe

Kontroll-Gruppe

keinWebkurs

44

Ergebnis: Programmieraufwand

• Gemessen in Mann-Minuten

• Ergebnis für jContract-Gruppe:

• Ergebnis für Kontroll-Gruppe:

702 471 399 1148 375 223 282

270 291 276 469 729 392

45

Ergebnis: Programmieraufwand

• Kein Unterschied für die Aufgabe Graphbase

• pval = 0.31

• Fazit: Verwendung von Zusicherungen und jContract verringert nicht die Arbeitszeit

46

Ergebnis: Wiederverwendete Methoden

• Wiederverwendete Methoden mit und ohne Zusicherungen: kein Unterschied (pval = 0.23)

• Wiederverwendete Methoden ausserhalb Zusicherungen:– jContract-Gruppe verwendet signifikant

weniger Methoden wieder– Implementierung in Zusicherungen verlagert

47

Ergebnis: Zuverlässigkeit

• Test, der Graphen des Subjekt-Programms und des Goldprogramms vergleicht

• Graphen zufällig aufgebaut

• Etwa 730 000 Methodenaufrufe mit 7,5 Millionen Zusicherungen überprüft

48

Ergebnis: Zuverlässigkeit

• Programme der jContract-Gruppe tendenziell zuverlässiger

• pval = 0.11

49

Charakteristiken der Experimente

• Teilnehmer erhielten Schulung über Zusicherungen im PSP-Kurs

• Aufgabenstellung betonte die Vorzüge von Zusicherungen

50

Widerspruch bei der Wiederverwendung ?

• Exp99: Zusicherungen erhöhen Wiederverwendung

• Exp00: Zusicherungen erhöhen Wiederverwendung nicht

• Datenbasis ist klein; deshalb nur geringe Chance, einen Unterschied zu entdecken

• Wenn Datenbasis größer gewesen wäre, Unterschied eventuell auch entdeckt

51

Literatur

• Müller, Hagner, Typke:Two controlled experiments concerning the usefulness of assertions as a means for programming. International Conference on Software Maintenance ICSM (2002)

52

Literatur (Forts.)

• Hagner: Ein kontrolliertes Experiment über die Nützlichkeit von Zusicherungen als Hilfsmittel beim Programmieren. Studienarbeit, Karlsruhe, März 2001

• Typke: Die Nützlichkeit von Zusicherungen als Hilfsmittel beim Programmieren: Ein kontrolliertes Experiment. Diplomarbeit, Karlsruhe, April 1999

53

Literatur (Forts.)

• Büning, Trenkler:Nichtparametrische statistische Methoden. (de Gruyter, 1994)

• Christensen: Experimental methodology. (Allyn and Bacon, 2001)

54

Fortsetzung folgt(Wilcoxon-Test)