Andreas Zeller: "Was Microsoft interessiert, ist natürlich: wo treten die meisten Fehler auf. Das kriegen sie dadurch heraus, indem diese Fehler von Nutzern gemeldet werden. Die möchten einerseits die wichtigsten Fehler, die die meisten Leute betreffen, reparieren. Sie möchten aber andererseits daraus lernen, wie sie solche Fehler in Zukunft vermeiden können."
Kloiber: Sie haben sich diese Datenbank genauer angesehen. Was war denn genau ihre Mission dabei?
Zeller: "Ich habe geschaut, in welchen Teilen der einzelnen Produkte die meisten Fehler auftreten - was haben diese Teile für besondere Eigenschaften, sind die besonders kompliziert oder besonders lang oder vielleicht von bestimmten Leuten geschrieben, und kann man daraus Schlüsse ziehen auf zukünftige Produkte, dass die wissen, wo sie am besten nach Fehlern suchen sollen."
Kloiber: Was konnten Sie daraus lernen?
Zeller: "Es stellt sich heraus, dass entgegen gängiger Lehrmeinung es gar nicht so leicht ist, Fehler vorherzusagen. Es scheint für Fehler eine ganze Menge verschiedener Quellen zu geben. Das Interessante ist, dass sich solche Quellen teilweise kompensieren. Zum Beispiel: man sieht ein Stück Programmkode, das sieht unheimlich kompliziert aus, da denkt man, da können viele Fehler drin sein. Dummerweise wissen das auch die Programmierer, die das schreiben und achten besonders darauf, dass sie alles richtig machen. Aber sie machen die Fehler dann da, wo man sie sonst gar nicht vermuten würde. Wenn man allerdings nach entsprechenden Mustern sucht, wenn man schaut: das hier ist ein Stück Programm, das sieht so ähnlich aus wie ein neues Programm und das hat viele Fehler gehabt. Dann ist es wahrscheinlich, dass das neue Programm auch viele Fehler haben wird."
Kloiber: Können Sie diese Muster genau beschreiben? Wie sehen die aus?
Zeller: "So ein Muster sieht so aus, dass wir verschiedene Eigenschaften von Programmkode messen. Wir messen, wie lang der Kode ist, wie viele Funktionen da drin sind, wie komplex die einzelnen Funktionen miteinander zusammen spielen. Und während es von Projekt zu Projekt unterschiedlich ist, was jeweils zu Fehlern führt, ist es innerhalb eines Projektes doch recht homogen. Deswegen können diese Muster innerhalb eines Projektes gut vorhersagen, wo es weitere Fehler gibt."
Kloiber: Wie kann man von solchen Mustern darauf schließen, wo es demnächst quasi Fehlermeldungen geben wird oder wo man besonders sorgfältig Tests durchführen muss?
Zeller: "Wenn Sie für ein Projekt feststellen, dass in der Vergangenheit bestimmte Eigenschaften mit dem Auftreten von Fehlern statistisch korrelieren - also gemeinsam auftreten - dann können Sie zum Beispiel lernen, dass sagen wir die Länge eines Programmkodes mit Fehlern korreliert. Je länger der Kode ist, desto mehr Fehler treten auf. Wenn Sie ein neues Stück Programm haben, was besonders lang ist, dann bedeutet das, dass Sie dort besonders sorgfältig nach Fehlern suchen müssen."
Kloiber: Ist die Aussage, dass je länger ein Programm ist, desto mehr Fehler sind darin stecken - ist das nicht etwas banal?
Zeller: "Das ist ja das Interessante daran: bei manchen Projekten ist das tatsächlich der Fall. Das sind dann eben Projekte, bei denen sehr viel Kode in kurzer Zeit erstellt wurde. Da hat nicht genug nach Fehlern gesucht. Bei anderen Projekten ist es gar nicht die Länge des Kodes, sondern vielleicht die Art und Weise, wie die einzelnen Funktionen im Kode miteinander zusammenspielen. Da hat sich für jedes Projekt sozusagen eine eigene Kultur herausgestellt. Das war das Interessante an dieser Arbeit: jedes Projekt hat seine eigenen Merkmale, aber innerhalb eines Projekts sorgen diese Merkmale tatsächlich dafür, dass man Fehler gut vorhersagen kann."
Kloiber: Heißt das jetzt, dass Microsoft oder andere Hersteller daraus lernen und beim nächsten Mal alles besser machen?
Zeller: "Das wäre sehr wünschenswert, weil genauso wie Sie im wirklichen Leben aus der Geschichte lernen können, was hat in der Vergangenheit funktioniert und was nicht, ist es etwas, was wir mittlerweile auch bei Softwarefirmen haben. Die Produkte sind lang genug auf dem Markt, dass man daraus lernen kann, und das ist eine unheimlich wertvolle Wissensquelle, die bis jetzt nur in den Köpfen der Leute steckt. Aber wir möchten es eben sichtbar machen, damit auch künftige Generationen etwas davon haben. "
Kloiber: Bestimmte Fehler kommen immer wieder, zum Beispiel, weil Menschen diese Fehler immer wieder machen. Sie haben aber wenig untersucht, was die Menschen falsch machen, sondern eher, was systematische Fehler sind?
Zeller: "Der Punkt ist, dass es immer die unbekannten Fehler sind, die man bisher noch nicht kannte, die zum ersten Mal auftreten - dass es die sind, die tatsächlich bis in die Produktion, bis in die fertige Software hinein rutschen und eben Probleme bereiten. Die gängigen Fehler findet man leicht heraus, aber es sind nur die unbekannten Sachen, die man vorher noch nicht wusste."
Kloiber: Sie haben sich diese Datenbank genauer angesehen. Was war denn genau ihre Mission dabei?
Zeller: "Ich habe geschaut, in welchen Teilen der einzelnen Produkte die meisten Fehler auftreten - was haben diese Teile für besondere Eigenschaften, sind die besonders kompliziert oder besonders lang oder vielleicht von bestimmten Leuten geschrieben, und kann man daraus Schlüsse ziehen auf zukünftige Produkte, dass die wissen, wo sie am besten nach Fehlern suchen sollen."
Kloiber: Was konnten Sie daraus lernen?
Zeller: "Es stellt sich heraus, dass entgegen gängiger Lehrmeinung es gar nicht so leicht ist, Fehler vorherzusagen. Es scheint für Fehler eine ganze Menge verschiedener Quellen zu geben. Das Interessante ist, dass sich solche Quellen teilweise kompensieren. Zum Beispiel: man sieht ein Stück Programmkode, das sieht unheimlich kompliziert aus, da denkt man, da können viele Fehler drin sein. Dummerweise wissen das auch die Programmierer, die das schreiben und achten besonders darauf, dass sie alles richtig machen. Aber sie machen die Fehler dann da, wo man sie sonst gar nicht vermuten würde. Wenn man allerdings nach entsprechenden Mustern sucht, wenn man schaut: das hier ist ein Stück Programm, das sieht so ähnlich aus wie ein neues Programm und das hat viele Fehler gehabt. Dann ist es wahrscheinlich, dass das neue Programm auch viele Fehler haben wird."
Kloiber: Können Sie diese Muster genau beschreiben? Wie sehen die aus?
Zeller: "So ein Muster sieht so aus, dass wir verschiedene Eigenschaften von Programmkode messen. Wir messen, wie lang der Kode ist, wie viele Funktionen da drin sind, wie komplex die einzelnen Funktionen miteinander zusammen spielen. Und während es von Projekt zu Projekt unterschiedlich ist, was jeweils zu Fehlern führt, ist es innerhalb eines Projektes doch recht homogen. Deswegen können diese Muster innerhalb eines Projektes gut vorhersagen, wo es weitere Fehler gibt."
Kloiber: Wie kann man von solchen Mustern darauf schließen, wo es demnächst quasi Fehlermeldungen geben wird oder wo man besonders sorgfältig Tests durchführen muss?
Zeller: "Wenn Sie für ein Projekt feststellen, dass in der Vergangenheit bestimmte Eigenschaften mit dem Auftreten von Fehlern statistisch korrelieren - also gemeinsam auftreten - dann können Sie zum Beispiel lernen, dass sagen wir die Länge eines Programmkodes mit Fehlern korreliert. Je länger der Kode ist, desto mehr Fehler treten auf. Wenn Sie ein neues Stück Programm haben, was besonders lang ist, dann bedeutet das, dass Sie dort besonders sorgfältig nach Fehlern suchen müssen."
Kloiber: Ist die Aussage, dass je länger ein Programm ist, desto mehr Fehler sind darin stecken - ist das nicht etwas banal?
Zeller: "Das ist ja das Interessante daran: bei manchen Projekten ist das tatsächlich der Fall. Das sind dann eben Projekte, bei denen sehr viel Kode in kurzer Zeit erstellt wurde. Da hat nicht genug nach Fehlern gesucht. Bei anderen Projekten ist es gar nicht die Länge des Kodes, sondern vielleicht die Art und Weise, wie die einzelnen Funktionen im Kode miteinander zusammenspielen. Da hat sich für jedes Projekt sozusagen eine eigene Kultur herausgestellt. Das war das Interessante an dieser Arbeit: jedes Projekt hat seine eigenen Merkmale, aber innerhalb eines Projekts sorgen diese Merkmale tatsächlich dafür, dass man Fehler gut vorhersagen kann."
Kloiber: Heißt das jetzt, dass Microsoft oder andere Hersteller daraus lernen und beim nächsten Mal alles besser machen?
Zeller: "Das wäre sehr wünschenswert, weil genauso wie Sie im wirklichen Leben aus der Geschichte lernen können, was hat in der Vergangenheit funktioniert und was nicht, ist es etwas, was wir mittlerweile auch bei Softwarefirmen haben. Die Produkte sind lang genug auf dem Markt, dass man daraus lernen kann, und das ist eine unheimlich wertvolle Wissensquelle, die bis jetzt nur in den Köpfen der Leute steckt. Aber wir möchten es eben sichtbar machen, damit auch künftige Generationen etwas davon haben. "
Kloiber: Bestimmte Fehler kommen immer wieder, zum Beispiel, weil Menschen diese Fehler immer wieder machen. Sie haben aber wenig untersucht, was die Menschen falsch machen, sondern eher, was systematische Fehler sind?
Zeller: "Der Punkt ist, dass es immer die unbekannten Fehler sind, die man bisher noch nicht kannte, die zum ersten Mal auftreten - dass es die sind, die tatsächlich bis in die Produktion, bis in die fertige Software hinein rutschen und eben Probleme bereiten. Die gängigen Fehler findet man leicht heraus, aber es sind nur die unbekannten Sachen, die man vorher noch nicht wusste."