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

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

Embed Size (px)

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

Citation preview

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)