Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Alrich Dosch Geändert vor über 10 Jahren
1
Prof. Dr. Walter F. Tichy Dr. Matthias Müller Sommersemester 2006 Empirische Softwaretechnik
2
2 Experimente über Zusicherungen
3
3 Übersicht Einführung Programmieren mit Vertrag 2 Experimente über die Nützlichkeit von Zusicherungen beim Programmieren Gegenbalancierter Experimententwurf Wilcoxon-Rangsummen-Test
4
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
5
5 Interpretation des Vertrages Wenn der Dienstnehmer die Bedingungen des Vertrages einhält, dann werden vom Dienstgeber die Leistungen garantiert Bedingungen angegeben durch Vorbedingungen Leistungen angegeben durch Nachbedingungen
6
6 Vertrag: Dienstnehmer und Dienstgeber Dienstnehmer Dienstgeber Vorbedingung(eineMethode) == true Nachbedingung(eineMethode) == true
7
7 Zusicherungen C: assert.h Java 1.4: Zusicherungen in Sprachstandard eingebaut Mitlerweile in jeder Programmiersprache verfügbar
8
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
9 Untersuchte Hypothesen Mit Zusicherungen erstellte Programme sind nicht zuverlässiger Benutzung von Zusicherungen reduziert Programmieraufwand nicht Zusicherungen erhöhen die Wiederverwendung nicht
10
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
11 Programmiersprachen und Werkzeuge Sprache Exp99 Exp00 C, Java Java Werkzeug APP, jContractjContract Teilnehmer10/C, 10/Java13
12
12 Auswertung Datenmenge klein Nicht normalverteilt nichtparametrischer Test für Lagebestimmung (Rangsummen-Test nach Wilcoxon) Signifikanzniveau = 0.05
13
13 Wilcoxon-Rangsummen-Test Hypothesentest bei kleinen Datenmengen, wenn Art der Verteilung unklar nichtparametrisches Gegenstück zum t-Test
14
14 Weiteres Vorgehen Vorstellung Exp99 Gegenbalancierter Experimententwurf Vorstellung Exp00 Statistik: Wilcoxon-Rangsummen-Test
15
15 Exp99: APP Annotation Preprocessor (APP) Vor/Nachbedingungen im Kommentar von C-Programmen Zusicherungen lassen sich aus- und einschalten
16
16 APP - Syntax assume ; promise ; return where ; assert ;
17
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
18 jContract Erlaubt Formulierung von –Klasseninvarianten –Vor/Nachbedingungen bei Methoden Zusicherungen in Java-Doc-Kommentaren mit speziellen Tags
19
19 jContract - Syntax @invariant @pre @post forall in |
20
20 jContract – im Programm /** * @pre time != null * @post return.equals("Hello") * || return.equals("Good night") */ String welcome(String time) {... }
21
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
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
23 Naiver Aufbau A1 / M1 A = Aufgabe M = Methode A2 / M2Jeder: 1. Aufgabe2. Aufgabe
24
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
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
26 Kombiniere jede Aufgabe mit jeder Methode Stelle jede Kombination aus Aufgabe/Methode an jede Stelle im Versuchsplan Gegenbalancierter Entwurf (GBE)
27
27 A1 / M1 A1 / M2 A2 / M1 A2 / M2 A = Aufgabe M = Methode A2 / M2 A2 / M1 A1 / M2 A1 / M1 Gruppe 1: Gruppe 2: Gruppe 3: Gruppe 4: 1. Aufgabe2. Aufgabe GBE
28
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
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
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: 3 Bewertung B: 3
31
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: 18 Bewertung B: 18 A B B A 0 4 6 8 Bedingung Bewertung B A A B 0 4 6 8
32
32 GBE in Exp99 1. Aufgabe Gruppe 1 Gruppe 2 Gruppe 3 Gruppe 4 Str, APP Ch, nAPP Str, nAPP Ch, APP 2. Aufgabe Ch, nAPP Str, APP Ch, APP Str, nAPP #G 23232323 Str = String-Aufgabe Ch = Kettenregel-Aufgabe (engl. chain-rule) #G = Anzahl geplant #A = Anzahl aktuell #A 23132313
33
33 Die Aufgaben Teile eines Programms für symbolische Ableitung Programm entstand durch Portierung von Pascal nach C
34
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
35 Aufgabe Kettenregel Erweiterung des Programms um die Kettenregel: Implementierung der Funktion verlangt Wissen über Ableitungsprogramm
36
36 Versuchsaufbau Training der APP Syntax Lösen der 1. Aufgabe Lösen der 2. Aufgabe
37
37 Ergebnis: Programmieraufwand Gemessen in Mann-Minuten Kein Unterschied für String und für Kettenregel
38
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
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
40 Exp00: jContract jContract im WS 2000 stabiler Experiment mit Java und jContract
41
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
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
43 Versuchsaufbau Webkurs für jContract Lösen von GraphBase Experiment- Gruppe Kontroll- Gruppe kein Webkurs
44
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
45 Ergebnis: Programmieraufwand Kein Unterschied für die Aufgabe Graphbase pval = 0.31 Fazit: Verwendung von Zusicherungen und jContract verringert nicht die Arbeitszeit
46
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
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
48 Ergebnis: Zuverlässigkeit Programme der jContract-Gruppe tendenziell zuverlässiger pval = 0.11
49
49 Charakteristiken der Experimente Teilnehmer erhielten Schulung über Zusicherungen im PSP-Kurs Aufgabenstellung betonte die Vorzüge von Zusicherungen
50
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
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
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
53 Literatur (Forts.) Büning, Trenkler: Nichtparametrische statistische Methoden. (de Gruyter, 1994) Christensen: Experimental methodology. (Allyn and Bacon, 2001)
54
54 Fortsetzung folgt (Wilcoxon-Test)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.