Upload
salvador-flynn
View
37
Download
1
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
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
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
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
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)