Techniken
Experiment about Test-First Programming
- kontrolliertes Experiment, XP Kurs, zwei Gruppen (TFG, CG)
- nicht betrachtet: Langzeitwirkung, Entwurfsaspekte
- Aufgabe: Graph-Bibliothek mit vorgegebenen Methodendeklarationen und Hilfsmethoden
- Ablauf: Implementierungsphase (IP) > Akzeptanztestphase (AP, 100%-Schwelle, 20 Tests) > großer Zufallstest (7,5 Mio Zusicherungen, Vergleich zu Goldprogramm)
- Ergebnisse
- Programmiereffizienz: kein Unterschied
- Korrektheit : CG schlechter nach IP, nach AP besser (mögliche Antworten: falsche Sicherheit, geringerer Stellenwert des Akzeptanztests)
- Verständnis des Codes: Weniger Fehler bei / schnellere Weiterbenutzung von Methoden
- TFG kürzer in der IP, TFG unzuverlässlicherer Code nach IP
- test first hilft nicht bei der richtigen Verwendung von existierendem Code, aber hilft ihm durch andauernden Testens den Fehler zu beheben
- Gültigkeitsbedrohungen
- intern: nicht technisch kontrolliert; TFG wurde überprüft, ob sie mit mit test first zurecht kommen
- extern: Studenten, keine Erfahrung, Aufgabe (Graphen)
An experimental evaluation of the assumption of independence in multiversion programming
- Annahme MVP: Fehler unabh. voneinander, Fehler treten zufällig auf
- Aufgabe: einfaches Antiraketensystem (bereitgestellte Funktion zum Vergleich von reellen Zahlen)
- 27 Versionen der Software, 1 Millionen zufällig generierte Tests, 1 Gold Version
- 241 Ergebnisse (Array, Vektor und Abschussentscheidung)
- Akzeptanztest: 200 zufällig generierte Tests (für jeden andere)
- Ergebnis
- unabhängig voneinander sehr verlässlich
- selber Tests von verschiedenen Versionen
- MVP sollte nur mit Sorgfalt eingesetzt werden
- manche Teile schwieriger als andere, Anforderungen falsch
- Gültigkeitsbedrohungen
- verschiedene Entwicklungsumgebungen der beiden Universitäten
- Akzeptanztest randomisiert -> manche können mehr Fehler finden als andere
A Realistic Empirical Evaluation of the Costs and Benefits of UML in Software Maintenance
- Motivation: bringt UML Vorteile (Verständnis, Kommunikation)
- kontrolliertes Quasi-Experiment, 20 prof. Entwickler (mit Kenntnis von UML + IDE), Java, 5 Wartungsaufgaben, Dauer: 1 - 2 Wochen (in 3 Jahren), IDE: Eclipse, UML-Tool: Borland, Kurs für Experimentiergruppe, keine Zeitbegrenzung
- unabh. Variablen: Verwendung von UML?
- abh. Variablen: Aufwand (ohne / mit Diagrammmodifikation), funktionale Korrektheit (# abgegebener Lösungen), Entwurfsqualität
- Gruppen: Enteilung first-come first-served, wussten nicht von der jeweils anderen Gruppe, max 3 Teilnehmer gleichzeitig
- System: BESTweb, webbasiert, Softwarekosten und -aufwandsschätzung durch Identifikation rel. Paper (1 Use Case, Seq pro Use Case, Klassendiagramme), ausführlich dokumentiert (auch ohne UML)
- Ablauf: Einführung > Fragebogen > Training > Aufgabe > Schätzung > Entwicklung > Akzeptanztest > ... > Interview
- Aufgaben (Wartung): inkrementell schwerer, 3-6 Tage (7.5h/Tag), Kontrolle: Aufgaben in Subaufgaben --> granulärer
- Tests: abgeleitet aus Diagrammen, überdecken alle Pfade, neue Funktionalität: Checklist (Hauptflow, Ausnahmefälle)
- Analyse: quantitativ: abh. Variablen: 2 sample t-test + Wilcoxon Rangsumme + ANCOVA, qualitativ: Interview am Ende (1h)
- Ergebnisse
- Aufwand ohne Diagrammmod: UML-Gruppe schneller (insignifkant)
- kompletter Aufwand: UML-Gruppe langsamer (insignifikant)
- Korrektheit: UML 54% besser (Messung fragwürdig)
- OO-Qualität: UML besser (1. Aufgaben signifikant)
- UML: am meisten genutzt Use Case und Seq-Diagramme
- Fazit: UML unnötig
- Gültigkeitsbedrohungen
- geringe Güte --> unwahrs. stat. sign. Effekt zu finden
- intern: Einteilung nicht randomisiert (aber insignifikant), Experimentatoreffekt? (testet und nimmt Lösungen an), Dauer UMLmod geschätzt, Probleme mit Tool
- Konstrukt: Qualitätsmessung, Teilnehmer müssen UML vorher genutzt haben, Kosten nicht durch Experiment abbildbar, keine eigenen Testfälle
- extern: nur Wartung (System neu für Entwickler), keine Kommunikation