Wir schreiben das Jahr 1996 es ist Dienstag, der 4.
Juni. Es ist ein klarer und sonniger
Morgen, eine tropische Wärme liegt in der Luft im Ort Kuru in
Französisch Guyana. Warum dieser Tag für immer in
Erinnerung bleiben wird, erfährst du in dieser Folge.
Coding Boys, Dein Podcast rund um Softwareentwicklung und
aktueller Technews. Herzlich Willkommen.
Ja, herzlich Willkommen zur neuen Folge des Coding Buddies
Podcasts. Schön, dass du wieder
eingeschaltet hast. Wir sind natürlich auch mal
wieder mit dabei, meine Wenigkeit, der Tino und der
fantastische Fabi. Moin Fabi, Grüße dich einen
wunderschönen guten Tag. Ich hoffe, es geht dir gut.
Du strahlst, scheinst in bester Laune zu sein.
Na klar. Warum auch nicht?
Podcast Tape? Podcast Day und es ist nicht nur
ein normaler Podcast Day, sondern heute starten wir eine
neue Reihe in unserem Podcast und ich hab extrem Bock auf
diese Reihe. Wir haben ja ne Umfrage gemacht
auf Instagram und haben die Community gefragt, was sie sich
so wünschen würden. Als weiteres Format im Podcast.
Und da gab es ja n sehr spannendes Ergebnis, das nicht
sehr einseitig war, aber es gab trotzdem einen Gewinner.
Magst du denn mal kurz erzählen, was quasi gewonnen hat und was
es mit dem neuen Format auf sich hat?
Genau also gewonnen hat schwere Fehler in der
Softwareentwicklung. Oder fatale Fehler, oder?
Wie man es auch immer nennen mag.
Und da haben wir uns überlegt, wir werden mal ein bisschen
gucken, was wir für. Fehler, die in der
Softwareentwicklung aufgetreten sind, die sich auch wirklich,
sage ich jetzt mal, im großen Ausmaß bemerkbar gemacht haben.
Ob es da etwas gibt beziehungsweise wahrscheinlich
wird es da etwas geben und da haben wir uns überlegt, da
könnte man ja einfach mal eine kleine Podcastreihe draus
machen. Und verschiedene Fälle von
solchen fatalen Software Problemen, die aufgetreten sind,
einfach mal jeweils in eine Folge packen und dann lassen wir
die Folge mal so ein bisschen eintrudeln in so zwischen die
anderen. Eintrudeln ist ein schönes Wort.
Genau, also wir suchen uns dann quasi spannende Fälle raus und
analysieren sie ein bisschen. Schauen mal was so für Learnings
man da für die Softwareentwicklung draus ziehen
kann. Das finde ich ist eigentlich
auch ein spannender Punkt dabei, dass er hoffentlich nicht nur
den Entwicklern, die daran beteiligt waren, daraus ein
Learning ziehen konnten, sondern auch wir vielleicht und du,
liebe Zuhörer, liebe Zuhörer, deswegen habe ich wirklich
richtig Bock auf diese Reihe und würde sagen wir starten auch mal
direkt mit dem ersten Thema und zwar haben wir uns.
Wie soll ich sagen, ja, schon fast ein Klassiker rausgesucht,
oder Fabi, wie siehst du das? Das ist ein Klassiker.
Also das witzige ist irgendwie. Hab ich gedacht, das ist mir gar
nicht so bekannt, aber ich hab es schon mal gehört, dann wusste
ich doch wieder Bescheid. Ja, tatsächlich ist dieser Fall
auch im Studium behandelt worden.
Ne, hattest du mir erzählt, richtig.
War mal kurz angeschnitten und da hab ich mich dann wieder dran
erinnert und dachte stimmt da kommt das her.
Ja, und zwar wollen wir ein bisschen.
Bereich der Luft und Raumfahrttechnik gehen.
Ich meine, was gibt es cooleres und uns speziell um uns ein paar
Raketenstarts allgemein gesagt angucken und zwar geht es um die
Entwicklung der Ariane 4 und 5 Rakete und welche fatalen Folgen
das hatte. In der Einleitung habt ihr ja
schon gehört, es geht um das Jahr 1996 und exakt um 4.6.
Und zwar um den Raketenstart der neuen Ariane 5 Rakete.
Aber ich würde sagen, das ganze mal ein bisschen einzuordnen.
Fabi, magst du da vielleicht noch so einen kleinen Rahmen?
Schaffen, was es denn mit der Ariane 5 Rakete auf sich hatte
beziehungsweise man hört es ja am Namen schon.
Es gab Vorgänger was quasi wofür die Ariane 4 in dem Fall dann da
war um das Mal einzuordnen. Genau also die Ariane Rakete an
sich waren auf jeden Fall trägersysteme der europäischen
Raum und Luft und Raumfahrt so rum glaube ich.
Und genau die Ariane 4, wie du schon gesagt hast, ist der
Vorgänger der Ariane 5 und im Normalfall wurde mit der Ariane
4 wurden immer bestimmte Ich sag mal forschungssatelliten und
auch anderes Equipment für die sage ich mal für die
Wissenschaft, für die Forschung im Weltraum.
In eben den Orbit geflogen und nun kam man aber an den Punkt,
das sage ich jetzt mal. Diese Satelliten wurden immer
schwerer, weil die Satelliten sollten auch immer weiter raus
ins All gebracht werden um halt eben bestimmte andere
Erforschungen. Durchzuführen bei der Ariane 5
sollte beispielsweise dann mit dem ersten Start das Magnetfeld
der Erde ein bisschen genauer erforscht werden.
Und damit man halt aber eben solche schwereren Lasten in den
Orbit und auch in den weiteren Orbit bringen konnte, musste
eben eine neue Trägerrakete her, die ein bisschen mehr Power hat.
Und da wurde dann gesagt Okay, Pass auf, wir machen aus der
Ariane 4 eine Ariane 5, die ein bisschen mehr Druck hat.
Genau also das heißt, es wurde nicht nur der Name geändert,
eine 5 drauf geschrieben, sondern es gab halt auch im
Prinzip neue Anforderungen und Spezifikationen an dieser
Rakete. Diese wurde ja dann entwickelt
und voller Vorfreude wurde halt genau dieser Tag erwartet, wo
sie das erste Mal starten sollte mit der Mission.
Das Magnetfeld war das was du meintest, dann habe ich das
jetzt richtig verstanden, genau. Weiter zu erforschen und quasi
wieder Satelliten nach oben zu schießen, mal auf gut Deutsch.
Ja, was ist allerdings passiert? Also das war ja viel
Entwicklungszeit. Viel Vorfreude von mehreren
Wissenschaftlern und Entwicklern.
Es wurde ja von der von der ESA quasi entwickelt, also die
Europäische Weltraumorganisation, und es gab
ja ein relativ abruptes Ende. Ich meine, das hat keine Minute
gedauert im Moment, da habe ich mir, das hab ich mir
aufgeschrieben, 37 Sekunden nach Start ist ja die Rakete einfach
explodiert und hat viele Leute. Schockiert und verwundert
zurückgelassen, was da denn jetzt gerade passiert ist.
Gerade weil die Ariane 4 ja so unfassbar erfolgreich war,
viele, viele Flüge quasi. Absolviert hat, sage ich mal.
Also ich meine. Die Ariane Fiat glaube ich 87
Flüge absolut zuverlässig gemacht und sage ich jetzt mal
so. Material ins All gebracht, was
dort eben benötigt wurde. Und da hat man natürlich dann
auch auf die Ariane 5 gesetzt und dachte sich so, Mensch, das
was die 4 kann, muss die 5 natürlich auch können.
Und wie du schon meintest, da wurde ne Menge Zeit
reingesteckt, aber auch nicht nur Zeit sondern auch eine Menge
Geld. Ich habe gelesen, dass das
ungefähr 4 Milliarden Mark waren, die damals in dieses
Projekt investiert wurden, was natürlich schon einiges an.
Geld ist naja, wenn du jetzt sagst Mark Euro.
Inflation Durchrechnest hätte es vielleicht noch einen Gegenwert
von was 50€. Nein, also es wäre immer noch
verdammt viel Geld, keine Frage, kleine Spitze, aber.
Das Interessante war also, es hat ja, es hat ja nicht nur Geld
dahinter gesteckt, da waren einige Forschungsteams auch
dahinter, ich glaube, 80 Forschungsteams haben an der
Mission mitgewirkt und haben sich darauf vorbereitet.
Und zum Beispiel auch das Max-Planck-Institut hat ne
Technik so n sogenannten Elekt, so sogenannte Elektronenkanonen
Beigeliefert, in denen halt auch 15 Jahre Entwicklungszeit
gesteckt hat, also nicht nur Entwicklungszeit für die Rakete,
sondern auch Entwicklungszeit für andere.
Techniken, die da hoch transhaltig.
Waren und. Man muss sich das vorstellen,
wie du schon meintest, es sind alle waren total begeistert.
Es wurde sicherlich auch angepriesen in den Medien, dass
es jetzt ein Neuer, also ein Start einer neuen Rakete
Zeitalter. Ist quasi.
Genau. Und mit dieser Vorbereitung also
zum einen hast du auf der Seite der, sage ich jetzt mal
Zivilisten, Leute, die einfach nur Lust haben, die sich diesen
Staat anzugucken und natürlich aber auch das gesamte Team, was
eben dahinter steckt, hat natürlich große Erwartungen.
Und dann ist die Rakete los gestartet und wie du schon
meintest nach kürzerem Zeit eigentlich und.
Also erstmal sah alles gut aus und nach kürzester Zeit hat sich
dann diese Rakete quergestellt. Ist durch diese Last die auf
diese Rakete in diesem Zustand, wie sie eigentlich gar nicht
fliegen sollte. Angefangen hat also auseinander
zu brechen und dann wurde eben die Selbstzerstörung aktiviert.
Ne und darum waren natürlich viele lange Gesichter da, zumal
ja, wie ich ja schon gesagt hab, im Endeffekt hattest du diese,
diese verschiedenste Techniken, also es waren glaub ich auch
sogar 4 neue entwickelte Forschungssatelliten, die halt
auch extra für diesen Zweck angefertigt wurden, eben auch im
Gepäck und diese ganze Technik plus die ganze Entwicklungszeit
plus alles was damit hinten dran hing, also da waren ja auch die
Teams, die daran forschen wollten, die hatten ja.
Gedanklich schon die nächsten 5 bis 10 Jahre Forschung
ausgeplant für diesen Zweck. Das ist schon schon heftig und
da kann ich mir schon vorstellen, wie man dann drauf.
Ist wie fährst du drauf? Tino Naja, das ist ja auch noch
der Punkt, dass du nicht nur die ganze Technik verlierst, weil
sie sprichwörtlich in die Luft geht, sondern.
Du hast auch eine Rakete am Himmel, die explodiert und in
einzelnen Teile wieder auf die Erde fällt.
Sozusagen, du hast ja auch den diesen Gefallenaspekt dahinter,
aber so weit ich das. Gelesen hab ist ja auch niemand
zu Schaden gekommen. Gott sei Dank.
Aber du hast natürlich diesen riesen wirtschaftlichen und
wissenschaftlichen Schaden und deine Reputation leidet
natürlich auch dadrunter, wenn du dafür bekannt bist, dass du
ne absolut erfolgreiche Rakete, die so oft gestartet ist,
entwickelt hast und jetzt den Nachfolgeanpreist und der
komplett nach 30 Sekunden da oder 37 Sekunden in die Luft
geht. Ja, ist schon schwierig.
Die Frage ist, woran kann das jetzt gelegen haben, weil es sei
ja wie gesagt erstmal gut aus, der Start war absolut
erfolgreich und nach ungefähr dieser halben Minute kommt die
Rakete von vom Kurs ab und sprengt sich selbst, was ja auch
ein entscheidender Aspekt ist, dass es eine Selbstzerstörung
war. Genau das heißt die funktioniert
interne genau die hat super funktioniert, weil interne
Systeme entschieden haben Nähe die Flugbahn passt hier ganz und
gar nicht mehr, jetzt wird die Selbstzerstörung eingeleitet.
Und ja gut. Was was passiert nach so einem
Schock? Dann wird es natürlich in die
Aufarbeitung gehen und man versucht, diese Fehler zu
finden, was da eigentlich gerade passiert ist.
Und da sind ja super interessante Sachen rausgekommen
und da wollen wir ja in der heutigen Folge auch gezielt
darauf eingehen, weil wir uns ja das Ganze auch hinsichtlich der
Software Entwicklung anschauen wollen, und zwar wurde bei der
Entwicklung der Ariane 5 sehr, sehr viel Code und allgemein von
der Software von der 4 übernommen, weil.
Sie ja so erfolgreich war und gut lief.
Und da liegt auch schon so der erste Knackpunkt, Du hattest ja
vorhin schon gesagt, es gab ja einen Grund, dass die 5
entwickelt wurde, und zwar einfach, weil du andere
Spezifikationen hattest. Das heißt, du wolltest eine
höhere Traglast haben. Du brauchtest quasi eine höhere
Beschleunigung. All so eine Punkte führen ja
eigentlich zu einem anderen System, wenn man das jetzt mal
auf abstrakter Ebene oben betrachtet.
Ne, also vergleichsweise, wenn du jetzt sagst ich hab NN
Fahrzeug was sich vielleicht Leute n bisschen besser
vorstellen können. Ich hab n Auto ja das hat auch
viel Räder wie der Nachfolger auch haben soll, aber ich hab
einerseits. Ne 80 PS Kleinwagen und auf der
anderen Seite möchte ich jetzt aber n super Sport Supersportler
da 350 PS. Keine Ahnung was auf auf die
Straße bringen und sag na ja gut aber das 80 PS Auto war ja
ziemlich geil von der Karosserie her und so können wir doch
einiges übernehmen, da wirst du ja auch an Spezifikationsgrenzen
sehr wahrscheinlich stoßen oder an Anpassungen und umso
interessanter aus heutiger Sicht, dass das einfach
übernommen wurde. Ich mein gut, man muss sagen,
wir gehen einige Jahre zurück. Ja, also der Staat war 96 und
die Entwicklung die Jahre davor. Das ist auch noch mal eine ganz
andere Art und Weise der Softwareentwicklung gewesen,
muss man dazu sagen. Ja, richtig, also vielleicht
gehen wir davon aus, du hast nicht die Standards wie heute,
weil man lernt ja auch über die Jahre aus sämtlichen Fehlern,
die in der Softwareentwicklung stattgefunden haben, und sie
haben stattgefunden, sonst würden wir ja diese Reihe jetzt
hier auch nicht anfangen, aber ich finde es trotzdem
interessant, dass das nicht. Nachspezifiziert wurde und genau
dadurch ist auch der Software Bug quasi aufgetreten und auch
gefunden oder konnte dann auch gefunden werden.
Magst du da vielleicht mal drauf eingehen, was denn eigentlich
der Software Fehler am Ende war, weil das resultiert ja
eigentlich nur aus der fehlerhaften Spezifikation?
Ja genau. Also ich würde da zuerst noch
mal ganz kurz einen Mini Schritt zurückgehen und zwar im
Endeffekt diese Software, die quasi recycelt wurde von der
Ariane 4 für die Ariane 5 war. Ja, im Endeffekt.
Also es war ja ein bestimmtes System, was dafür genutzt wurde,
und das war das sogenannte. Irs bzw.
Das heißt sowas wie inercial Reference System oder ich glaube
auf Deutsch übersetzt heißt das sowas wie
Trägheitsnavigationssystem um das mal ganz auf den Punkt zu.
Bringen. Also ich kenne es auch nur unter
Iris, in dem in dem. Fall hier genau, aber das.
Dieses IS ist im Endeffekt ja, sagen wir mal, kann man sich
vorstellen, eine zentrale Sensoreinheit, die halt eben
auch dafür zuständig war. Quasi die Stabilität und die
Navigation der Rakete zu steuern oder zu berechnen.
Oder ne wie du das jetzt dir gerne vorstellen möchtest und.
Da ist dann auch schon n bisschen, der kann man sich
schon vielleicht n bisschen vorstellen, was das Problem ist,
wenn diese Rakete zum Beispiel sich einfach quer stellt und es
um Stabilität und Navigation geht, ne?
Und da war das Hauptproblem, um das kurz zusammenzufassen.
Ein Überlauf in einer Variable. Heißt, wenn man sich jetzt mal
ganz laienhaft vorstellt, du möchtest vielleicht irgendwelche
Berechnungen anstellen und du fährst mit einem Auto 100 und
weil du gerade vorher noch das Autobeispiel genommen hast und
du fährst auf einmal das Auto, kann aber mehr und fährt auf
einmal zum Beispiel 100 und ein Kilometer pro Stunde, und dann
würde beispielsweise der Tacho, das ist jetzt wäre jetzt dieser
Überlauf, um sich das vorzustellen, würde der Tacho
von anstatt auf 101, weil das gibt es ja nicht, würde er
wieder auf 0 springen so. Kannst du dir ungefähr
vorstellen. Und demzufolge würdest du dir
vielleicht als Fahrer denken. Ja, gut, ich.
Fahre wahrscheinlich nicht 0. Jetzt auf einmal war ich fahre
ja, aber wenn du einfach nur ein System hast was diese Werte
nimmt und damit weiter rechnet. Dann kommt es unter Umständen zu
Merkwürdigkeiten, die dann auch dafür sorgen, dass halt eben.
Sag ich jetzt mal Fehlverhalten auftreten, die eigentlich nicht
auftreten sollen, ne. Ja, das ist halt auch ein ganz
guter Punkt. Bevor wir mal technisch auf
diese diese Konvertierung eingehen, was die, die also
diesen Überlauf verursacht hat. Das ist ja genau der Punkt,
warum das erst aufgetreten ist. Bei dem Übergang von der 4.
Auf auf die Ariane 5, weil dieser dieser kritische Software
Bug war ja scheinbar schon in der 4.
Drin, weil wie gesagt, das wurde aus dem System aus dem IS
übernommen. Und konnte aber nicht
festgestellt werden mit den Tests, weil wie du so schön
sagtest, das Auto oder die Rakete einfach nicht so schnell
werden konnte, dass dieser Bug auftritt.
Richtig, das heißt um das Fahrzeug Beispiel noch mal zu
nehmen, du fährst 90 Stundenkilometer max und ab 100
würdest du denn diesen Überlauf erzeugen, weil du halt von von
deinen Daten nicht mehr sage ich mal oder höhere Werte speichern
kannst. Dann ist dir das ja in dem Falle
wirklich egal. Du weißt, deine Software hätte
da n potenziellen Bug, aber du kommst nie zu dieser
Geschwindigkeit. Und jetzt hast du aber das Ding
angenommen, du machst jetzt n super Sportwagen da draus oder
du hast auf einmal ne Ariane 5 und die reißt genau diese
Geschwindigkeit und dann tritt halt dieser Bug auf und niemand
hat diesen auf dem Zettel oder weiß überhaupt, dass dieser Bug
in der Software ist, weil es halt nie vorher aufgetreten ist.
Und genau das ist ja der Fall gewesen, aber das.
Ding ist das Ding ist wenn. Und das fand ich auch
interessant, wenn vielleicht bestimmte Bedingungen von der
Ariane 5 nicht so gewesen wären, wie sie waren, sondern
vielleicht sie in gewissen Grenzen ein bisschen langsamer
geflogen wäre, hätte das sein können, dass dieser Bug
überhaupt nicht aufgetreten wäre, sondern eventuell erst, je
nachdem. Ich hab jetzt nicht im Kopf, wie
knapp quasi dieser Überlauf erzeugt wurde, aber es ist
durchaus wäre durchaus möglich gewesen, dass diese dieser
Fehler nicht beim ersten Start, sondern bei einem der nächsten
Starts aufgetreten wäre. Und wenn man sich das mal klar
macht und dazu auch noch im Hinterkopf hat, dass die Ariane
5 sogar angedacht war, vielleicht auch bemannte
Raumfahrt zu machen, ist das schon.
Ganz schönes Ding, das. Stimmt, und da wurde auch
hoffentlich draus gelernt. Ja, das ist n riesen Ding.
Man sagt ja immer eher wie kann sowas auftreten in so
sicherheitskritischen Systemen, ne und heutzutage gibt es ja so
vielen. Normen und Prozesse, die genau
dafür sorgen, dass sowas halt hoffentlich nicht noch mal
auftreten können, weil du halt einfach so ne Spezifikation halt
doppelt absichert, sag ich mal. Oder es einfach Prozesse gibt,
wie spezifiziert wird, wie Software geprüft wird, wie
Abgetestet wird etc. Um halt sowas dann einfach auch
finden zu können und beheben zu können, weil an sich.
Man muss ja auch fairerweise sagen, der eigentliche Bug
dahinter, dem da möchte ich jetzt mal drauf eingehen aus
technischer Sicht, das wird jetzt mal ein bisschen
technischer. Das ist sowas von klein, dass
ich verstehen kann, dass man das übersieht.
Rein wenn du es Reviews und quasi auf den Code gucken
würdest. Wir gehen jetzt mal nicht davon
aus, dass das nicht abgetestet war et cetera, sondern einfach
nur zur damaligen Zeit. Es ist, glaube ich, sehr wenig.
Es war vielleicht eine Zeile Code oder so.
Weil was am Ende passiert ist und diesen kritischen Fehler
ausgelöst hat, war nämlich ne interne Umwandlung.
Eines Datentyps im Endeffekt. Um quasi diese horizontale
Geschwindigkeit. Ich meine, es war die
Geschwindigkeit. Zu repräsentieren und das an
andere Systeme auch weitergeben zu können, also quasi die
ermittelte Geschwindigkeit. Und dabei ist intern eine
Wandlung eines 64 Bit gleitkommawertes in eine 16 bit
ganzzahlung. Vorgenommen worden so, und man
kann ja jetzt 1 und 1 zusammenzählen.
Man hat auf der einen Seite 64 bit leitkomma.
Und dieser Wert, der da quasi gemessen wurde, wird dann intern
in eine 16 bit ganzzahl umgewandelt, um dann diesen Wert
quasi zu repräsentieren. Die Geschwindigkeit und die
andere Systeme zu geben und da 64 bit Speicherplatz auf der
einen Seite und 16 bit auf der anderen.
Da ist es eigentlich schon vorprogrammiert, weil wenn du
dir überlegst 16 bit jetzt lass mich nicht lügen, was sind das
32000 paar zerquetschte was der Max wert ist.
Und bei 64 Bit bist du ja im viel viel höheren Bereich.
Klar, du hast jetzt noch Nachkommastellen, aber dennoch,
also es reicht halt nicht aus, um diese Zahl repräsentieren zu
können und genau dadurch ist ja dieser Überlauf.
Entstanden. Und.
Das muss ich sagen, kann halt schon übersehen werden.
Also allein schon. Also ja, und.
Jein. Aus damaliger Sicht sicherlich,
aus heutiger Sicht wahrscheinlich eher weniger.
Aber was man sagt, ja immer, kann nicht sein.
Und dann passiert es doch. Was, was ich gerade nicht direkt
auf dem Schirm habe, ist war vorher auch schon eine
Umwandlung von also bei der Ariane 4 eine Umwandlung von
einer Gleitkommazahlen eine Ganzzahl, weil rein theoretisch
ist das ja schon potenzieller Datenverlust.
Auf der einen Seite und auf der anderen Seite hast du natürlich
einen deutlich größeren Daten. Sage ich jetzt mal im Verhältnis
von von 64 bit auf 16. Also das sind ja, das ist ja
auch schon ein deutlicher Unterschied.
Absolut. Natürlich.
Also so wie ich es verstanden habe, gab es das schon bei der
Ariane 4. Das wurde übernommen und es ist
halt nur nie aufgefallen, weil diese Geschwindigkeit nicht
erreicht werden konnten. Ja also du hast quasi diesen Bug
mit in die neue Rakete genommen. Das ist schon krass, natürlich.
Ja, das ist absolut krass, weil dadurch ist es ja nie
aufgefallen, oder beziehungsweise wurde nie da ne
Fehlerbehandlung dann vorgenommen.
Was ist wenn dieser Überlauf stattfindet oder was, wie können
wir das überhaupt verhindern? Du hast ja da mehrere
Möglichkeiten. Du kannst ja sagen, OK,
wahrscheinlich ist meine Konvertierung nicht sinnvoll,
dass ich jetzt von 64 bit auf 16 Bit runter gehe, was der Grund
dahinter ist, ist mir jetzt zumindestens nicht bekannt.
Vielleicht ja kann viele Gründe haben.
Vielleicht wollten sie ne andere Datenrepräsentation haben,
vielleicht haben andere Systeme andere Datentypen erwartet.
Sie weiß ja, wie es ist manchmal ne mit Schnittstellen.
Und. Vermutlich war das auch eine
Schnittstelle. Also genau dieser
Geschwindigkeitswert von sag ich jetzt mal der Rakete ne das
System zu dem IRS System. Und dadurch, dass das IRS System
ja gleich geblieben ist, mehr oder weniger.
Und die Rakete sich ja verändert hat, wurde da halt eben dann,
wie du ja auch schon meintest, n anderer Wert, n anderer
Maximalwert auch übergeben, weil ich hab mir mal angeguckt, was
der Geschwindigkeitsunterschied von den beiden Ariane Raketen
war und die Ariane 4 hat einfach ungefähr eine
Maximalgeschwindigkeit von 28 000 Kilometer pro Stunde gehabt
und die Ariane 5 ungefähr roundabout 36000 Kilometer pro
Stunde. Also das ist schon.
Ein ordentlicher Unterschied, wenn man da von 8000 Kilometer
pro Stunde ausgeht. Also Vergleich mal. 28 000 bei
der Ariane 4. Was hatte ich gesagt?
16 bit integer sind ja auf jeden Fall 32 000 noch was oder?
Wahrscheinlich wahrscheinlich wurde aber in Meter pro Sekunde
an der Stelle gerechnet. Deswegen kann ich mir jedenfalls
vorstellen, dass diese Zahlen jetzt vielleicht, ich kann es
nicht im Kopf umrechnen. Das wär jetzt super witzig, weil
wir jetzt so direkt so 5 zahlen, da raushauen dann eher gut Leute
da das. War der Bug.
Das war der Bug. Einer ist wie gesagt, wir haben
natürlich keinen Einblick über die internen Rechnungen da, aber
das ist soweit quasi als Ursache.
Des Softwarefehlers quasi identifiziert worden.
Auch von den Entwicklern selbst und.
Ja, es ist absolut verständlich, dass das zu diesem Fehler dann
führen kann. Und ja, was am Ende dann zu der
Explosion geführt hat, ist natürlich, dass diese
fehlerhaften Ergebnisse zu einer Korrektur der Flugbahn geführt
hat, obwohl nicht zu korrigieren, war eigentlich die
Rakete sich dann so extrem geneigt hat und andere Systeme
der Rakete entschieden haben, so, hier stimmt was ganz und gar
nicht, Selbstzerstörung in 321 und damit.
War's das auch schon mit dem ersten Start der Ariane 5?
Hatte dann doch ein vorzeitiges, sehr schnelles Ende, aber.
Was kann man daraus lernen, ist die Frage und vor allem würde
mich noch interessieren, das könnten wir noch mal
diskutieren, wie hätte man es vermeiden können, jetzt wo man
weiß okay da gab es einen Software Bug, es war ein
Konvertierungsfehler, der hat zum Überlauf geführt, was
übrigens ein sehr klassisches Problem ist, gerade auch im
Embedded Bereich. Was hätte man tun können, um das
zu verhindern? Na also erstmal.
Was, was mir auf jeden Fall auch noch so n bisschen im Kopf
rumschwirrt, ist halt eben, dass zwar auf der einen Seite zwar
lange daran entwickelt wurde, auf der anderen Seite aber eben
halt auch. Bei gerade in solchen
Forschungsbereichen ist zwar eine lange Entwicklungszeit,
wurde zwar veranschlagt, aber diese Entwicklungszeit ist ja
trotzdem. Du hast ja immer noch dahinter
diesen Punkt, dass jemand sagt, aber bitte nicht so lang, also
und bitte nicht so teuer und demzufolge hast du ja trotzdem
zwar bei einer langen und aufwendigen Entwicklung einer
neuen Rakete beispielsweise auf Papier erst mal etwas, wo man
sich vielleicht sagt, Boah, das hat nicht lange gedauert, oder
das hat ja echt eine Menge Kosten in Anspruch genommen.
Nur wahrscheinlich. Halt im Verhältnis zu wenig
Kosten veranschlagt bzw zu wenig Zeit veranschlagt, weil.
Genau. Beispielsweise.
Durch zeitkritische Aspekte, weil etwas schneller fertig
wurde, habe ich auch gelesen, dass sozusagen die.
Die Zeit von den Testen von Komponenten zwar soweit gemacht
wurde, also zum Beispiel wurde das IAS nochmal getestet, was ja
Probleme am Ende hatte. Diesen Bug hatte nur halt eben
einzeln und unabhängig von den anderen Spezifikationen, das
heißt bestimmte Sachen wurden einzeln getestet, die Rakete
wurde einzeln getestet, also diese Komponenten wurden halt
separat auch sehr sehr gründlich unter die Lupe genommen, bloß
halt dann an manchen Stellen eben nicht so im Verbund wie sie
dann am Ende in der Realität sage ich jetzt mal wirklich zum
Einsatz kam. Und das war auch.
Hat dazu geführt, dass im Endeffekt auch die dieser Bug
wieder zum Einsatz kam. Ist halt Tests testen ist da
halt auch ein spannendes spannender Punkt, weil man kann
ja nicht sagen, dass sie dieses System nicht getestet haben, ist
ja jetzt nicht so ein Fall von ungefähr ein ungetestete
Software. Natürlich geht was schief.
Das Problem ist einfach, dass man aus der Erfahrung von der
Ariane 4, so verstehe ich das dementsprechend auch bei der 5.
Also mal blöd gesagt, die Testfälle übernommen hat.
Und halt genau diese neuen Anforderungen nicht in den
Grenzfällen Abgetestet hat. Also quasi man hat das mit den
Geschwindigkeiten getestet, aber natürlich nicht unter der
Prämisse, dass sie so hoch werden können oder wären dann
auf jeden Fall wären durch die leistungsstärkere Rakete.
Man kann sagen, man hätte es verhindern können durch.
Sorgfältigeres Abtesten, das wäre auf jeden Fall eine Take
Home message, sage ich mal, die man daraus ziehen könnte.
Was natürlich auch noch ein Punkt ist.
Und der ist auch enorm wichtig. Das ist jetzt natürlich wieder
auf höherer Ebene, nicht unbedingt auf der Software Ebene
ist natürlich, diese Spezifikation zu übernehmen, in
den größten Teilen, macht einerseits Sinn, wenn man sagt
Okay das war. Sehr erfolgreich mit der Ariane
4 und viele Systeme davon behalten wir wie sie sind.
Entschuldigt aber nicht, dass man nicht quasi Sachen.
Erneut spezifiziert oder adaptiert und da gab es ja dann
anscheinend auch große Mängel, dass zum Beispiel das mit diesen
Geschwindigkeiten nicht berücksichtigt wurde, das heißt,
da hätte man einfach auch erneut das Ganze, das ganze gesamte
Gesamtsystem spezifizieren müssen, oder wie siehst du das?
Sehe ich auch so. Was ich in dem Zuge mir
angeguckt hatte ist, ich weiß nicht, also es ist ja natürlich,
ich finde es auch schwer nachzuvollziehen, dass man sagt
okay. Wir testen das Halt nicht unter
neuen Spezifikationen wie du meinst.
Oder beziehen das nicht ins Kalkül mit ein.
Und genau in dem Zusammenhang gibt es ja auch nicht nur die
rein logischen Faktoren. Sondern es können ja auch zum
Beispiel psychologische Faktoren hinzukommen, wie zum Beispiel
ein sogenannter confirmation Bias.
Dir das was sagt, das ist ja im Endeffekt die psychologische
Tendenz, Informationen so zu interpretieren.
Dass sie bestehende Überzeugungen bestätigen, das
heißt, es wurde so darauf gepocht oder oder es es wurde so
darauf vertraut, dass diese Ariane 4 oder dieses IIAS der
Ariane 4 so gute Arbeit. Geleistet hat am Ende, dass man
im Endeffekt wahrscheinlich gesagt hat, wir können Zeit und
Geld sparen und und müssen sozusagen nicht noch mal eine
Neuentwicklung dieses dieser IAS Software machen und das finde
ich halt interessant, weil das auch.
Sag ich jetzt mal in vielen Punkten, die auch bei manchen
Ausfällen in technischen Zusammenhängen.
Stattgefunden haben auch solche Biases, also solche Tendenzen,
solche Verschiebungen. Psychologisch sag ich jetzt mal
zum Einsatz kommen, und das ist interessant, weil das sind genau
Punkte, wo man sich oftmals denkt, das kann doch einfach
nicht sein. Und rückblickend ist es genauso
passiert, und das ist manchmal sehr, sehr.
Schwierig zu greifen, aber. Gehen wir mal weg von den
psychologischen. Sachen.
Aber du weißt doch, wie man so schön sagt, Never Change your
running System. Das dachten sie sich auch damals
und ist leider nicht ganz so geil gelaufen, ne?
Genau. Ja genau, also die Spezifikation
ist auf jeden Fall auch noch so n Punkt die zu adaptieren ne
absolut wichtig. Das wär denn so schon der zweite
Punkt den ich jetzt mal so mit dir zusammen daraus
schlussfolgern würde, wenn ich das jetzt so richtig mitgezählt
hab, das heißt natürlich die Testabdeckung und wie gesagt auf
Anforderungsebene die Spezifikationen anzupassen, was
noch ein spannender Punkt ist. Du kannst ja nicht nur sagen,
wir versuchen diesen Fehler zu vermeiden im vor.
Oder wir testen dann, um ihn zu erkennen.
Du müsstest den Bug ja auch noch fixen und da das finde ich, ist
halt ziemlich spannend, schwierig zu beurteilen, wenn
man die Software ansich nicht wirklich kennt.
Was ich da als erstes hinterfragen würde ist, warum
wurde auf einen 16 bit integer runtergegangen Ganzzahl also was
der Grund ist und warum man nicht vielleicht einen größeren
Datentyp, der Halt größere Werte repräsentieren kann.
Verwendet hat. Aber das kannst du dir
vielleicht sogar auch beantworten, oder?
Also mindestens eine Vermutung hast du locker gerade, also wenn
die. Frage ist, wenn es jetzt
wirklich an mangelnden Speicherplatz lag, weil es so
ein eingebettetes System ist, weiß ich.
Also ja, kann sein. Und OK, gehen wir mal davon aus,
das ist n gutes Gedankenspiel. Gehen wir mal davon aus, sie
wollten sie hatten nicht den Speicherplatz und mussten haben
halt gesagt OK wir haben jetzt hier 16 bit die wir
repräsentieren können. Könnte man ja trotzdem.
Das ganze abfangen Überlauf, das auf jeden Fall.
Also man hätte prüfen können, ob es quasi zu einem Überlauf
kommt. Und in dem Falle verschiedene
Fehler, also Behandlungen durchführen können.
Also entweder man lässt es eskalieren, sozusagen sagt OK,
wir haben hier falsche Werte. Oder man hätte es so sättigen
können. Ist auch so ne Strategie die es
gibt. Das heißt bevor du nen Überlauf
zulässt. Lieferst du den Maximalwert
zurück, so das als Sättigung. Also du bist ja gerade an dem
Punkt, dass du sagst, OK, wir sind jetzt nicht im was, wie
können wir die Fehler im Vorfeld vermeiden, sondern was ist, wenn
wir vielleicht n Fehler nicht gefunden haben während den Tests
und ein Fehler operativ während der Mission nenne ich das jetzt
mal als alter Raumfahrer ganz professionell.
Während der Auftritt. Naja, war gut, dass das eine
schließt ja das andere nicht aus.
Also du kannst ja im Vorfeld alles Mögliche da spezifizieren
und abtesten, aber es klingt ja schon so, dass es Sensordaten
sind und auch so ein Sensor kann ja mal fehlerhafte Daten senden
oder also übermitteln und dann ist es ja immer noch gefährlich,
da kannst du ja fünfmal abtesten, dass du mit diesen
Werten nur in dem Bereich spezifiziert, es kommen nur
Werte in dem Bereich, weil der Sensor genau diesen Wertebereich
hat, dann testest du ab, dass Du innerhalb dieses Bereiches damit
klar kommst. Du solltest.
Aber auch Abtestens was es, wenn mehr oder weniger kommt, also
außerhalb deines Bereichs und dementsprechend.
Deiner Software ne Fehlerbehandlung einbauen, das
heißt mit den entsprechenden Testfällen hätten sie das auch
100 Pro gemacht, aber da sie gar nicht an diese Fälle gedacht
haben oder nicht damit gerechnet haben, gab es halt nicht diese
Fehlerbehandlung und deswegen war ich gerade mal gedanklich.
Was hätte man tun können? Wenn denn doch solche Werte
ankommen. Nee, das ist ist auch auf jeden
Fall glaub ich NN sehr, sehr wichtiger Punkt und ich find es
gut, dass du das noch mal explizit mit den Sensordaten
gesagt hast, weil ich glaube, jeder der schon mal mit oder das
erste Mal mit Sensordaten gearbeitet hat, wundert sich
wieso auf einmal Sachen Auftreten oder Werte kommen, die
man nicht erwartet. Hat.
Also da sprechen wir beide aus eigener Erfahrung und ich
glaube, das geht wahrscheinlich fast jedem so.
Und genau an der Stelle solche Exception Handlings, wie man
dann im Endeffekt damit umgeht und was eventuell vielleicht
dann auch eine Richtige. Sag ich jetzt mal.
Richtiges Resultat wäre oder eine richtige Aktion wäre, die
man darauf macht, sei mal dahingestellt, weil es ist halt
auch wieder fraglich. Wenn du jetzt zum Beispiel bei
der Ariane eine Geschwindigkeit hast, die du theoretisch nicht
in deiner Datenstruktur einfangen kannst.
Und dann aber den Maximalwert annimmst, könnte es vielleicht
unter Umständen auch schwierig sein, gerade weil solche
Regelungen im Verhältnis zu den tatsächlichen physikalischen
Gegebenheiten natürlich sehr, sehr.
Labil auch sein Können, sag ich mal.
Ne, also Kleinigkeiten können schon Probleme auslösen,
deswegen ist es auf jeden Fall ne sehr sehr wichtige n sehr
sehr wichtiger Punkt ne Fehlerbehandlung zu haben
vielleicht ich will mich nicht aus nicht zu weit aus dem
Fenster lehnen, aber vielleicht hätte das auch noch nichts
gebracht, da hätte wahrscheinlich einfach auch die
Spezifikation gefehlt, aber es ist auf jeden Fall ein sehr sehr
wichtiger Punkt, der auf jeden Fall in Betracht gezogen werden
sollte und das finde ich gut. Ich hatte noch überlegt was man
zum Beispiel auch eine Art Redundanz bringen kann.
Weil du könntest ja auch zum Beispiel sagen Okay, angenommen,
jetzt wieder angenommen, ist natürlich auch, wie das Ding das
IS funktioniert gut, aber fällt vielleicht aus anderen Gründen
aus. In dem Fall war es ja eine Art
Kettenreaktion, weil es zu diesem Überlauf gekommen sind
und dann halt eben Werte falsch weitergegeben wurden,
Fehlerzustände erreicht wurden, vielleicht auch wirklich quasi
der Programmcode mit einer mit dem Error abgeflogen ist.
Man weiß es nicht oder ich weiß es auf jeden Fall nicht.
Aber wenn sowas passiert unter Umständen oder auch aus anderen
Gründen, dann ist es vielleicht auch wichtig oder gut, eine
Redundanz zu haben. Das heißt, wenn ein System
ausfällt, hast du ein zweites System, was genau das gleiche
macht, was aber an der Stelle übernehmen könnte.
Ja, also das ist natürlich so n, also Redundanz hinsichtlich der
funktionalen Sicherheit ist ja n ganz großes Thema und auch oft
eingesetzt. Das macht ja auch Sinn, dass du
auch zum Beispiel Sachen einfach von 2 unabhängigen Instanzen
messen lässt. Dass du einfach ne ausfällebene
hast oder ne kontrollebene? Ja, ist halt die Frage, ob das
redundante System dann an der Stelle geholfen hätte oder dann
einfach nur zweimal der fehlerhafte Wert weitergegeben
worden wäre oder das eine System sagt so.
Ja, nee, ist richtig was das andere gerechnet hat, hab ich ja
auch rausbekommen. Ne, also weil ich glaube in
diesem Gesamtsystem hat keiner also einen erkennbaren Fehler
gemacht, sondern es wurde einfach davon ausgegangen, dass
das die korrekten Werte sind und demnach auch wurde davon
ausgegangen, dass diese Flugbahn drastisch verlassen wird.
Evtl. Orte in der Umgebung gefährdet
sind. Und deswegen hat sie sich dann
am Ende gesprengt. Nicht, dass sie irgendwo da noch
rein kracht sozusagen. Ja, wie gesagt, diese
Fehlerbehandlung hätte man erkennen können.
Auch möglich gewesen. Wir hatten jetzt ja mal so ein
paar Sachen besprochen, was man machen könnte, ist halt
schwierig zu beurteilen, wenn man die gesamte Software
dahinter nicht kennt, was ich nur spannend finde ist, das
hätte halt auch in der Ariane 4 Halt schon drin sein können und
müssen und wäre dann ja auch adaptiert worden auf die 5, was
denn immer noch dieses Spezifikationsproblem hat, aber
es ist halt schon erstaunlich, dass in der vierten.
Ich davon ausgegangen wurde, dass dieser Wert einen Überlauf
haben könnte. Und deshalb ist es auf jeden
Fall unglaublich wichtig und ich glaube, diese diese Lehre wurde
auf jeden Fall auch daraus gezogen, dass es unglaublich
wichtig ist, bei einem neuen System oder bei einer neuen
Anwendung wirklich die Gegebenheiten zu spezifizieren
und da auch nochmal in punkto Anforderungen sehr, sehr
wichtig, welche Anforderungen an eine Software von den gegebenen
Umständen quasi. Angebracht werden.
Und das ist auf jeden Fall eine Sache, die, glaube ich, auch
dieser Fall für die Zukunft der Softwareentwicklung sehr, sehr
relevant war. Was ich zum Beispiel auch
gelernt habe im Studium, weil das genau auch ein Beispiel im
Fachspezifikationstechnik war. Es ist.
Am Anfang auch schon meinte. Es wird dann auch zur Lehre
rangezogen und es ist ja auch richtig so.
Und zum Abschied noch eine positive Nachricht.
Ich glaube so knapp ein Jahr später ein Paar, ein Jahr und
ein paar Monate gab es ja den nächsten Start der Ariane 5
erfolgreich und sie ist ja auch bis heute noch im Einsatz,
obwohl jetzt auch. Glaube ich schon.
An der 6 entwickelt wird seit einer Weile, das habe ich aber
nicht genau auf dem Schirm, das habe ich nur irgendwann mal
gelesen, aber. Meine.
Ich meine, dass die Ariane 5 jetzt auch den, also diese Art
von Rakete, auch ihren letzten Start jetzt schon hatte.
Okay genau, aber na dann. Finger Cross für die 6, würde
ich sagen. Also weiß ich jetzt gerade nicht
hundertprozentig oder er kommt bald, aber auf jeden Fall.
Die Ariane 5 ist auf jeden Fall nicht mehr so richtig.
Aber sie hatte noch ihre Zeit, das nochmal so als positiven
Abschluss. Man hat also auch wirklich
daraus gelernt. Ich meine gut, diese Fehler
wurden ja identifiziert und dann ja auch sichtlich behoben, hoffe
ich. Genau.
Ich glaube halt auch, dass also, dass auch diese so Testverfahren
gerade auch in Zusammenhang mit entsprechenden Komponenten
verbundstest, dass sowas auch einfach zukünftig dadurch eben
auch gepusht hat, auch genauso wie du meintest, die sag ich
jetzt mal Fehler Behandlung für. Also dass man auf eine höhere
Robustheit gegenüber verschiedenen Werten hat,
vielleicht auch für Ausreißer. Ja, da gibt es ja wie gesagt,
hatte ich ja eingangs erwähnt, dass es unfassbar viele Prozesse
und Normen mittlerweile dazu gibt, gerade auch im Bereich
Funktionale Sicherheit zum Beispiel und?
Auch Standards. Ja, genau, und das ist ja auch
einfach richtig, weil das sind sehr sicherheitskritische
Systeme und da ist es auch wichtig, nach diesen Prozessen
zu entwickeln. Und genau solche Sachen sind
halt auch, und das wie gesagt. Ein sehr, sehr großer Vorfall
dieser Ariane 5, die genau solche Sachen halt auch wirklich
nochmal für. Genau für diese Sachen noch mal
sensibilisiert hat. Ja, man kommt in Folge werden.
Genau. Und demzufolge war es natürlich
in dem Moment eine absolute Tragödie, also zumindest
finanziell und von dem ganzen Effort, der dahinter gesteckt
hat. Zum Glück nicht, weil
Menschenleben auf dem Spiel gestanden haben und niemand hat
nicht. Wurde verletzt und demzufolge am
Ende eigentlich was meinst du Glück im Unglück gewesen ist.
Ja. Ja.
Ja, also Tino, Ich glaube, wir haben ein bisschen über die
Ariane 5. Sag ich jetzt mal.
Die Story. Genau, die Story über die Ariane
5 einmal ein bisschen aufbereitet.
Hat mir sehr viel Spaß gemacht, war sehr interessant, hat auch
Spaß gemacht im Vorfeld, dazu rüber zu recherchieren.
Und mit dir darüber zu sprechen. Vielen Dank dafür.
Bitte, bitte, vielen Dank an dich, aber ich finde auch das
Format sehr cool. Ich freue mich, dass das auch
gewählt wurde von der Community, weil ich echt Bock hab, mich mit
diesen Fällen zu beschäftigen und natürlich auch zu zu
erkrösen. Warum es dazu gekommen ist, das
finde ich halt immer spannend und oftmals sind es dann halt
sowas wie ja Überlauf im Wertebereich, wo du dir denkst,
warum zur Hölle. Aber ja sowas passiert.
Aber du weißt ja auch manchmal selber, wenn man an einer
Software schreibt, dann die Git commit Message aufmacht und
guckt wer das war und auf einmal steht man selber da drin.
Zum Glück nicht bei der Ariane 5.
Genau. Dann würde ich sagen, schließe
ich jetzt diese Folge und wenn dir die Folge gefallen hat, dann
lass uns gerne ein Like da oder empfehle auch gerne die Folge 2
oder 3 Freunden oder Freundinnen weiter.
Das würde uns natürlich sehr gefallen, wenn du natürlich
Anmerkungen zu dieser Folge hast oder Feedback, dann lass uns
sehr sehr gerne über die Podcast Mail zukommen, das würde uns
auch sehr viel helfen. Genau den Podcast, Die Podcast
Mail und auch unsere anderen Plattformen findest du in den
Shownotes und in diesem Sinne würde ich sagen, bis zur
nächsten Folge deine Coaling. Buddies gemeinsam besser.