next up previous contents
Next: 3.5 Beispiel: N-Versions-Programmierung Up: 3. Softwaretechnik-Forschung Previous: 3.3 Probleme und Hindernisse

Unterabschnitte

3.4 Experimentelles Arbeiten

3.4.1 Formulierung der Forschungsfrage

Am Anfang jeder Forschung steht die Festlegung des Themas, der Forschungsfrage. Dies ist ein entscheidender Schritt, denn Fehler, die hier gemacht werden, lassen sich in späteren Phasen nicht mehr ausbügeln (ganz ähnlich wie Fehler bei der Anforderungsbestimmung für Softwaresysteme). Folgendes sind die Teilschritte.

Identifikation eines Problems: Zuerst einmal muß festgelegt werden, welches Problem oder Problemfeld überhaupt bearbeitet werden soll. Die Auswahl richtet sich einerseits nach Nützlichkeits- und Machbarkeitsüberlegungen, andererseits nach den Interessen des jeweiligen Forschers oder der Forscherin. Man sollte nur an Themen arbeiten, die einen auch interessieren, weil sonst die nötige Begeisterung fehlt.

Literaturstudie: Liegt das Thema im groben fest, so sollte in der Literatur nachgeforscht werden, was darüber schon bekannt ist. Eine solche Literaturstudie ist heutzutage recht aufwendig, weil der Umfang der möglicherweise relevanten Literatur enorm ist. Andererseits wird sie allmählich durch umfangreiche Datenbanken wieder erleichtert. Die Literaturstudie sollte ergeben, an welchen Teilaspekten des Themas bereits gearbeitet wurde, welche Ergebnisse dabei erzielt wurden und was diese für die Ausrichtung der eigenen Arbeit bedeuten, wo die Schwierigkeiten liegen und welche Aspekte am lohnendsten sein dürften. In der Softwaretechnik gibt es zu den meisten Fragen bereits Fallstudien, aus denen sich wichtige Hinweise auf sinnvollen Experimentaufbau ermitteln lassen, immer aber zumindest anekdotenhafte Berichte (anectodal evidence) über Phänomene. Der Nachteil von letzteren besteht darin, daß sie meist recht schwierig zu finden sind.
Einen zusätzlichen Weg zur Informationsbeschaffung über den Stand des Wissens eröffnen die modernen Medien: Mailinglisten und eventuell Newsgroups können eine hervorragende Quelle von Kommentaren und Anregungen zu halbfertigen Forschungsideen sein.

Machbarkeitsprüfung: Auf Basis der Literaturstudie sollte das Thema nun soweit eingeengt werden, daß es eine Frage betrifft, die einerseits von erheblichem Interesse für die Wissenschaft ist und andererseits eine effektive experimentelle Untersuchung unter den gegebenen Rahmenbedingungen gestattet. Im Bereich der Softwaretechnik ergibt dieser Schritt leider häufig, daß keine der interessanten Fragen praktisch experimentell untersuchbar scheint. In diesem Fall ist oft einfach eine weitere Einengung angezeigt -- oft geht es aber auch wirklich nicht.
An dieser Stelle ist auch die grundsätzliche Frage zu entscheiden, ob die Untersuchung qualitativ sein soll, also die Prüfung einer booleschen Hypothese, oder quantitativ, also die Bestimmung des Werts eines Parameters. Letzteres ist nur dann möglich, wenn das grundsätzliche Verhalten dieses Parameters bereits bekannt ist. Ein Beispiel für eine qualitative Forschungsfrage wäre ,,Verbessern zusätzliche Inspektionen die Zuverlässigkeit von SW bei gleichem Aufwand gegenüber reinem Test oder nicht¿`. Die zugehörige quantitative Frage lautet vielleicht ,,Um wieviel verbessern zusätzliche Inspektionen die Zuverlässigkeit von SW bei gleichem Aufwand gegenüber reinem Test¿`. Die Klärung letzterer Frage erfordert einen erheblich aufwendigeren Versuch und sollte deshalb nur angegangen werden, wenn man ziemlich sicher ist, daß das Ergebnis den Aufwand lohnt.

Formulierung: Nun muß die Forschungsfrage forschungsreif formuliert werden. Dazu ist sie einerseits zu präzisieren und andererseits zu operationalisieren. Präzisierung bedeutet etwa im obigen Beispiel die Festlegung, was man unter Inspektionen genau verstehen will, welches Testverfahren als Maßstab dient und woran die Zuverlässigkeit gemessen werden soll. Operationalisieren bedeutet festzulegen, welche Manipulationen es sind, mit denen man die betrachteten Faktoren ändern bzw. messen will. Im Beispiel stellt sich etwa die Frage, wie die Messung der Zuverlässigkeit praktisch zu bewerkstelligen ist. Ergebnis der Operationalisierung ist eine genaue Beschreibung der unabhängigen Variablen (also was manipuliert werden soll) und der abhängigen Variablen (also was beobachtet werden soll). In den meisten Fällen sollte nur eine unabhängige Variable verwendet werden, weil das Experiment sonst zu umfangreich wird. Die Zahl der abhängigen Variablen ist eventuell etwas größer, weil es mehrere Maße gibt, mit denen der zu beobachtende Effekt charakterisiert werden kann.

In der Realität laufen die 4 Schritte der Problemidentifikation, Literaturstudie, Machbarkeitsprüfung und Formulierung nicht hintereinander ab, sondern sind in einem wüsten Knäuel auf eine Weise miteinander verquickt, die selbst die beteiligten Forscher meist nicht verstehen. Das macht aber nichts, solange am Ende eine sinnvolle und konkrete Forschungsaufgabe steht.

  
3.4.2 Kontrolle von Variablen

Das Ziel eines Experiments besteht in einer gesicherten Aussage der folgenden Form:

Wenn man in der Situation S die Änderung X an der Variablen x vornimmt, dann kann man als Wirkung die Änderung Y an der Variablen y beobachten.
Unter welchen Umständen kann man eine solche Aussage als gesichert betrachten? Nun, dazu muß sichergestellt sein, daß die Beobachtung Y tatsächlich kausal auf die Änderung X zurückzuführen ist.
Unter welchen Umständen weiß man das? Nur dann, wenn X das einzige ist, was sich ändert. Denn dann und nur dann ist jede Änderung in den Beobachtungen garantiert auf X zurückzuführen -- irgendeinen Grund muß es schließlich geben und X ist der einzige, der in Frage kommt.

Dies ist natürlich nie ganz zu erreichen; es werden sich immer auch noch andere Dinge ändern als X, da X (genannt die ,,Behandlung``) eine gewisse Zeit braucht: zum Beispiel schreitet die Zeit fort, der Bewußtseinszustand des Experimentators ändert sich, es schlagen unterschiedliche Zahlen von Gammaquanten in den Versuchsaufbau ein usw. Aber man kann die obige Forderung sinnvoll abschwächen: X muß das einzige sein, was sich ändert unter all denjenigen Faktoren, von denen man sinnvollerweise erwarten kann, daß sie vielleicht einen Einfluß auf y haben. Das bedeutet, S muß eine vollständige Beschreibung der Situation sein. S muß alle Faktoren umfassen, die einen Einfluß ausüben könnten. Die Faktoren werden zusätzliche Variablen genannt, weil sie über die im Experimentaufbau eigentlich zu betrachteten unabhängigen Variablen einen Einfluß auf die abhängigen Variablen ausüben.

Alle zusätzlichen Variablen müssen konstantgehalten werden. Dieses Konstanthalten nennt man die Kontrolle von Variablen -- eine Kerntechnik experimentellen Arbeitens.

Es gibt eine Reihe von zusätzlichen Variablen, die in vielen Experimenten in der einen oder anderen Form auftreten und die deshalb in jedem Experimententwurf zu prüfen und gegebenenfalls zu berücksichtigen sind.

In der Psychologie sind noch eine ganze Reihe weiterer, subtiler zusätzlicher Variablen von Interesse [Chr94, S.211ff], die aber in der Softwaretechnik glücklicherweise meist kaum eine Rolle spielen.

3.4.3 Zufallsstichproben und Vergleichsgruppen

Wie kontrolliert man denn nun zusätzliche Variablen? Die wichtigste Technik zur Kontrolle von Variablen im Bereich der Softwaretechnik ist die Benutzung von Vergleichsgruppen auf Basis von Zufallsstichproben.

Die Überlegungen hierzu sind folgende:

1.
Wenn man einen menschlichen Faktor vermessen will, muß man mehrere Menschen betrachten und den Mittelwert oder die ganze Verteilung berücksichtigen, denn Menschen verhalten sich sehr verschieden.
2.
Auch eine beträchtliche Anzahl der oben in 3.4.2 besprochenen zusätzlichen Variablen ist an die einzelne Versuchsperson gebunden.
3.
Diese beiden Probleme kann man dadurch in den Griff bekommen, daß man im Experiment eine Gruppe von Menschen benutzt, die zufällig aus der Grundmenge von Menschen, die im Experiment betrachtet werden soll (also über die eine Aussage gemacht werden soll), ausgewählt werden: Mehrere Personen zu nehmen kann die Schwankungen in den Menschen und den zusätzlichen Variablen ausgleichen. Sie zufällig auszuwählen bedeutet, daß diese Möglichkeit mit hoher Wahrscheinlichkeit auch tatsächlich eintritt und sich nicht versehentlich durch bestimmte Merkmale der Auswahlprozedur systematische Ähnlichkeiten zwischen ihnen einstellen können, die das Ergebnis verfälschen.
4.
Zufallsauswahl liefert also eine Stichprobe, deren Eigenschaften wir zwar vielleicht nicht genau beschreiben können, von der wir aber wissen, daß sie repräsentativ ist und die relevante Situation, über die das Experiment eine Aussage machen soll, deshalb gut charakterisiert. Allerdings darf die Stichprobe nicht zu klein sein, sonst können zufällige Auswahleffekte die Repräsentativität leicht zunichte machen.
5.
Wenn mein Experiment nur eine einzige Behandlung auf ihre Wirkung prüfen soll, so ist nun häufig noch die Frage, ob die beobachteten Wirkungen tatsächlich von der Behandlung herrühren oder von zusätzlichen Variablen, die ich nicht explizit kontrolliert habe. Zufallsauswahl gleicht zwar Schwankungen in den zusätzlichen Variablen zwischen verschiedenen Menschen aus, kontrolliert aber diese zusätzlichen Variablen nicht.
6.
Also muß ich zu meiner eigentlichen Behandlungsgruppe noch eine Vergleichsgruppe verwenden, die das Experiment in gleicher Weise durchläuft, nur eben die Behandlung nicht erhält (sondern eine neutrale Scheinbehandlung, ein Placebo). Alle zusätzlichen Variablen, die meinen Versuch beeinflussen, werden nun genauso auf die Vergleichsgruppe wie auf die Behandlungsgruppe wirken und fallen beim Vergleich der beiden deshalb aus der Betrachtung heraus: die zusätzlichen Variablen sind kontrolliert.

Um das noch klarer zu machen, betrachten wir den umgekehrten Fall: Angenommen, wir machen keine Zufallsauswahl. Dann kann es uns passieren, daß wir bei der Auswahl eine gewisse Vorliebe für eine bestimmte Teilmenge der zu betrachtenden Grundmenge entwickeln. Angenommen, wir vergleichen die Entwurfsmethoden A und B. Dann ist es naheliegend, als Versuchspersonen für A Leute zu nehmen, die A bereits kennen. Falls es solche gibt, jedoch keine Leute gibt, die B schon kennen, ist es kein Wunder, wenn A besser abschneidet. In diesem Fall macht unser Experiment also eine Aussage über eine andere Situation, als wir eigentlich betrachten wollen (z.B. Informatikstudierende, die in A geschult sind, in B aber nicht; anstatt einfach alle Informatikstudierenden). Diese Aussage ist erheblich spezieller und dementsprechend wenig wertvoll.

Hier sehen wir auch das Hauptproblem bei der Zufallsauswahl: Wenn wir nicht unsere Grundmenge extrem eng definieren, ist eine echte Zufallsauswahl fast stets unmöglich, weil wir immer auf nur wenige Elemente der Grundmenge überhaupt für unser Experiment Zugriff haben; die meisten stehen als Versuchspersonen gar nicht zur Verfügung. Hier kann man nur mit Geschick und Urteilsvermögen versuchen, die sinnvollste mögliche Stichprobe zusammenzutragen. Beispielsweise kann man versuchen, unterschiedliche Vorbildung explizit durch Schulung vor dem Experiment auszugleichen.

Zweiter Teil des Problems: Angenommen, wir machen ein Experiment ohne Vergleichsgruppe. Dann kann es uns passieren, daß die scheinbare Wirkung unserer Behandlung, die wir beobachten, gar nicht auf die Behandlung zurückzuführen ist, sondern auf andere Faktoren, wie die Reifung oder die Historie der Versuchspersonen -- oder irgendeine Mischung von Behandlung und zusätzlichen Variablen, die wir nicht aufdröseln können. In diesem Fall ist das Experiment vollkommen wertlos.

Ein Problem selbst bei der Verwendung von Vergleichsgruppen kann der Einfluß von Erwartungen sein. Erwartungen auf der Seite der Versuchspersonen können mit Scheinbehandlungen (Placebos) vermieden werden, die allerdings in der Softwaretechnik oft schwer zu konstruieren sind. Ein solcher Versuch, bei dem die Versuchperson nicht weiß, welcher Behandlung sie unterzogen wird, heißt Blindversuch. Sind zusätzlich auch Einflüsse durch Erwartungen auf der Seite des Experimentators zu befürchten, so wird üblicherweise z.B. in der Medizin die sogenannte Doppel-Blind-Technik verwendet. Der Name stammt daher, daß weder Experimentator noch Versuchsperson wissen, ob gerade die echte Behandlung oder die Scheinbehandlung angewendet wird. Was bei Pillen leicht zu erreichen ist, ist aber in Softwaretechnik-Experimenten meist unmöglich; der einzige Ausweg besteht darin, daß sich der Experimentator so weit wie möglich aus dem Experiment heraushält und die Einweisung der Versuchspersonen nur durch Computeranweisungen, gedrucktes Material, Videos etc. vorgenommen wird.

3.4.4 Varianzreduktion

Selbst wenn wir einen Versuchsaufbau gefunden haben, der alle zusätzlichen Variablen ordentlich kontrolliert und deshalb im Prinzip saubere Schlüsse aus dem Experiment gestattet, kann es leicht passieren, daß wir kein schlüssiges Resultat erhalten.

Wenn der zu beobachtende Behandlungseffekt, also der Unterschied zwischen den Vergleichsgruppen, nicht groß ist, kann er von den Schwankungen (Varianz) innerhalb der beiden Zufallsstichproben völlig verdeckt werden. Siehe als Beispiel die Abbildung 3.3.

\includegraphics[scale=1]{Bild/forschvarianz.ps}

Hier sind die Verteilungen einer beobachteten Variablen y für die zwei Vergleichsgruppen A und B angegeben. Die Experimentfrage lautet, ob der Mittelwert bei A kleiner ist als bei B. Sieht ja ein bißchen so aus, nicht wahr? Aber sicher kann man sich nicht sein, weil die Zufallsschwankungen innerhalb der Verteilungen so viel größer sind als der Unterschied -- falls es ihn gibt.

Was kann man tun, um solche Schwankungen oder ihre Auswirkung zu minimieren? Zur Verringerung der Schwankungen dient die Vorsortierung. Hierbei schränke ich meine Versuchspersonen ein auf solche, die sich in den relevanten Eigenschaften, die die Schwankung verursachen, möglichst ähneln. Wie das konkret zu erreichen ist, muß man im Einzelfall untersuchen; es kann jedenfalls sehr schwierig sein.

Zur Verringerung der Auswirkungen der Schwankung dienen sogenannte Paarungstechniken (matching techniques). Der Grundgedanke hierbei ist, daß ich eine oder mehrere zusätzliche Variable ausdrücklich in meinem Experimentaufbau erfasse und dann dafür sorge, daß sie in beiden Versuchsgruppen die gleiche Verteilung haben. Beispielsweise könnte man seine Versuchspersonen vorsortieren in sehr gute, gute und weniger gute Programmierer und dann dafür sorgen, daß jede Versuchsgruppe gleich viele von jeder Sorte erhält. Somit würden sich die Varianzen der Gruppen ähneln, wenn beide dieselbe Behandlung erhielten. Wenn im Experiment trotzdem unterschiedliche Varianzen auftreten, so nur, weil die Behandlung das nach sich zieht.

Eine besonders hohe Aussagekraft können wir dann erzielen, wenn es uns gelingt, Versuchspersonen jeweils so zu Paaren zusammenzustellen, daß wir annehmen dürfen, die beiden Mitglieder jedes Paares seien äquivalent. Die dann zulässigen statistischen Auswertungsmethoden führen zu einer erheblich höheren Empfindlichkeit des Experiments auf die erstrebte Aussage hin. Ob solche Paarung möglich ist und welche Maßnahmen nötig sind, um die Paare zu finden, hängt vom Einzelfall ab und muß mit dem gesunden Menschenverstand anhand des verfügbaren Wissens entschieden werden. Die einfachste Methode zum Paaren besteht darin, dieselbe Versuchsperson beide Behandlungen durchlaufen zu lassen. Das ist aber natürlich nur möglich, wenn wir Lerneffekte ausschließen oder kontrollieren können. Oft ist das Kontrollieren von Lerneffekten dadurch möglich, daß beide Reihenfolgen von Behandlungen gleich häufig in jeder Versuchsgruppe vorkommen; diese Technik wird Gegenbalancierung (counter-balancing) genannt.

3.4.5 Versuchspläne

So nach und nach haben wir jetzt schon die meisten wichtigen Überlegungen zur Aufstellung von Versuchsplänen (experiment designs) besprochen. Der Versuchsplan beschreibt die Regeln, nach denen wann für welche Subjekte welche Behandlung angewendet und welcher Test zur Beobachtung durchgeführt wird.

Gehen wir mal von der Bildung zweier Versuchsgruppen mittels reiner oder durch Paarung modifizierter Zufallsauswahl aus. Die Gruppen dienen zum Vergleich zweier Behandlungen oder dem Vergleich einer Behandlung mit einer Scheinbehandlung. Dann gibt es folgende Hauptentscheidungen bei der Aufstellung eines Versuchsplans:

Erstens muß ich wählen zwischen einem Intra-Subjekt-Plan und einem Inter-Subjekt-Plan. Bei ersterem durchläuft jede Versuchsperson beide Behandlungen, im anderen Fall nicht. Zweitens gibt es Vortest-Nachtest-Pläne und Nur-Nachtest-Pläne. Im ersteren Fall beobachtet man den Unterschied in einer Variable von vor zu nach der Behandlung, im zweiten Fall nur den Wert nach der Behandlung. Vortests sind z.B. in der Regel sinnvoll bei Experimenten, die mit Lernen zu tun haben. In der Softwaretechnik kommt man oft ohne Vortests aus.

In vielen Fällen ist nur jeweils eine der beiden Möglichkeiten machbar, manchmal kann man jedoch auch auswählen. In der Regel wird man dann Intra-Subjekt-Pläne bevorzugen, weil sie sparsamer und aussagekräftiger sind und einen Vortest nur dann durchführen, wenn man befürchtet, auf die dort gewonnene Information zur Interpretation der Ergebnisse angewiesen zu sein.

Alle bisherigen Überlegungen lassen sich natürlich auf den Fall von mehr als zwei Behandlungen ausdehnen. Da aber der Fall von nur zweien bereits alle wesentlichen Probleme enthält, habe ich auf diese zusätzliche Komplikation verzichtet.

Versuchspläne, in denen mehrere einzelne Behandlungseinzelteile auf alle möglichen Arten miteinander zu Behandlungen kombiniert werden, nennt man faktorielle Versuchspläne (factorial designs); werden einige der dabei entstehenden Behandlungsarten aus dem Experiment herausgelassen, spricht man von partiellen faktoriellen Versuchsplänen (partial factorial designs). Möchte ich beispielsweise den Einfluß zweier Entwurfsmethoden A und B untersuchen, wenn mit je einer von drei verschiedenen Programmiersprachen, sagen wir C, C++ und Eiffel implementiert wird, so erhalte ich 6 Behandlungen (A/C, A/C++, A/Eiffel, B/C, B/C++, B/Eiffel) für einen faktoriellen Versuchsplan. Wähle ich aus diesen nur einige aus, weil beispielsweise die Kombination von B mit C von vornherein keinen Sinn ergibt, so erhalte ich einen partiellen faktoriellen Versuchsplan. So beeindruckend können Ausdrücke für ganz einfache Ideen sein.

Nicht alles, was auf Anhieb wie ein Versuchsplan für ein kontrolliertes Experiment aussieht, ist wirklich ein solcher; es gibt auch fehlerhafte Versuchspläne. Das wichtigste Beispiel dafür ist der Eingruppen-Vortest-Nachtest-Plan. Dieser kontrolliert mangels Vergleichsgruppe diverse zusätzliche Variablen nicht, nämlich alle, die zwischen Vortest und Nachtest außerhalb der eigentlichen Behandlung einen Effekt haben könnten, insbesondere Reifung und Historie.

Daneben gibt es noch quasi-experimentelle Versuchspläne, die eine brauchbare, aber unvollständige Annäherung an echte kontrollierte Experimente darstellen. Hier die beiden wichtigsten Beispiele:

Nichtequivalente Kontrollgruppe: Hier wird die Zugehörigkeit der Versuchspersonen zu den Vergleichsgruppen nicht per Zufall festgelegt, sondern die Personen melden sich entweder nach persönlicher Vorliebe selbst oder sie werden aufgrund eines äußeren Kriteriums zugewiesen, von dem man annehmen muß, daß es von Belang für die Beobachtungen ist. In beiden Fällen fließen zusätzliche Variablen in die Beobachtungen ein, die nicht kontrolliert werden.

Unterbrochene Zeitreihe: In Fällen, in denen für einen Vortest-Nachtest-Versuch keine Kontrollgruppe zum Vergleich mit der Behandlungsgruppe zur Verfügung steht, kann man sich mit einem Zeitreihenversuchsplan behelfen. Das Problem ist ja, daß Effekte im Nachtest vielleicht auf Reifung oder Historie zurückgeführt werden müssen anstatt auf die Behandlung. Also wendet man den Vortest mehrfach in gleichen Abständen an und ebenso den Nachtest. Ergibt sich nun über die Vortests und über die Nachtests jeweils eine gleichmäßige Entwicklung, so kann man annehmen, daß Reifung und Historie einen gleichmäßigen Einfluß über die Zeit ausüben. Beobachtet man nun zwischen letztem Vortest und erstem Nachtest einen Sprung, der im Vergleich dazu unerwartet groß ist, kann man ihn auf die Behandlung zurückführen. Siehe das Beispiel in Abbildung 3.4.

\includegraphics[scale=1]{Bild/forschzeitreihe.ps}

Können nur echte kontrollierte Experimente überzeugende wissenschaftliche Beweise abgeben? Nein, ein quasi-experimenteller Versuch kann völlig ausreichend sein. Betrachten wir folgendes Beispiel: Angenommen, ein 30jähriger, kerngesunder Mensch tritt auf die Straße, wird von einem Auto überfahren und hinterher für tot befunden. Dann gehen wir normalerweise davon aus, daß der Autounfall, also der Zusammenstoß, die direkte Todesursache war. Das ist nicht gesichert, denn eine Reihe anderer Möglichkeiten (zusätzlicher Variablen) wie ein plötzlicher Herzanfall oder ein Gehirnschlag sind nicht kontrolliert worden und können deshalb eigentlich nicht als Grund ausgeschlossen werden. Aber die Annahme, daß der Aufprall der Grund war, ist so plausibel, daß wir sie vernünftigerweise als richtig akzeptieren.

3.4.6 Statistische Auswertung

Durch bloßes Draufgucken auf die beobachteten Werte läßt sich in vielen Fällen die Forschungsfrage nicht klar entscheiden. Siehe nochmals die Abbildung 3.3: Ist denn nun A im Mittel kleiner oder nicht?

Glücklicherweise hält die Statistik Methoden bereit, wie man solche Fragen quantitativ beantworten kann -- allerdings können die Aussagen immer nur Wahrscheinlichkeitsaussagen sein, denn die betrachteten Phänomene sind ja stochastischer Natur. Experimentatoren in der Softwaretechnik müssen solche Techniken kennen und korrekt anwenden können oder zumindest verstehen, was man damit machen kann und zur Anwendung Fachleute aus der Statistik um Rat fragen. Man beachte die Formulierung ,,korrekt anwenden``, denn leider gibt es eine Reihe von Fehlern, die bei der Anwendung statistischer Methoden immer wieder gemacht werden. Die Ergebnisse werden in einem solchen Fall wertlos.

Für die Softwaretechnik-Forschung sind vor allem zwei Arten von statistischen Methoden relevant: Tests und Regression. Wir können beide nur sehr grob anhand eines Beispiels besprechen, weil eine ausführliche Einführung und Diskussion ein ganzes Statistikbuch füllt.

Ein Test (genauer: statistischer Signifikanztest) ist eine Methode, um die Gültigkeit einer quantitativen Hypothese zu prüfen. Hierzu wird die Wahrscheinlichkeit berechnet, mit der das beobachtete Ergebnis eintreten würde, wenn man annimmt, daß die Hypothese nicht gilt (diese Annahme nennt man die Nullhypothese). Ist diese Wahrscheinlichkeit klein, so können wir annehmen, daß unsere Hypothese gilt und die richtige Erklärung für die Beobachtung ist. Ist die Wahrscheinlichkeit groß, so wissen wir nichts: vielleicht ist unsere Hypothese falsch, vielleicht stimmt sie aber auch und wir hatten nur keine Versuchsbedingungen, die ein zufälliges Eintreten der gleichen Beobachtungen gut genug verhindert haben (zum Beispiel zu wenige Beobachtungen; da kann vieles noch zufällig vorkommen).

Hier ein Beispiel: Wir wollen die Behauptung prüfen, daß unsere neue Entwurfsmethode E zu einer geringeren Zahl von Entwurfsfehlern führt als die altbekannte Methode A. Also beschaffen wir uns, sagen wir 40 Versuchspersonen, lassen jede davon einen Entwurf des gleichen Programms machen, eine Gruppe von 20 mit Methode A und eine andere Gruppe von 20 mit Methode E. Wir erhalten also 20 Entwürfe Ai und 20 Entwürfe Ei. Zuvor haben wir jede Gruppe in ,,ihrer`` Methode gleich gut ausgebildet. Dann stellen wir in jedem Entwurf die Zahl F der Entwurfsfehler fest, indem wir zum Beispiel den Entwurf implementieren und testen. Wir nehmen an, die gemessenen Fehleranzahlen jeder Gruppe seien im Mittel über jede Gruppe korrekt. Sei für alle i F(Ai) = ai und F(Ei)=ei. Dann lautet unsere Forschungshypothese H:

H: Im Mittel ist die Fehlerzahl der Ei kleiner als die der Ai, also $\bar{e_i} < \bar{a_i}$.
Nehmen wir an, wir haben folgende Fehlerzahlen bei E gemessen:
(0 4 0 2 0 0 2 1 1 0 0 0 1 3 6 0 3 0 1 0)
und folgende bei A:
(0 4 1 2 2 3 5 1 0 0 6 6 1 3 3 1 2 1 4 0).

Dann können wir uns zunächst die Verteilungen der Fehlerhäufigkeit bei Methode A und Methode E anhand dieser beiden Stichproben ansehen. Dazu stellen wir jeweils das Histogramm auf, wie in Abbildung 3.5 gezeigt.

\includegraphics[scale=1]{Bild/forschhisto.ps}

Das linke Histogramm besagt also beispielsweise, daß es in der Stichprobe zu Methode A insgesamt 5 Elemente gibt, die eine Fehlerzahl von 1 haben usw. Diese Histogramme scheinen die recht klare Nachricht zu enthalten, daß E tatsächlich, wie erwartet, kleinere Fehlerzahlen produziert. Die Mittelwerte sind mit 2.25 für A und 1.2 für E auch weit verschieden -- es scheint also alles klar zu sein. Aber können wir diese Aussage auch statistisch bestätigen? Dazu müssen wir die Hypothese H einem statistischen Signifikanztest unterziehen. Ein häufig benutzter Test ist der t-Test; er prüft die Annahme, daß die Mittelwerte zweier Verteilungen verschieden sind. Bevor wir ihn einsetzen, müssen wir zunächst prüfen, ob seine Anwendungsvoraussetzungen erfüllt sind. Der 2-Stichproben-t-Test, den wir hier einsetzen könnten, macht zwei Annahmen: Erstens, daß beide Stichproben einer normalverteilten Population entstammen und zweitens, daß die Varianzen dieser beiden Normalverteilungen gleich sind. Diese Voraussetzungen sind natürlich niemals exakt erfüllt, aber wir müssen zumindest für eine ,,hinreichend gute`` Erfüllung sorgen.

Für die Varianz verwendet man beim t-Test normalerweise die Faustregel, daß die Standardabweichung um maximal Faktor 2 verschieden sein darf. Das ist im vorliegenden Fall erfüllt: Stichprobe A hat eine Standardabweichung von 1.94, B von 1.67. Schwieriger sieht es bei der Form der Verteilung aus. Schon Probe A hat nur wenig Ähnlichkeit mit einer Normalverteilung, aber bei B kann man ganz sicher nicht von normalverteilten Daten sprechen. Eine andere Darstellungsart der Daten zur Prüfung der Normalverteilungsannahme ist der sogenannte Normalquantilplot. Hierbei werden die tatsächlichen Quantile der Daten so aufgetragen, daß normalverteilte Daten auf einer Geraden liegen würden. Diese Gerade wird dann als Referenz eingetragen und die Stärke der Abweichung der Datenpunkte von dieser Geraden gibt die Abweichung von einer Normalverteilung an. Dies ist in Abbildung 3.6 zu sehen.

\includegraphics[scale=1]{Bild/forschnormplot.ps}

Bei E sind die Abweichungen so massiv, daß wir diese Stichprobe nicht mehr als normalverteilt annehmen sollten. A kann notfalls noch als normalverteilt durchgehen.

Den t-Test sollten wir uns auf diesen Daten also lieber verkneifen, weil seine Anwendungsvoraussetzungen nicht erfüllt sind. Was würde geschehen, wenn wir ihn dennoch anwenden? Der t-Test hat die Eigenschaft, daß jede Abweichung der Daten von der Normalverteilung eventuell vorhandene Unterschiede in den Mittelwerten tendenziell verwischt. Wenn also ein t-Test behauptet, ein Unterschied sei vorhanden, dann stimmt das auch; es kann nur leicht passieren, daß wir einen vorhandenen Unterschied nicht nachweisen können. Also können wir den t-Test doch anwenden? Ja, wir können. Wir müssen nur darauf gefaßt sein, daß die Ergebnisse einen schwächeren Unterschied anzeigen als in Wirklichkeit vorhanden ist.

Die Anwendung des t-Tests liefert in unserem Beispiel ein Resultat für p von 0.075. Was bedeutet das? Es heißt, der t-Test ergibt, daß die Wahrscheinlichkeit p dafür, daß die Nullhypothese ,,Mittelwerte bei A und E gleich`` gültig ist und die in den Daten beobachteten Abweichungen der Mittelwerte zufällig sind, bei 7.5% liegt. Mit anderen Worten: wahrscheinlich ist E wirklich besser als A, aber so ganz sicher können wir nicht sein. Man nennt p auch das Signifikanzniveau des Tests. Üblicherweise legt man eine Schranke für p im Vorhinein fest und entscheidet an ihr, ob man die Hypothese für erfüllt hält oder nicht. Ein üblicher Wert für diese Schranke liegt bei 0.05, also Chancen von eins zu zwanzig für ein zufälliges Ablehnen der Nullhypothese. In kritischen Fällen wählt man den Wert niedrigerer, z.B. bei lebenskritischen medizinischen Untersuchungen zu 0.01 oder 0.001 und in wenig kritischen Fällen, wo nur nach ungefähren Hinweisen gesucht wird, auch höher, vielleicht 0.1 oder sogar 0.2.

Wenn nun der t-Test keine so gute Idee ist, weil die Daten nicht normalverteilt sind, wie können wir denn dann unsere Hypothese prüfen? Für solche Fälle gibt es die sogenannten nichtparametrischen Methoden, so genannt, weil sie nicht einen Parameter (beim t-Test: den Mittelwert) einer festgelegten Verteilung prüfen, sondern nur schwache Annahmen über die Form der Verteilung machen. Zum Vergleich von Mittelwerten ist am besten geeignet der Mann-Whitney U-Test (auch oft als Wilcoxon Rangsummentest bezeichnet). Dieser Test macht nur die Annahme, daß die Daten auf einer Ordinalskala liegen, so daß man sie ordnen kann (der t-Test verlangt eine Intervallskala, weil sich sonst keine Mittelwerte berechnen lassen!). Aufgrund dieser schwachen Annahme kann der U-Test keine Aussage über die Mittelwerte machen, sondern er gibt, vereinfacht gesagt, an, ob die eine Verteilung einen höheren Median (50%-Quantil) hat als die andere oder nicht. Er macht also eine Aussage anhand der Quantile, statt über Mittelwert und Standardabweichung, was den zusätzlichen Vorteil hat, daß der Test sehr robust gegen ,,Ausreißer`` ist, d.h. wenige extreme Werte können das Testergebnis nur wenig beeinflussen, während die Stärke ihres Einflusses beim t-Test mit ihrer Größe wächst. Eine Darstellung der Daten, die noch kompakter ist als das Histogramm und die gut zu dieser nichtparametrischen Betrachtungsweise paßt, ist der Boxplot (Abbildung 3.7).

\includegraphics[scale=1]{Bild/forschboxplot.ps}

Hierbei wird eine Verteilung über nur 5 Werte charakterisiert: Ihren Median (Punkt in der Mitte), ihr 25%- und 75%-Quantil (unterer und oberer Rand der Kiste) und zwei andere Punkte, die verschieden gewählt werden können (unterer und oberer Schwanz). Die letzteren sind üblicherweise die äußersten Punkte im nachfolgenden Interquartilbereich, d.h. die letzten Punkte innerhalb der Stichprobe, die höchstens einen Interquartilabstand vom ersten bzw. dritten Quartil entfernt sind. Wie bitte? Beispiel: der obere Schwanz im obigen Bild liegt bei demjenigen der 20 Stichprobenwerte, der gerade noch etwas weniger weit oberhalb des dritten Quartils (also 75%-Quantils) liegt, als das erste Quartil unterhalb des dritten liegt. Noch anders gesagt: Klapp die Kiste um ihren oberen Rand nach oben um und nimm den Schwanz bis dorthin, wo der letzte Datenpunkt ist, der dann noch innerhalb der Kiste wäre. Man kann die Schwänze auch anders berechnen, zum Beispiel setzt man sie einfach auf die 10%/90%-Quantile oder die 5%/95%-Quantile. In unserem Boxplot sind das Minimum und Maximum, also 0%/100%-Quantil benutzt worden, weil die Stichproben recht gutartig sind, in dem Sinne, daß die Minima und Maxima sinnvolle, interessante Werte sind und nicht irgendwelche Ausreißer. Gelegentlich sieht man auch Boxplots, die Mittelwerte und Standardabweichungen darstellen, aber das ist eher ungewöhnlich und auch weniger nützlich.

Ein solcher Boxplot ermöglich eine sehr einfache Abschätzung der wichtigsten Eigenschaften zweier Verteilungen; wesentlich besser, als es ein Histogramm vermag. In unserem Beispiel erkennen wir die erheblich verschiedenen Mediane von 0.5 bzw. 2.0 und sehen unsere Hypothese H eher noch klarer bestätigt als in den Histogrammen oben.

Der U-Test liefert auf unseren Daten einen p-Wert von 0.055. Die Signifikanz ist also höher als beim t-Test, aber immer noch knapp schlechter als die übliche Schranke für die Annahme von Hypothesen. Wie wir sehen, ist die Aussage unseres Experiments also gar nicht so glasklar, wie wir das als Erfinder von Methode E gern gesehen hätten. Wahrscheinlich ließe sich diesem Umstand jedoch mit ein paar zusätzlichen Versuchspersonen abhelfen, die die p-Werte erhöhen, falls die Verteilungen von ihrer Form her gleich bleiben: Je öfter die Unterschiede beobachtet werden, desto geringer wird die Chance, daß sie bloßer Zufall sind.

Boxplots und U-Test sind fast immer gute Hilfsmittel zum Vergleich der Lage von Verteilungen und sind häufig dem t-Test vorzuziehen. Sogar wenn die Anwendungsbedingungen des t-Tests erfüllt sind, hat der U-Test meist eine ähnliche, manchmal sogar höhere Trennschärfe als der t-Test. Soviel zu statistischen Tests.

Regression ist eine Methode, wie man zu einer Menge von Daten ein quantitatives Modell erzeugt, das diese Daten erklären kann. Wir haben ein Beispiel für die Anwendung der Regression bereits anhand der Validation eines Vorhersagesystems (in 1.6.3) gesehen. Hier sei ergänzend nur noch folgendes zugefügt:

Die Statistik hält zur Auswertung von Experimenten noch einige andere Techniken bereit, die wir hier nicht besprechen können. Auch zu den Themen Test und Regression gäbe es noch sehr viel mehr zu sagen, das zu einem sicheren Grundwissen benötigt wird. Bitte lesen Sie deshalb in einem Statistikbuch noch über einseitige und zweiseitige Tests nach, über Fehler erster und zweiter Art und über Trennschärfe (power). Ein gutes Buch ist beispielsweise [MM93]; es gibt zahlreiche andere gute Bücher auf diesem Sektor. Es ist allgemein ein guter Tip, sich im ,,Ernstfall`` einen Statistiker oder eine Statistikerin zu suchen und sich bei der Datenauswertung beraten zu lassen, falls diese Möglichkeit besteht, denn man kann in der Statistik viel falsch machen oder Möglichkeiten ungenutzt lassen, wenn man sich nicht gut auskennt.

3.4.7 Interne und externe Gültigkeit

Die korrekte Kontrolle zusätzlicher Variablen stellt sicher, daß das Experimentergebnis interne Gültigkeit hat. Das bedeutet, daß die gemachte Beobachtung tatsächlich nur auf die Manipulation der unabhängigen Variablen zurückzuführen ist, das Experiment also einen Kausalzusammenhang beweist und beschreibt (oder auf dessen Fehlen hinweist). Die interne Gültigkeit ist umso höher, je genauer die Versuchsbedingungen beschrieben (also die Werte aller relevanten Variablen) sind und je genauer diese Beschreibungen eingehalten werden.

Eine ganz andere Frage ist die nach der externen Gültigkeit: Läßt sich das Resultat des Experiments auf andere Situationen übertragen als die, die im Experimentaufbau gegeben waren? Auf welche?

Unglücklicherweise widersprechen sich interne und externe Gültigkeit in einem gewissen Maß. Je genauer ich Versuchsbedingungen beschreibe und einhalte, desto enger müssen sie sein. Enge Versuchsbedingungen bedeuten aber, daß das Experiment eine sehr spezielle Aussage liefert, deren Verallgemeinerbarkeit auf andere Umstände zweifelhaft oder zumindest schwer abzuschätzen ist.

Drei Klassen von Gründen stehen möglicherweise einer Gültigkeit der Experimentaussage in anderen Umständen im Wege, nämlich Populationsgültigkeit, ökologische Gültigkeit und zeitliche Gültigkeit. In jeder dieser Klassen gibt es eine Reihe von möglichen Effekten, die die Verallgemeinerung der Beobachtungen des Experiments unzulässig machen.

Populationsgültigkeit: Dies betrifft den Personenkreis, für den die Aussage gültig ist. Im Experiment konnten wir nur über die sogenannte experimentell zugängliche Population verfügen. Die Schlüsse gelten also, interne Gültigkeit vorausgesetzt, für diese. Eigentlich möchte ich jedoch meist eine Aussage über eine viel größere Gruppe von Menschen, die sogenannte Zielpopulation machen. Dies wird fast stets dadurch verhindert, daß die experimentell zugängliche Population erkennbar nicht repräsentativ für die Zielpopulation ist. Beispielsweise werden in der Softwaretechnik die meisten Experimente aus Kostengründen mit Studierenden gemacht, die Zielpopulation sind aber professionelle Softwareingenieure. Die Frage, inwieweit eine Übertragung erlaubt ist, kann schwer beantwortet werden, da entsprechende Modelle fehlen -- diese zu bilden wäre eine wichtige Forschungsaufgabe.

Ökologische Gültigkeit: Dies betrifft die Umstände des Experiments. Diverse Effekte können eine unbeabsichtigte Abweichung der Umstände im Experiment von den üblicherweise vorhandenen Umständen zur Folge haben. Erstens können mehrere Behandlungen, die derselben Versuchsperson verpaßt werden, miteinander eine Wechselwirkung haben (Mehrfachbehandlungseffekt). Zweitens sind Versuchspersonen eventuell im Experiment besonders motiviert, mehr als im normalen Leben, weil sie wissen, daß sie beobachtet werden (Hawthorne-Effekt). Schließlich können Unterschiede auch dadurch entstehen, daß die erstmalige Konfrontation mit einer gewissen Situation, z.B. praktische Anwendung einer bestimmten Entwurfsmethode, andere Effekte hervorbringt, als man sie bei regelmäßiger Anwendung zu erwarten hätte (Neuigkeitseffekt). Umgekehrt gibt es natürlich auch Effekte in der ,,wirklichen Welt``, die im Experiment nicht vorhanden sind und deshalb die ökologische Gültigkeit beeinträchtigen, z.B. der Erfolgsdruck, unter dem ein angestellter oder selbständiger Softwareingenieur arbeitet, diverse andere Aspekte der Professionalität der Arbeitsweise oder eine Reihe von Umgebungseinflüssen aus dem Arbeitsumfeld, das im Experiment fehlt.

Zeitliche Gültigkeit: Auch die Zeit, zu der das Experiment stattfand, kann ein Grund sein, weshalb sich die Ergebnisse nicht verallgemeinern lassen. Hier gibt es zwei Arten von häufigen Effekten: lineare und zyklische. Zyklische Effekte haben die Form von saisonalen Schwankungen (z.B. verringerte Konzentrationsfähigkeit durch Frühjahrsmüdigkeit oder am Montagmorgen und Freitagnachmittag) oder von subjektinternen Zyklen (z.B. Wach-Schlaf-Rhythmus). Lineare Effekte sind grundsätzlich eine Folge von Reifung und Historie, lassen sich aber eben nicht über die Dauer des Experiments hinaus verfolgen oder kontrollieren.

Welche Folgen können diese Störungen für die Korrektheit der Experimentaussage haben? Es gibt drei Möglichkeiten: Es kann sein, daß alle Beobachtungen gültig bleiben, weil sich verschiedene Effekte gegenseitig neutralisieren. Die zweite Möglichkeit wäre eine moderate oder sogar starke Änderung in den Beobachtungen, die aber die Schlüsse aus dem Experiment gleich läßt (beispielsweise ist immer noch B besser als A, obwohl beide erheblich schlechter abschneiden als im Experiment beobachtet). Die dritte und unangenehmste mögliche Folge besteht darin, daß sich Änderungen ergeben, die die gezogenen Schlüsse ungültig machen (beispielsweise ist B viel schlechter geworden, A jedoch nicht, so daß B nicht mehr besser ist als A).

Es ist fast immer außerordentlich schwierig zu entscheiden, welche dieser drei Möglichkeiten vorliegt. Diese Feststellung sollte uns dazu veranlassen, Wiederholungen von Experimenten mit fast gleichem oder mit geändertem Aufbau als eine wichtige Routine in der Softwaretechnik-Forschung zu fordern und einzuführen. Außerdem sollten wir möglichst versuchen, experimentelle Ergebnisse in Feldstudien zu bestätigen, wo viele der Probleme externer Gültigkeit von allein verschwinden.

3.4.8 Veröffentlichung

Selbst wenn ein Experiment hervorragend geplant, durchgeführt und ausgewertet wurde, ist damit noch längst nicht alles in Butter. Die Wissenschaft lebt nämlich vor allem davon, daß das Wissen sich allmählich ansammelt. Dazu ist es aber nötig, daß Forschungsergebnisse dem Rest der Wissenschaftsgemeinde bekanntgemacht werden und dauerhaft verfügbar bleiben. Die klassische Methode hierzu ist die schriftliche Veröffentlichung, zumeist in Form eines Artikels in einer wissenschaftlichen Zeitschrift oder dem Berichtsband einer wissenschaftlichen Konferenz. Die Qualität dieser Veröffentlichung hat maßgeblichen Einfluß darauf, ob und inwieweit das Ergebnis von der Wissenschaftsgemeinde wahrgenommen wird, und ob tatsächlich jemand darauf aufbaut.

Im Abschnitt 9 im Anhang finden sich einige Hinweise darauf, wie zum Schreiben eines guten Artikels vorzugehen ist. Auf einer globaleren Ebene und speziell für experimentelle Arbeiten gibt es eine zusätzliche Richtschnur, die unbedingt einzuhalten ist: Reproduzierbarkeit. Es ist absolut entscheidend, daß alle diejenige Information im Artikel vorhanden ist, die andere Forscher bräuchten, um das Experiment zumindest so genau nachzumachen, daß die gleichen grundsätzlichen Ergebnisse herauskommen. Auch wenn die Wiederholung von Experimenten bislang in der Informatik eine Rarität darstellt: andere Disziplinen, zum Beispiel die Physik, sehen sie als eine Selbstverständlichkeit an. Wichtiger noch, die wissenschaftliche Information ist einfach unvollständig, wenn nicht zumindest im Prinzip eine Wiederholung möglich wäre, denn dieser Fall bedeutet, daß nicht alle relevanten Umgebungs- und Versuchsbedingungen, die zu dem vorgelegten Ergebnis geführt haben, bekannt sind, was den Wert des Ergebnisses schmälert, wenn nicht sogar zunichte macht.


next up previous contents
Next: 3.5 Beispiel: N-Versions-Programmierung Up: 3. Softwaretechnik-Forschung Previous: 3.3 Probleme und Hindernisse
Lutz Prechelt
1999-04-13