Beruflich Dokumente
Kultur Dokumente
Jan Brennenstuhl
Universitat Potsdam
Jan Brennenstuhl, B.Sc. Prof. Dr. Klaus Rebensburg 31. Mrz 2012 a
The scientist builds in order to study; the engineer studies in order to build. Fred Brooks, 1996
Abstract
Aus Fehlern lernen meint im Grunde genommen Handlungen wie Fehleranalyse und Ursachenforschung, die als Folge eines Fehlerereignisses ausgefhrt werden und zudem als negau tives Wissen zuknftige Ttigkeiten beeinussen. Ziel dieser Arbeit ist es heruaszustellen, u a ob die Informatik aus ihren Fehlern lernt und weiterhin herauszustellen welche Chancen dieses negative Wissen fr die Wissenschaft im Allgemeinen und die Informatik im Speziu ellen bereit hlt. Dazu werden im Folgenden die Grundlagen erfahrungsbasierten Wissens a beschrieben, werden ausgewhlte Katastrophen der Informatik und weiterhin auch testgea triebene Software-Entwicklung erlutert. Erwartet wird, dass die jetzige wissenschaftliche a Fehlerkultur nur in Anstzen dazu geeignet ist, aus ihren Fehlern zu lernen und das es einem a Kulturwechsel bedarf, um Wissenschaft und Forschung ezienter und qualitativ hochwertiger gestalten zu knnen. o
VI
Inhaltsverzeichnis
1 Einleitung 2 Grundlagen erfahrungsbasierten Wissens 2.1 Negatives Wissen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Aus Fehlern lernen 3.1 Katastrophen der Informatik . . . . . . . . . . 3.1.1 Der Pentium-Bug . . . . . . . . . . . . . 3.1.2 Die Ariane 5 Explosion . . . . . . . . . 3.1.3 Das Denver-Koer-Debakel . . . . . . . 3.2 Negatives Wissen in der Software-Entwicklung 3.3 Exkurs: Testgetriebene Entwicklung . . . . . . 3.4 Negatives Wissen in der Informatik . . . . . . . 4 Fazit Literaturverzeichnis Web-Quellenverzeichnis Glossar 1 3 3 5 5 5 6 6 6 7 8 11 IX XI XIII
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
VII
1 Einleitung
Fehler, also Merkmalswerte beziehungsweise Zustnde, die die vorgegebenen Forderungen a nicht erfll[en] und somit als Nichterfllung einer Anforderung(DIN 9000 2005) gesehen u u werden, sowie das Begehen von Fehlern gehren genauso zum Leben im Allgemeinen wie auch o zur Informatik als Wissenschaft im Speziellen. Fehler ermglichen es uns Menschen, aus iho nen zu lernen und auf diese Weise neue Erkenntnisse zu erlangen. Sie werfen neue Fragen auf, rufen neue Probleme hervor, die wiederum unter Einuss einer nicht zu unterschtzenden a Fehlerquote gelst werden knnen. Kurz: Fehler sagen uns nicht nur, was etwas nicht ist o o und wie etwas nicht funktioniert, sondern knnen auch zur Klrung des Warums (warum o a bestimmte Zusammenhnge nicht stimmen) beitragen (vgl. Oser u. Spychiger 2005, S. 26). a Dennoch sind Fehler verpnt. Insbesondere in Wissenschaften und auch in der recht juno gen Informatik gilt das Begehen von Fehlern hug als Untergrabung der eigenen Expertise, a die sich, so die Befrchtung, durch Reputationsverlust und ngerzeigende Reaktionen Dritu ter uert. Wer einen Fehler macht, hat versagt - so eine verbreitete Ansicht (vgl. Unger a 2009, S. 1). Dabei kann eine positive Fehlerkultur in der Wissenschaft, eine die begangene Fehler dokumentiert, publiziert und diskutiert, nicht nur zu einem Mehr an Erkenntnissen fhren, wie nachfolgend erlutert wird, sondern wirkt auf gleiche Weise als Vorbild u a fr die gesamte Gesellschaft. Insbesondere die Informatik verfgt hierbei uber ausreichend u u groe Mglichkeiten und nutzt diese bereits mit Bug-Tracking1 Systemen und Wikis2 zur o Fehlerdokumentation, zwar nicht in theoretisch-wissenschaftlichen aber dafr verbreitet in u praktisch-anwendungsorientieren Bereichen. In den nachfolgenden Kapiteln soll betrachtet werden, inwiefern die Informatik aus Bugs und verschieden klassifzierbaren Fehlern lernt und welche Chancen ein etabliertes Forum fr u negative Ergebnisse im Bezug auf die Vermeidung der kleinen und groen Katastrophen der Informatik haben kann. Dazu werden zunchst allgemeine Grundlagen erfahrungsbasierten a Wissens erlutert sowie positives und negatives Wissen gegeneinander abgegrenzt. Beispiele a fr negative Ergebnisse und ein vorausschauendes Fazit runden diese Ausarbeitung ab. u
Als Bug-Tracker werden Werkzeuge fr die Softwareentwicklung bezeichnet, mit Hilfe derer sich Programmu fehler und ihre Lsungen erfassen und dokumentieren lassen, um auf diese Weise fr nachfolgende Ento u wicklungen recycled zu werden. Sie ermglichen es Software-Entwickler/innen demnach auch, aus den o Fehlern und Lsungsanstzen Anderer zu lernen. o a 2 Bei einem Wiki, hawaiisch fr schnell, handelt es sich um speziell auf die Kollaboration und Interaktiu on ausgerichtete Content-Management-Systeme (CMS), die auch in der Software-Entwicklung zur projektbergreifenden Dokumentation von Anforderungen, Problemen und Lsungsanstzen genutzt werden. u o a
2 Grundlagen erfahrungsbasierten Wissens Der Besitz negativen Wissens bringt somit verschiedene Vorteile mit sich, die sich zunchst a in einer Art Schutzmantel uern, der davor schtzt in gleichen oder hnlichen Situationen a u a die gleichen Fehler wieder zu begehen und somit sich selbst oder anderen zu schaden bzw. eine Aufgabe nur suboptimal oder garnicht zu lsen (Unger 2009). Dieses Schutzwissen lsst o a sich wiederum in einen inneren und einen ueren Teil unterscheiden. Ersterer bezeichnet ein a Warnsystem, welches auf konkreten Erinnerungen basiert, auf gemachte Fehler verweist und somit das Wiederholen eines Fehlers einschrnken kann. Als ueres Schutzwissen werden a a Warnhinweise in der Umwelt bezeichnet, die beispielsweise als Warnschilder oder Sicherheitshinweise auftreten und an abstrakte, unkonkrete Fehlersituationen erinnern (vgl. Unger 2009, S. 10). Es bedarf allerdings einer ausreichend groen emotionalen Bindung, um das Schutzwissen eektiv arbeiten zu lassen. Diese wird erst durch das Begehen von Fehlern ermglicht und erfordert somit, neben der Einsicht, dass ein Fehler aufgetreten ist, eine auso geprgte Fehlerkultur (vgl. Oser u. Spychiger 2005, S. 27). a Wie und ob dieses Wissen um die Macht des negativen Wissens den Erkenntniszuwachs von Wissenschaftlern beschleunigen kann, wird nachfolgend am Beispiel der Informatik, mit dem Ziel zu klren, ob diese junge Wissenschaft aus ihren Fehlern lernt, genauer betrachtet. a Dazu werden Fehler zunchst in verschiedene Arten unterteilt und prominente, auf Fehler a zurckzufhrende historische Katastrophen beschrieben, bevor anschlieend Empfehlungen u u fr ein eektives Nutzen negativen Wissens in der Wissenschaft formuliert werden. u
Bedauern beschreibt hier das Lernen aus dem Abstand zwischen gewnschten und tatschlichen Ergebnis u a und wird beispielsweise an der Universitt Tel Aviv, untersttzt vom Internet-Giganten Google Inc., a u erforscht (vgl. Mayer 2011). 2 O-By-One-Fehler sind ein in der Software-Entwicklung hug anzutreendes Logikproblem der Indiziea rung, bei dem Speicher- oder Puergrenzen um einen Schritt uberschritten werden.
3 Aus Fehlern lernen Fliekommazahlen-Algorithmus Fehler produzieren konnte. Die Folge der weltweiten Publicity, die Intel im Zuge der Markteinfhrung fr den Pentium gewann, sowie die eher mangelhaft u u einzuschtzenden, durch Verheimlichen und Aussitzen des Problems geprgten Reaktionen a a nach Bekanntwerden des Bugs, war die kostspieligste Rckrufaktion in der Geschichte der u Halbleiterindustrie. Ausgelst wurde das Problem durch fnf falsche Eintrge in einer Tao u a belle und der daraus resultierenden fehlerhaften Ubertragung auf die Hardwareebene (vgl. Ljepoja u. a. 2003).
Die unterschiedlichen Angaben verschiedener Quellen lassen keine genaue Aussage zu.
3.3 Exkurs: Testgetriebene Entwicklung den Fehlern ihrer Vorgnger gelernt und beispielsweise mit der testgetriebenen Entwicklung a (TDD) neue, qualittsbewusste Programmiertechniken etabliert, die einen entscheidenden a Teil zu einer positiveren Fehlerkultur in der Software-Entwicklung beitragen knnen. o
Der daraus resultierende Workow entspricht folglich einem Kreislauf, der mit dem Schreiben eines Tests beginnt (Phase 1). Durch das Testen von Funktionalitt, die (noch) nicht a vorhanden ist, wird infolgedessen ein Fehler im System erzeugt, der anschlieend durch das Erstellen des eigentlichen Programm-Codes behoben wird (Phase 2). Whrend des abschliea enden sogenannten Refactorings (Phase 3) werden Code-Duplizierung entfernt, eventuell notwendige Abstraktionen eingefgt, Code-Smells6 beseitigt, gngige Style-Konventionen u a
4
Das Manifesto for Agile Software Development(Beck u. a. 2001) wurde 2001 entlichkeitswirksam publio ziert und zog eine Welle wissenschaftlicher aber auch populistischer Auseinandersetzungen nach sich. Allein die Online-Suche der amerikanischen Webseite des weltweit agierenden Online-Warenhauses Amazon.com, Inc. listete im Februar 2012 uber 1,600 Publikationen die den Begri Agile software development im Namen tragen oder direkt mit ihm assoziiert sind. 5 Unit-Tests uberprfen in der Regel jeweils nur wenige Zeilen Quellcode (der Unit) (Kbeck 2009, S. 46). Prou u grammbibliotheken wie JUnit fr Java, NUnit fr .Net oder hnliche Portierungen liefern dafr notwendige u u a u Programmbausteine und ermglichen als quelloene Bibliotheken Tests ohne proprietre Werkzeuge zu o a entwickeln. 6 Code-Smells, also schlechte Code-Gerche, bezeichnen subjektive Indizien fr schlechten Code, denen in u u der Regel ein tiefer liegendes Problem im System zugrunde liegt (Westphal 2006, S. 75).
3 Aus Fehlern lernen umgesetzt und der Code so in seine (temporr) einfachste Form gebracht (Pilone u. Miles a 2008). Damit einher geht ferner die Notwendigkeit eines evolutionren Designs, welches den a agilen Charakter von TDD ein weiteres Mal unterstreicht. So wird das Design der Software nicht im Voraus und in seiner Detailiertheit geplant, viel eher kommt es im Laufe der Entwicklung zu (temporren) Design-Entscheidungen, die sich im Wesentlichen auf die vora denierten Testflle sttzen und somit, wie auch die Code-Entwicklung, einem iterativen a u Prozess untergeordnet sind. Auf diese Weise existiert im Idealfall zu jeder Zeit der Software-Entwicklung nur so viel Code wie unbedingt ntig, der zudem in hohem Mae mit Testfllen abgedeckt ist und soo a mit nicht nur ausschlielich seine Anforderungen erfllt (das tut was er soll), sondern auch u ubersichtlich und nachvollziehbar bleibt. Den Entwicklern wird so ermglicht, einen exako 7 ) Programm-Codes erhalten zu ten Uberblick uber die Korrektheit des (beinahe gesamten knnen, was sie wiederum befhigt, untersttzt durch die automatisiert laufenden Tests, o a u Bugs und Probleme bereits whrend der Entwicklung erkennen zu knnen und des Weiteren a o verpichtet auf diese auftretende Fehler zeitnah zu reagieren. Im Gegensatz zu klassischen Software-Entwicklungsprozessen wie dem Wasserfall- oder V-Modell (als Extrembeispiele), die eine sogenannte Test-Phase oft an das Ende ihrer Prozesskette hngen, ermglicht TDD Tests zeitnah zur eigentlichen Programmierung zu erstela o len und sorgt somit dafr, dass diese nicht unter Zeitdruck wegrationalisiert werden. Zudem u fhren die automatisierte Wiederholbarkeit und das durch die Gesetze der TDD implizit u notwendige huge Kompilieren des Quellcodes nicht nur dazu, dass Tests selbst unter Zeita druck ausgefhrt werden knnen, sondern ermglichen auch das Erkennen von Fehlern und u o o Seiteneekten gleich bei ihrer Entstehung. Ein eektives Testen ist die Folge. Testgetriebene Entwicklung versetzt EntwicklerInnen demnach auf der einen Seite in die Lage, mit Hilfe von automatisierten Tests vom Beginn der Programmierarbeit an die funktionale Qualitt a der Software zu bewahren und gestattet es durch fortlaufendes Refactoring zudem auch, die strukturelle Qualitt zu erhalten (vgl. Westphal 2006, S. 4). Folglich wird das Risiko, a Bugs oder andere Probleme, wie sie der Ausgangspunkt fr die im vorangegangenen Kapiu tel beschriebenen Katastrophen der Informatik waren, im Produktionscode zu hinterlassen deutlich gesenkt. Die Software-Entwicklung hat mit TDD in jngster Zeit somit Konzepte u etabliert, die den Schluss zulassen, durchaus aus ihren vergangenen Fehlern gelernt zu haben.
Je nach Programm und Programmiersprache unterscheidet sich der Umfang der eektiv zu erreichenden Testabdeckung. Eine hundertprozentige Testabdeckung wird nur in Ausnahmefllen erreicht und ist aufa grund des relativ groen Overheads nur bedingt erstrebenswert.
3.4 Negatives Wissen in der Informatik nem groen Teil aus falschen Annahmen, fehlgeschlagenen Versuch und Irrtum. Dennoch werden diese Fehlschlge, verglichen mit erfolgreichen Experimenten und Gea dankengngen, allerdings nur selten der Oentlichkeit zugnglich gemacht, was zu einem a a Groteil an der etablierten Publikationskultur der Wissenschaften liegt, die spektakulren a Ergebnissen einen besonderen Stellenwert einrumt, da diese im Anschluss mit hherer Wahra o scheinlichkeit zitiert werden und auf diese Weise einen Reputationsgewinn des Forschenden einleiten und sich darber hinaus besser verkaufen lassen. Als Folge dieser einseitigen Beweru tung von Ergebnissen werden wissenschaftliche Fehlschlge, nicht nur durch die Forschenden a sondern auf gleiche Weise durch die Publikationsorgane, als unspektakulr und unpraktikaa bel eingestuft (Freistetter 2011). Dabei ist es genau dieses negative Wissen, das helfen knnte, auch in der international o weit verzweigten Informatik, aus den Fehlern Anderer zu lernen, auf der einen Seite kostbare Forschungsmittel und Zeit einzusparen und auf der anderen Seite unerwartete oder unklare Ergebnis genauer zu erforschen. Ein Kulturwechsel wre angebracht und wird mit a international steigenden Studierendenzahlen und einer immer weiter vernetzten Forschergemeinde zunehmend zwingend notwendig, um im Sinne der Wissenschaft festzuhalten, welche Anstze aus welchen Grnden nicht zielfhrend waren. Auf diese Weise wre es mglich, a u u a o den wissenschaftlichen Forscherdrang weg von bereits fehlgeschlagenen Experimenten und Untersuchungen hin zu einer eektiveren Erforschung bisher noch nicht untersuchter Gegenstnde zu kanalisieren. a Doch solange es beispielsweise mit dem Forum for Negative Results8 (FNR) oder dem Journal of Unsolved Questions9 (JUnQ) nur wenige kleine Herausgeber fr negative Ergebu nisse gibt, die zudem mehrheitlich eher ein Schattendasein fristen, ist die Wissenschaft im Allgemeinen und die Informatik im Speziellen weit davon entfernt, aus ihren Fehlern zu lernen.
8 9
http://page.mi.fu-berlin.de/prechelt/fnr/ http://junq.info
4 Fazit
Die Chancen, die negatives Wissen fr Forschung und Wissenschaft bereit hlt, sind enorm u a und bewegen sich zum einen im Bereich der Optimierung von Forschungsmitteln durch die Vermeidung von Mehrfachuntersuchungen des gleichen, bereits fehlgeschlagenen Experiments und zum anderen im Bereich Lenkung wissenschaftlicher Arbeit. Das Lernen aus Fehlern ist integraler Bestandteil des Lebens und obwohl einige Teilbereiche der Informatik, wie beispielsweise die Software-Entwicklung wie gezeigt werden konnte in Anstzen aus ihren Feha lern gelernt haben, weigert sich die ubergeordnete Wissenschaft (mit wenigen Ausnahmen) aufgrund von historisch gewachsenen Fehler- und Publikationskulturen stetig diese Chancen zu erkennen und sie fr sich zu nutzen. u Ein umfangreicher Kulturwechsel innerhalb der Wissenschaft ist somit unabdingbar, um Forschung ezienter und qualitativ hochwertiger zu gestalten. Die Informatik als recht junge Wissenschaft wre prdestiniert dafr, den ersten Schritt in diese Richtung zu unternehmen a a u und neben ihren oft einussreichen Errungenschaften auch negative Ergebnisse, Fehlinterpretationen und unplausible Ideen im groen Stil zu publizieren. Das Internet macht es mglich, o dies auch ohne kommerzielle Publikationsorgane selbstorganisiert umzusetzen.
11
Literaturverzeichnis
Beck u. a. 2001 Beck, Kent ; Beedle, Mike ; Bennekum, Arie van ; Cockburn, Alistair ; Cunningham, Ward ; Fowler, Martin ; Grenning, James ; Highsmith, Jim ; Hunt, Andrew ; Jeffries, Ron ; Kern, Jon ; Marick, Brian ; Martin, Robert C. ; Mellor, Steve ; Schwaber, Ken ; Sutherland, Je ; Thomas, Dave: Manifesto for Agile Software Development. The Agile Alliance, 2001 DIN 9000 2005 DIN EN ISO 9000:2005-12, Qualittsmanagementsysteme - Grundlagen und Begrie. a Beuth Verlag, 2005 Kubeck 2009 K beck, Sebastian: Software-Sanierung - Weiterentwicklung, Testen und Refactoring u bestehender Software. mitp Verlag, 2009 Martin 2007 Martin, Robert C.: Professionalism and Test-Driven Development. IEEE Computer Society Press, 2007 Oser u. Spychiger 2005 Oser, F. ; Spychiger, M.: Lernen ist schmerzhaft: Zur Theorie des negativen Wissens und zur Praxis der Fehlerkultur. Beltz, 2005. ISBN 9783407253736 Pilone u. Miles 2008 Pilone, Dan ; Miles, Russ: Softwareentwicklung von Kopf bis Fu. OReilly Verlag, 2008 Unger 2009 Unger, M.: Negatives Wissen im Kontext einer positiven Fehlerkultur. GRIN Verlag GmbH, 2009. ISBN 9783640435678 Westphal 2006 Westphal, Frank: Testgetriebene Entwicklung mit JUnit & FIT - Wie Software a nderbar bleibt. dpunkt Verlag, 2006
IX
Web-Quellenverzeichnis
Freistetter 2011 Freistetter, Florian ; Fraunhofer-Gesellschaft (Hrsg.): Die Entdeckung des Scheiterns. Version: August 2011. http://www.forschungs-blog.de/dieentdeckung-des-scheiterns/, Abruf: 14. Mrz 2012 a Huckle 1999 Huckle, Thomas: Kleine BUGs, groe GAUs. Version: 1999. http://www5.in.tum. de/~huckle/bugs.html, Abruf: 21. Mrz 2012 a Klauer 2004 Klauer, Bernd: Die Katastrophen der Informatik. Version: Juli 2004. http://www.ti.informatik.uni-frankfurt.de/lehre/ss04_wissenschaftliche_ dokumentation/book/node17.html, Abruf: 21. Mrz 2012 a Ljepoja u. a. 2003 Ljepoja, Boris ; Pfennig, Thomas ; Rosenegger, Stefan: Der Pentiumbug. Version: 2003. http://www5.in.tum.de/lehre/seminare/semsoft/unterlagen_02/ pentiumbug/website/, Abruf: 21. Mrz 2012 a Mayer 2011 Mayer, Boris ; Allgemeine, Jdische (Hrsg.): Aus Fehlern lernen - Israelische Inforu matiker bringen Computern Bedauern bei. Version: Mai 2011. http://www.juedischeallgemeine.de/article/view/id/10323, Abruf: 21. Mrz 2012 a Riedl 2002 Riedl, Mathias: Ariane 5 - Absturz des Flugs 501. Version: 2002. http: //www4.in.tum.de/lehre/seminare/ps/WS0203/desaster/Riedl-Arianne5Ausarbeitung-27-11-02.pdf, Abruf: 21. Mrz 2012 a
XI
Glossar
Kurzel CMS ESA FNR JUnQ KI LAN TDD Beschreibung Content-Management-System European Space Agency Forum for Negative Results Journal of Unsolved Questions knstliche Intelligenz u Local Area Network Test-Driven Development 1 6 9 9 5 6 6
XIII