Monday Assignment 1, Kas van 't Veer (6292437) - matthijsbos/swe2013team5 GitHub Wiki

1

Ariane 5 Launch Failure

Inleiding

Op 4 juni 1996 was het eindelijk zover voor de European Space Agency, de Ariane 5 raket zou gelanceerd worden om een aantal 3 ton wegende sattelieten de ruimte in te brengen. Ze zouden echter van een koude kermis thuis gaan komen, aangezien de raket al binnen een minuut vanwege softwarefouten uit koers raakte en het zelfvernietigingsmechanisme geactiveerd werd. Na 7 miljard dollar kosten en 10 jaar ontwikkeling kwam dit project dus heel snel tot een desastreus einde.

Probleemanalyse

Het korte avontuur van de raket duurde maar liefst 37 seconden. Het probleem met de software was dat de software voor de Ariane 5 was gebouwd met de software van de oudere Ariane 4 raket als basis. Dit terwijl de Ariane 5 een heel andere vliegroute beging. Een groot verschil met de oudere raket is dat de horizontale acceleratie van de Ariane 5 een stuk hoger lag. Omdat het in dit geval over een destijds nieuw concept ging, waren er ook nog geen tests gedaan. De horizontale acceleratie bleek dusdanig veel hoger dat de verouderde systemen vastliepen bij het converteren van verschillende typen variabelen vanwege een overflow. Echter was er wel een backupsysteem aanwezig in de raket welke deze taken overnam, echter draaide dit systeem op dezelfde software en binnen een fractie van een seconde crashte dus ook de backupsystemen. Naderhand is gebleken dat het hierbij ging om het omzetten van een 64-bit floating point variabele naar een 16-bit signed integer. Hierbij is het natuurlijk van belang dat er word gekeken of de floating point variabele niet hoger ligt dan de maximale representeerbare waarde voor de integer. Deze functionaliteit scheen ook ingebouwd te zijn geweest, maar is deze functionaliteit is later voor de betreffende variabele weggelaten voor extra efficientie. Dankzij deze overflow crashte dus het systeem wat de bijdraaiing van de raket regelde waardoor deze uit balans raakte, dit werd door het zelfvernietigingsmechanisme herkend waardoor de raket met peperdure satellieten en al dus ontplofte.

Verbeterpunten

De grote fout in dit project is dus dat er een "blind assumption" is gedaan. Het oude systeem is gewoon overgenomen en men is er van uit gegaan dat dit met enkel de toegebrachte aanpassingen wel zou werken, ook al versnelde deze nieuwe raket vele malen sneller. Ook is er kennelijk blind vanuit gegaan dat de variabelen nooit zouden overflowen, want de rangechecks waren voor de variabele weggehaald om de load op het systeem te verlagen. Al met al is het falen van dit project dus een samenloop van het klakkeloos hergebruiken van een oud systeem, gebrek aan tests en blind assumptions. In dit geval ging het om een onbemande raket en was er enkel materiële schade en financiële schade, maar fouten als deze in software engineering zullen op deze manier voor hetzelfde geld ook mensenlevens gaan kosten.

Referenties

http://www.di.unito.it/~damiani/ariane5rep.html

http://www.around.com/ariane.html

http://people.cs.clemson.edu/~steve/Spiro/arianesiam.htm

http://archive.eiffel.com/doc/manuals/technology/contract/ariane/