Ja, wunderschönen guten Nachmittag. Schön, dass Sie wieder da sind. Ich habe Ihnen heute
zur Einstellung ein kleines Video mitgebracht. Wir hatten uns ja gestern unterhalten über die
Datendarstellung, die Anzahl der Bits und Bytes, die man so braucht. Da Sie immer so sagen,
nach technischen Anwendungen lächzen, dann hier mal das Beispiel.
Ja, das war also leider nicht so westlich.
Das war in Coru, man hat vielleicht an dem Kommentator gehört, französisch, das war die
Ariane 5 der Jungfernflug. Die Ariane 5 war eine Weiterentwicklung der Ariane 4 und hat sich vor
allen Dingen durch höheren Schub ausgezeichnet. Und da die Ariane 4 so erfolgreich war, es war
durch keinen Befehl stattgefahren, hat man gleich beim Jungfernflug der Ariane 5 zwei Satelliten
mitgeschickt, je 800 Millionen Euro teuer. Und dieser ganze Spaß, den Sie jetzt gerade gesehen
haben, hat so ungefähr zwei Milliarden Euro gekostet. So, die Frage, was ist da schiefgegangen
und was hat das sozusagen mit unserem Thema zu tun?
Das ist der Programmcode von Ariane 5, ein kleiner Ausschnitt, es sind mehrere Millionen
Zeilenprogrammcode und das ist in der Programmiersprache geschrieben, die heißt Ada, Ada war der Vorname
der Countess of Laughless und die hat dem berühmten Charles Babbage geholfen, seine analytical
Maschinen, den erstmechanischen Rechner zu programmieren und eine der wichtigsten Frauen
in der Informatik und jetzt er ist also diese Programmiersprache genannt worden. Das Problem,
das auftritt, hängt aber nicht direkt mit der Programmiersprache zusammen, das wäre
in der anderen wie C oder C++ ganz ähnlich passiert. Wenn Sie sich hier diesen Programmcode
angucken, dann interessiert uns jetzt hier diese eine Zeile, da sehen Sie, dass es da
auch noch eine variabliche Horizonte Velocity Sensor, also die horizontale Beschleunigung,
die Querbeschleunigung dieser Rakete und das ist die Lagesteuerung und die wird offenbar
konvertiert nach Integer, das sehen Sie Integer, Klammer auf, dann kommt dieser Variabelname,
Klammer zu, in eine variable Horizonte Velocity Bias, also so ein Versatz und für die Ariane
4 hat man da dann entsprechende Tests gemacht und da hat man durch diese Tests gesehen,
dass diese Konvertierung nie zu einem Laufzeitfehler geführt hat und deswegen hat man hier oben
drüber in der Programmiersprache Ada eine Optimierung abgeschaltet, sozusagen versucht,
das Programm schneller zu machen und an dieser Stelle sieht man da steht so ein Pragma Suppress,
Pragma ist so eine Anweisung und dieses Suppress heißt unterdrücken und zwar soll numerische
Fehler, numerical errors für die variable Horizonte Velocity Bias nicht beachtet werden,
das heißt im Programm hat man gesagt, wenn da ein Fehler auftritt, muss ich nicht drum
kümmern, in der Idee, das treten keine Fehler auf, also können wir Überprüfung zur Laufzeit
sparen und das Programm damit dann entsprechend schneller machen und das ungeschickte war
dann, dass an dieser Stelle hier unten es eine Exception gibt, wenn numeric error, dann
Calculate Vertical Velocity, also wenn so ein numerischer Fehler aufgetreten wäre und der
abgefangen worden wäre, dann hätte man an dieser Stelle tatsächlich neu berechnet,
diese vertikale Geschwindigkeit von der Rakete und da das nicht gefallen ist, hat man aber
dieses Use IRS 1 benutzt und das ist leider dann entsprechend aufgerufen worden, diese
Routine.
So warum war das so, die Ariane 5 hatte einfach verstärkte Triebwerke und hat ungefähr eine
vierfache Geschwindigkeit an der Stelle von dem Unglück gehabt, also das persönlich,
dass die Ariane 4 jeweils da geflogen ist und an dieser Stelle hier sind einfach die
Messwerte von den Sensoren so groß gewesen, dass sie nicht mehr in eine Integer Variable
reingepasst hätten, das heißt, hätte da jemand da oben an dieser Stelle statt Integer,
Float oder Double geschrieben, hätte man zwei Milliarden Dollar gespart.
Also der Variablenüberlauf, also sozusagen das falsche Datum, die falsche Datentyp hat
dazu geführt, dass so ein Variablenüberlauf stattfinde, der ist von der Exception nicht
abgefangen worden, da es noch baugleiche Systeme gab, die aber die gleiche Software verwendet
haben, ist der Fehler dort genauso aufgetreten, man hat also nur mit Hardware-Fehler, nicht
mit Software-Fehlern gerechnet und offenbar wurde also dieses Software von dieser Ariane
Presenters
Zugänglich über
Offener Zugang
Dauer
00:42:42 Min
Aufnahmedatum
2011-05-25
Hochgeladen am
2018-05-07 14:49:50
Sprache
de-DE
Einführung in UNIX/Linux Einführung in die Programmierung mit Java Grundlagen der Rechnerarchitektur Programmiersprachen: von der Maschinensprache zur Objektorientierung Objektorientierte Programmierung Datenstrukturen und Algorithmen: Suchen und Sortieren, Listen, Keller, Bäume Internet, Verteilte Systeme