Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Prof. Dr. Walter F. Tichy Dr. Matthias Müller Sommersemester 2006 Empirische Softwaretechnik."—  Präsentation transkript:

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)


Herunterladen ppt "Prof. Dr. Walter F. Tichy Dr. Matthias Müller Sommersemester 2006 Empirische Softwaretechnik."

Ähnliche Präsentationen


Google-Anzeigen