1 / 51

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

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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

  5. Vertrag: Dienstnehmer undDienstgeber Dienstgeber Dienstnehmer Vorbedingung(eineMethode) == true Nachbedingung(eineMethode) == true

  6. Zusicherungen Mitlerweile in jeder Programmiersprache verfügbar • C: assert.h • Java 1.4: Zusicherungen in Sprachstandard eingebaut

  7. 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

  8. Untersuchte Hypothesen • Mit Zusicherungen erstellte Programme sind nicht zuverlässiger • Benutzung von Zusicherungen reduziert Programmieraufwand nicht • Zusicherungen erhöhen die Wiederverwendung nicht

  9. 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)

  10. Exp00 Exp99 Java Sprache C, Java Werkzeug APP, jContract jContract Teilnehmer 10/C, 10/Java 13 Programmiersprachen und Werkzeuge

  11. Auswertung • Datenmenge klein • Nicht normalverteilt • nichtparametrischer Test für Lagebestimmung (Rangsummen-Test nach Wilcoxon) • Signifikanzniveau  = 0.05

  12. Wilcoxon-Rangsummen-Test • Hypothesentest bei kleinen Datenmengen, wenn Art der Verteilung unklar • nichtparametrisches Gegenstück zum t-Test

  13. Weiteres Vorgehen • Vorstellung Exp99 • Gegenbalancierter Experimententwurf • Vorstellung Exp00 • Statistik: Wilcoxon-Rangsummen-Test

  14. Exp99: APP • Annotation Preprocessor (APP) • Vor/Nachbedingungen im Kommentar von C-Programmen • Zusicherungen lassen sich aus- und einschalten

  15. 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); @*/ { ... }

  16. jContract • Erlaubt Formulierung von • Klasseninvarianten • Vor/Nachbedingungen bei Methoden • Zusicherungen in Java-Doc-Kommentaren mit speziellen Tags

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

  18. 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

  19. 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

  20. Naiver Aufbau 1. Aufgabe 2. Aufgabe Jeder: A1 / M1 A2 / M2 A = Aufgabe M = Methode

  21. 1. Problem Jede Aufgabe wird immer mit derselben Methode bearbeitet. • Effekt abhängig von mehr als einer • unabhängigen Variable. • Effekt durch Zusammenspiel zweier • Variablen, Aufgabe und Methode 

  22. 2. Problem Aufgabe/Methode immer an derselben Stelle: A1/M1 an erster Stelle, A2/M2 an zweiter  • Reihenfolgeeffekt (order) Reihenfolge der Aufgaben beeinflusst den Effekt (Lerneffekt) • Übertragungseffekt (carry-over) Vorangegangene Leistung beeinflusst die weitere Leistung (Motivation)

  23. Gegenbalancierter Entwurf (GBE) • Kombiniere jede Aufgabe mit jeder Methode • Stelle jede Kombination aus Aufgabe/Methode an jede Stelle im Versuchsplan

  24. GBE 1. Aufgabe 2. Aufgabe Gruppe 1: Gruppe 2: Gruppe 3: Gruppe 4: A1 / M1 A1 / M2 A2 / M1 A2 / M2 A2 / M2 A2 / M1 A1 / M2 A1 / M1 A = Aufgabe M = Methode

  25. GBE • Bisher Inter-Subjekt GBE, Gruppen verglichen • Aber auch Intra-Subjekt GBE möglich: lasse jeden Teilnehmer alle möglichen Wechsel der Versuchsbedingungen machen

  26. Intra-Subjekt GBE • Bei zwei Versuchsbedingungen A und B: gib jedem Teilnehmer beide Reihenfolgen, also ABBA. • Beispiel: Geschmackstest Coca Cola vs. Pepsi Cola.

  27. A B B A 0 1 2 3 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. Bedingung Bewertung A: 3 Bewertung B: 3 Bewertung

  28. Bedingung A B B A B A A B 0 4 6 8 0 4 6 8 Bewertung 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

  29. 2. Aufgabe #G Ch, nAPP Str, APP Ch, APP Str, nAPP 2 3 2 3 GBE in Exp99 1. Aufgabe #A Gruppe 1 Gruppe 2 Gruppe 3 Gruppe 4 Str, APP Ch, nAPP Str, nAPP Ch, APP 2 3 1 3 Str = String-Aufgabe Ch = Kettenregel-Aufgabe (engl. chain-rule) #G = Anzahl geplant #A = Anzahl aktuell

  30. Die Aufgaben • Teile eines Programms für symbolische Ableitung • Programm entstand durch Portierung von Pascal nach C

  31. 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

  32. Aufgabe Kettenregel • Erweiterung des Programms um die Kettenregel: • Implementierung der Funktion verlangt Wissen über Ableitungsprogramm

  33. Versuchsaufbau Training der APP Syntax Lösen der 1. Aufgabe Lösen der 2. Aufgabe

  34. Ergebnis: Programmieraufwand • Gemessen in Mann-Minuten • Kein Unterschied für String und für Kettenregel

  35. 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)

  36. 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

  37. Exp00: jContract • jContract im WS 2000 stabiler • Experiment mit Java und jContract

  38. 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

  39. 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

  40. Versuchsaufbau Webkurs für jContract Experiment- Gruppe Lösen von GraphBase Kontroll- Gruppe kein Webkurs

  41. 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

  42. Ergebnis: Programmieraufwand • Kein Unterschied für die Aufgabe Graphbase • pval = 0.31 • Fazit: Verwendung von Zusicherungen und jContract verringert nicht die Arbeitszeit

  43. 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

  44. 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

  45. Ergebnis: Zuverlässigkeit • Programme der jContract-Gruppe tendenziell zuverlässiger • pval = 0.11

  46. Charakteristiken der Experimente • Teilnehmer erhielten Schulung über Zusicherungen im PSP-Kurs • Aufgabenstellung betonte die Vorzüge von Zusicherungen

  47. 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

  48. 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)

  49. 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

  50. Literatur (Forts.) • Büning, Trenkler:Nichtparametrische statistische Methoden. (de Gruyter, 1994) • Christensen: Experimental methodology.(Allyn and Bacon, 2001)

More Related