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

Slides:



Advertisements
Ähnliche Präsentationen
Der F - Test Man prüft, ob sich 2 Varianzen unterscheiden, mit dem F-Quotienten: Geprüft werden stets die Schätzungen der Populationsvarianzen aufgrund.
Advertisements

Das Lehrgebiet „Software Engineering“
Forschungszentrum caesar
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Von David Keß, Heinrich Wölk, Daniel Hauck
Dr. Andreas Winter Sommersemester 2007 Einführung in die Software-Entwicklung © Institut für Informatik Programmier-Richtlinien vgl. auch
Statistische Methoden in der Hochenergiephysik
Verschiedene Statistik- Programme - verschiedene Ergebnisse bei gleichen Analysen, kann das sein? Autor: Patrick Arnold.
Konzeption und Implementation visueller Editoren zur Bearbeitung von SPS-Schrittketten mit dem Editorgeneratorsystem DEViL Dennis Klassen Höxterstraße.
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
Wissensmanagement mit semantischen Netzen – Analyse und Vergleich verschiedener Softwarelösungen Autor: Holger Wilhelm Referentin: Prof. Dr. Uta Störl.
FB Informatik Prof. Dr. R.Nitsch Programmieren 2 Future Car Projekt Reiner Nitsch
Management großer Softwareprojekte Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin, Institut für Informatik Fraunhofer Institut für Rechnerarchitektur.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Links Links sind im Text angegeben. Weitere Links werden kontinuierlich eingefügt.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme LE P MuSofT Erkundungsumgebung Entwicklung eines komponentenbasierten Systems WS 03/04.
Forschungsstatistik II
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Fakten, Regeln und Anfragen
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Hypothesen testen: Grundidee
Programmieren mit JAVA
Fehlerabdeckung/ Regressionstest1 Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Fehlerabdeckung/ Regressionstest Vortragende:
Einführung in die Programmierung Datensammlung
Einstichproben-Tests
Visualisierung funktionaler Programme
Eigenschaften der OLS-Schätzer
Software Engineering WS 2009
Spezifikation von Anforderungen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Copyright 2004 Bernd Brügge Einführung in die Informatik II TUM Sommersemester Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität.
JavaScript.
Chi Quadrat Test Tamara Katschnig.
Überblick Statistik Deskriptive Statistik=beschreibende Statistik
Member of Swiss Olympic Association Schweizerischer Schwimmverband Fédération Suisse de natation Federazione Svizzera di Nuoto Information über den E-Rapport.
Überblick Statistik Deskriptive Statistik=beschreibende Statistik
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
IT-Projektmanagement SS 2013 Prof. Dr. Herrad Schmidt
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 14: Mehrfachvererbung.
Überblick Statistik Deskriptive Statistik=beschreibende Statistik
Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03.
Fachhochschule München, Projektstudium Chipkarten SS 2002 Qualitätssicherung/Tester Wozu braucht man Tester? Vorbereitung Durchführung Ergebnisse Resumée.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Vorlesung 5: Invarianten und Logik.
Einführung in die Programmierung Prof. Dr. Bertrand Meyer
Empirische Softwaretechnik
Java Server Pages Sergej Keterling
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Jürgen Müller Internet Service Jürgen Müller (April 1997) pro.vider.de Internetagentur GmbH (April 2000) Dipl.-Ing (FH): Fachhochschule Lübeck Master of.
Purga - Scriptengine Ein Einblick.
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
Testtechniken-Praktikum WS 2005/06 1 Besprechung Java-Test/Aufgabe 1 Andreas Höfer Dr. Matthias Müller.
Testtechniken-Praktikum WS 2005/06 1 Performanztests mit JUnitPerf Andreas Höfer Dr. Matthias Müller.
Automatisierte Worterkennung (Autocorrect) Automatisierung in der Medientechnik, Labor, KulturMediaTechnologie Lucia Winsauer SS14.
Korrektheit von Programmen – Testen
Meta-Modell für Story-Diagramme und Expressions
2 Grundlagen In diesem Abschnitt werden die Grundbegriffe und Methoden der Theorie der formalen Sprachen und der Automaten wiederholt, soweit diese ben.
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Prüft ebenfalls die Annahme der Varianzhomogenität (exakter)
Hypothesentests.
Test 1 Test 2 Test 3. Test 4 Test 5 Test 6 Test 7 Test 8 Test 9.
Die Struktur einer Java-Klasse
Test.
 Präsentation transkript:

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

2 Experimente über Zusicherungen

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 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 Vertrag: Dienstnehmer und Dienstgeber 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, jContractjContract Teilnehmer10/C, 10/Java13

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

16 APP - Syntax assume ; promise ; return where ; assert ;

17 APP – im Programm int square_root(int x) assume x >= 0; return y where y >= 0; return y where y*y <= x && x < {... }

18 jContract Erlaubt Formulierung von –Klasseninvarianten –Vor/Nachbedingungen bei Methoden Zusicherungen in Java-Doc-Kommentaren mit speziellen Tags

19 jContract @post forall in |

20 jContract – im Programm /** time != null 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 = Aufgabe M = Methode A2 / M2Jeder: 1. Aufgabe2. 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 / 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 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 Bedingung Bewertung Bewertung A: 3 Bewertung 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: 18 Bewertung B: 18 A B B A Bedingung Bewertung B A A B

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 Str = String-Aufgabe Ch = Kettenregel-Aufgabe (engl. chain-rule) #G = Anzahl geplant #A = Anzahl aktuell #A

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

36 Versuchsaufbau Training der APP Syntax Lösen der 1. Aufgabe Lösen der 2. 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ür jContract Lösen von GraphBase Experiment- Gruppe Kontroll- Gruppe kein Webkurs

44 Ergebnis: Programmieraufwand Gemessen in Mann-Minuten Ergebnis für jContract-Gruppe: Ergebnis für Kontroll-Gruppe:

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