This commit is contained in:
Markus
2025-06-21 10:32:06 +02:00
parent 0e409a5356
commit f11337f4a4
23 changed files with 5882 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

0
Ressourcen/Anfang.bbl Normal file
View File

5
Ressourcen/Anfang.blg Normal file
View File

@@ -0,0 +1,5 @@
[0] Config.pm:308> INFO - This is Biber 2.20
[0] Config.pm:311> INFO - Logfile is 'Anfang.blg'
[125] biber-MSWIN64:340> INFO - ===
[565] Utils.pm:410> ERROR - Cannot find 'Anfang.bcf'!
[565] Biber.pm:136> INFO - ERRORS: 1

2270
Ressourcen/Anfang.log Normal file

File diff suppressed because it is too large Load Diff

228
Ressourcen/Anfang.tex Normal file
View File

@@ -0,0 +1,228 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% EINSTELLUNGEN
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\KOMAoptions{parskip=full}
% Seitenränder:
\newcommand{\SeitenrandOben}{25.8mm}
\newcommand{\SeitenrandRechts}{21mm}
\newcommand{\SeitenrandLinks}{40mm}
\newcommand{\SeitenrandUnten}{24.8mm}
\newcommand{\FusszeileHoehe}{11.7mm}
\usepackage[a4paper,
head=\SeitenrandOben,
top=\SeitenrandOben,
bottom=\SeitenrandUnten,
inner=\SeitenrandLinks,
outer=\SeitenrandRechts
]{geometry}
% Fußzeilen:
\setlength{\footheight}{\FusszeileHoehe}
\clearscrheadfoot
\ifoot*{\Thema\vfill}
\ofoot*{\pagemark\vfill}
\setkomafont{pageheadfoot}{\fontsize{9pt}{13pt}\normalfont}
\setkomafont{pagefoot}{\bfseries}
\setkomafont{pagenumber}{\normalfont}
\pagestyle{scrheadings}
% Fußnoten:
\KOMAoptions{%
footnotes=multiple % mehrere Fußnoten werden durch Zeichen getrennt
}
%\setfootnoterule[.6pt]{5.08cm}
\renewcommand{\footnoterule}{\hrule width 5.08cm height .6pt \vspace*{3.9mm}}
%\setlength{\footnotesep}{5mm}
\deffootnote{2mm}{2mm}{%
\makebox[2mm][l]{\textsuperscript{\thefootnotemark}}%
}
\setkomafont{footnoterule}{\fontsize{9pt}{20pt}\selectfont}
% Überschriften:
\KOMAoptions{%
open=any, % keine Festlegung auf linke oder rechte Seite
numbers=noendperiod, % kein automatischer Punkt nach Gliederungsnummer
headings=small
}
\makeatletter
\g@addto@macro{\@afterheading}{\vspace{-\parskip}} % \parskip nach Gliederungsbefehlen entfernen
\renewcommand*{\chapterheadstartvskip}{\vspace{\@tempskipa}\vspace{-3pt}} % Korrektur für Abstand über Kapitelüberschriften
\makeatother
\setkomafont{disposition}{\normalfont\sffamily}
\setkomafont{chapter}{\normalfont\fontsize{19pt}{22pt}\selectfont}
\RedeclareSectionCommand[%
beforeskip=0pt,
afterskip=29pt,
]{chapter}
\renewcommand*{\chapterformat}{\thechapter.\enskip} % Immer Punkt nach Kapitelnummer
\setkomafont{section}{\fontsize{15pt}{17pt}\selectfont}
\RedeclareSectionCommand[%
beforeskip=0pt,
afterskip=24.1pt
]{section}
\renewcommand*{\sectionformat}{\makebox[13mm][l]{\thesection.\enskip}} % Feste Breite für Abschnittsnummer und immer Punkt danach
\setkomafont{subsection}{\bfseries\fontsize{12pt}{13pt}\selectfont}
\RedeclareSectionCommand[%
beforeskip=0pt,
afterskip=1pt
]{subsection}
\renewcommand*{\subsectionformat}{\makebox[13mm][l]{\thesubsection.\enskip}} % Feste Breite für Unterabschnittsnummer und immer Punkt danach
% Listen:
\setlist{%
labelsep=0mm,
itemindent=0pt,
labelindent=0pt,
align=left,
parsep=1.5ex
}
\setlist[itemize]{%
leftmargin=5mm,
labelwidth=4.9mm
}
\setlist[itemize,1]{%
before={\vspace{0.25ex}},
label={\raisebox{.35ex}{\smaller[2]\textbullet}},
after={\vspace{-\parsep}\vspace{-.25ex}}
}
\setlist[itemize,2]{%
label={\raisebox{.35ex}{\rule{.58ex}{.58ex}}}
}
\setlist[enumerate]{%
leftmargin=10mm,
labelwidth=9.9mm
}
\setlist[enumerate,2]{%
label={\alph*.}
}
\setlist[description]{%
% labelindent=!,
leftmargin=1em,
labelwidth=!,
parsep=0mm,
partopsep=0mm,
labelsep=1em,
}
% Verzeichnisse:
\KOMAoptions{%
toc=flat, % keine Einrückungen im Inhaltsverzeichnis
%toc=graduated, finde ich schöner!!!
toc=chapterentrydotfill, % Punkte bis zur Seitennummer bei Kapiteln
listof=entryprefix, % Präfix für Einträge in Abbildungs- und Tabellenverzeichnis
listof=nochaptergap, % Kein Abstand für Kapiteleinträge in extra Verzeichnissen
}
\makeatletter
\renewcommand{\@dotsep}{.3} % Abstand der Füllpunkte
% "chapteratlist" für Inhaltsverzeichnis auswerten:
\renewcommand*{\addchaptertocentry}[2]{%
%\Iftocfeature{toc}{chapteratlist}{}{%
\addtocontents{toc}{\protect\vspace{-10pt}}% extra Abstand vor Kapitelüberschriften in Inhaltsverzeichnis entfernen
%}%
% Originaldefinition aus scrbook.cls:
\addtocentrydefault{chapter}{#1}{#2}%
\if@chaptertolists
\doforeachtocfile{%
\Iftocfeature{\@currext}{chapteratlist}{%
\addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}%
}{}%
}%
\@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}%
\fi%
}
\makeatother
\AfterTOCHead[toc]{\protect\vspace{.8ex}} % Abstand zwischen Überschrift und Inhaltsverzeichnis
\setuptoc{toc}{noparskipfake} % Angleichung der Abstände nach Inhaltsverzeichnisüberschrift an andere Überschriften
\unsettoc{toc}{chapteratlist} % kein Abstand vor Kapiteleinträgen im Inhaltsverzeichnis, funktioniert nur durch obige Redefinition von \addchaptertocentry
% -- Abbildungs- und Tabellenverzeichnis:
\AfterTOCHead[lof]{\protect\vspace{-.1ex}\doublespacing} % Abstand zwischen Überschrift und Abbildungsverzeichnis, doppelter Zeilenabstand
\setuptoc{lof}{noparskipfake} % Angleichung der Abstände nach Abbildungsverzeichnisüberschrift an andere Überschriften
\AfterTOCHead[lot]{\protect\vspace{-.1ex}\doublespacing} % Abstand zwischen Überschrift und Tabellenverzeichnis, doppelter Zeilenabstand
\setuptoc{lot}{noparskipfake} % Angleichung der Abstände nach Tabellenverzeichnisüberschrift an andere Überschriften
% Beschriftungen:
\DeclareCaptionFormat{WissenschaftlicheArbeiten}{\fontsize{8pt}{10pt}\selectfont#1 #2#3\par}
\DeclareCaptionLabelFormat{WissenschaftlicheArbeiten}{\bfseries\selectfont#1 #2}
% -- Tabellen:
\captionsetup[table]{%
format=WissenschaftlicheArbeiten,
labelformat=WissenschaftlicheArbeiten,
labelsep=none,
singlelinecheck=off,
justification=raggedright,
%margin=6pt,
skip=3pt
}
% -- Abbildungen:
\captionsetup[figure]{%
format=WissenschaftlicheArbeiten,
labelformat=WissenschaftlicheArbeiten,
labelsep=none,
singlelinecheck=off,
justification=raggedright,
skip=6.6mm
}
% Tabellen:
\renewcommand{\arraystretch}{1.8} % Skalierung der Tabellen
\newcolumntype{M}{X<{\vspace{4pt}}} % Spaltentyp mit Abstand rechts
% Glossare & Abkürzungsverzeichnis:
\makeglossaries
%\input{Abkuerzungen.tex}
\setacronymstyle{short-long}
\makeatletter
\newlength{\@glsdotsep}
\setlength{\@glsdotsep}{\@dotsep em}
\newcommand*{\glsdotfill}{\leavevmode \cleaders \hb@xt@ \@glsdotsep{\hss .\hss }\hfill \kern \z@}
\makeatother
\newglossarystyle{WissenschaftlicheArbeiten}{%
\setglossarystyle{index}%
\renewcommand*{\glossaryheader}{\vspace{.75em}}%
\renewcommand*{\glstreenamefmt}[1]{##1}%
\renewcommand*{\glossentry}[2]{%
\item\glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
\ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
\space-\space\glossentrydesc{##1}\glsdotfill\glspostdescription\space ##2%
}%
\renewcommand*{\glsgroupheading}[1]{%
\item\glstreenamefmt{\textbf{\fontsize{14}{17}\selectfont\enskip\glsgetgrouptitle{##1}}}\vspace{.3em}}%
}
\setglossarystyle{WissenschaftlicheArbeiten}

BIN
Ressourcen/Desert.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 KiB

0
Ressourcen/Praeambel.bbl Normal file
View File

5
Ressourcen/Praeambel.blg Normal file
View File

@@ -0,0 +1,5 @@
[0] Config.pm:308> INFO - This is Biber 2.20
[0] Config.pm:311> INFO - Logfile is 'Praeambel.blg'
[129] biber-MSWIN64:340> INFO - ===
[567] Utils.pm:410> ERROR - Cannot find 'Praeambel.bcf'!
[568] Biber.pm:136> INFO - ERRORS: 1

1096
Ressourcen/Praeambel.log Normal file

File diff suppressed because it is too large Load Diff

108
Ressourcen/Praeambel.tex Normal file
View File

@@ -0,0 +1,108 @@
\documentclass[%
fontsize=11pt, % Schriftgröße
twoside=off % kein einseitiges Layout
]{scrbook} % Dokumentenklasse: KOMA-Script Book
\usepackage{scrlayer-scrpage} % Anpassbare Kopf- und Fußzeilen
\usepackage[utf8]{inputenc} % Textkodierung: UTF-8
\usepackage[T1]{fontenc} % Zeichensatzkodierung
\usepackage[ngerman]{babel} % Deutsche Lokalisierung
\usepackage{graphicx} % Grafiken
% Schriftart Helvetica:
\usepackage[scaled]{helvet}
\renewcommand{\familydefault}{\sfdefault}
% Silbentrennung:
\usepackage{hyphenat}
\hyphenation{TUM in-te-res-siert} % Eigene Silbentrennung
%\tolerance 2414
%\hbadness 2414
%\emergencystretch 1.5em
%\hfuzz 0.3pt
%\widowpenalty=10000 % Hurenkinder
%\clubpenalty=10000 % Schusterjungen
%\vfuzz \hfuzz
\usepackage[hidelinks]{hyperref} % Hyperlinks
\usepackage[onehalfspacing]{setspace} % 1,5facher Zeilenabstand
\usepackage{calc} % Berechnungen
\usepackage{enumitem} % Mehr Kontrolle über itemize-, enumerate- und description-Umgebungen
% HIER BEGINNT DIE ERGÄNZUNG FÜR BIBLATEX
% --------------------------------------------------------------------
% Für korrekte Anführungszeichen bei Zitaten (von biblatex empfohlen)
\usepackage{csquotes}
% Paket für Literaturverwaltung mit biber
\usepackage[
backend=biber,
style=iso-authoryear, % Ihr gewünschter Zitierstil
abbreviate=false,
pagetracker=true, % ebd. bei wiederholten Angaben
maxbibnames=50, % max. Namen im Literaturverzeichnis
maxcitenames=3, % max. Namen im Text
autocite=footnote, % \autocite wird zur Fußnote
block=space,
backref=false,
date=short
]{biblatex}
% Geben Sie hier den Namen Ihrer .bib-Datei an
% Stellen Sie sicher, dass die Datei "literatur.bib" im selben Ordner wie Ihre .tex-Hauptdatei liegt.
\addbibresource{literatur.bib}
% --------------------------------------------------------------------
% ENDE DER ERGÄNZUNG FÜR BIBLATEX
% Zusätzliche iegene Pakete
\usepackage{subcaption}
\usepackage[absolute]{textpos} % Für die textblock-Umgebung des Titelblatts
%
\usepackage{relsize} % Schriftgröße in Abhängigkeit von aktueller anpassen
\usepackage{tabularx} % Flexiblere Tabellen
\usepackage[tablewithout, figurewithout]{caption} % Anpassen von Beschriftungen
% Nummerierung von Abbildungen & Tabellen durchgängig, statt nach Kapiteln:
\usepackage{chngcntr}
\counterwithout{figure}{chapter}
\counterwithout{table}{chapter}
% Abkürzungen, Glossare:
\usepackage[%
xindy,% xindy zum Indexieren verwenden
acronym,% Separates Akronym-Verzeichnis
nopostdot,% Kein Punkt am Ende einer Beschreibung im Glossar
]{glossaries}
% Spezielle Befehlsdefinitionen:
\newcommand{\Thema}{}
\usepackage{bookmark} % Lesezeichen
% Unterdrückung layoutbedingter Warnungen
\usepackage[immediate]{silence}
\WarningFilter[layout]{latex}{Reference `LastPage'} % Gesamtseitenzahl
\WarningFilter[layout]{lastpage}{Rerun to get the references right} % Gesamtseitenzahl
\WarningFilter[layout]{latex}{Label(s) may have changed.} % Referenz auf letzte Seite
\WarningFilter[layout]{textpos}{environment textblock* not in vertical mode} % Positionierung Seitenzahl
\WarningFilter[layout]{scrbook}{Change of } % Fußnoten-Trennzeichen im Text
\WarningFilter[layout]{tocbasic}{number width of} % Nummerbreite im Inhaltsverzeichnis
\WarningFilter[layout]{pdfTeX}{name{glo:abk} has been referenced but does not exist, replaced by a fixed one}
% Debugging:
%\DeactivateWarningFilters[layout] % Unterdrückte Warnungen einschalten
%\usepackage{showframe} % Layout-Boxen anzeigen
%\usepackage{layout} % Layout-Informationen
%\usepackage{printlen} % Längenwerte ausgeben

View File

@@ -0,0 +1,24 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (MiKTeX 25.3) (preloaded format=pdflatex 2025.6.19) 20 JUN 2025 02:34
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**./TitelseiteErklareungSeite.tex
(TitelseiteErklareungSeite.tex
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-03-26>
)
! Emergency stop.
<*> ./TitelseiteErklareungSeite.tex
*** (job aborted, no legal \end found)
Here is how much of TeX's memory you used:
30 strings out of 469959
877 string characters out of 5469350
423121 words of memory out of 5000000
26921 multiletter control sequences out of 15000+600000
626825 words of font info for 40 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
12i,0n,13p,211b,8s stack positions out of 10000i,1000n,20000p,200000b,200000s
! ==> Fatal error occurred, no output PDF file produced!

View File

@@ -0,0 +1,75 @@
%% Ressourcen/titelseiten_befehle.tex
%%
%% HIER WERDEN DIE BEFEHLE ZUR ERZEUGUNG DES TITELBLATTS UND DER ABSCHLUSSERKLÄRUNG DEFINIERT.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% --- Befehl zum Erstellen des Titelblatts ---
% Dieser Befehl verwendet die Daten aus "titelseiten_daten.tex"
\newcommand{\maketumtitle}{%
\begin{titlepage}
\KOMAoptions{parskip=half}\pagestyle{empty}
\newgeometry{top=43.5mm,bottom=10mm,inner=20mm,outer=20mm,foot=0cm,head=0cm}
\textblockorigin{20mm}{43.5mm}
\begin{textblock*}{\textwidth}[1,0](\textwidth-1mm, 2cm-43.5mm)%
\raggedleft\includegraphics[width=19mm]{./Ressourcen/Universitaet_Logo_RGB.pdf}%
\end{textblock*}
\begin{textblock*}{\textwidth}[0,0](0cm, 0cm)%
{\fontsize{24pt}{26pt}\selectfont\textbf{\Titel}} \\
\vspace*{14pt}
{\fontsize{18pt}{27pt}\selectfont\textbf{\Untertitel}}
\end{textblock*}
\vspace*{92.2mm}
\fontsize{15pt}{17.5pt}\selectfont%
Technische Universität München \\
TUM School of Computation, Information and Technology \\
Scientific Computing in Computer Science
\renewcommand{\baselinestretch}{1.47}\normalsize\selectfont
\vspace*{17.1mm}
\textbf{Betreut von}\quad
\begin{minipage}[t]{\dimexpr\textwidth-4cm\relax}
\BetreutVonPerson\\\BetreutVonLehrstuhl\strut
\end{minipage}
\vspace*{4.3mm}
\textbf{Eingereicht von}\quad
\begin{minipage}[t]{\dimexpr\textwidth-4cm\relax}
\EingereichtVon
\end{minipage}
\textbf{Eingereicht am}\quad
\begin{minipage}[t]{\dimexpr\textwidth-4cm\relax}
München, den \Datum\strut
\end{minipage}
\restoregeometry
\end{titlepage}
}
% --- Befehl zum Erstellen der Erklärung (mit Namen als Argument) ---
\newcommand{\makeeidesstattlicheerklaerung}[2]{%
\cleardoublepage
\thispagestyle{empty}\KOMAoptions{parskip=half}
\newgeometry{top=43.5mm,bottom=10mm,inner=20mm,outer=20mm,foot=0cm,head=0cm}
\vspace*{-15.8mm}
{\fontsize{19pt}{21pt}\selectfont #1\par}
\vspace{25.3mm}
{\fontsize{18pt}{20.5pt}\selectfont Erklärung\par}
\vspace{13.2mm}
\normalsize\selectfont
Ich versichere hiermit, dass ich die von mir eingereichte Abschlussarbeit selbstständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe.
\vspace{18.1mm}
\rule[-3.7mm]{\linewidth}{0.5pt}
\Ort, \Datum, #2, Unterschrift
\restoregeometry
}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
Ressourcen/start_t_0s.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
Ressourcen/start_t_36s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
Ressourcen/start_t_39s.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

BIN
SoftwareFehlerAriane5.pdf Normal file

Binary file not shown.

348
SoftwareFehlerAriane5.tex Normal file
View File

@@ -0,0 +1,348 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Nach TUM-Vorlage: Wissenschaftliche Arbeit: Softwarefehler der Ariane 5
% B.Sc. Seminar Analyse von Softwarefehlern
% Technische Universität München
% TUM School of Computation, Information and Technology
% Scientific Computing in Computer Science
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Titel}{%
Softwarefehler der Ariane 5}
\newcommand{\Untertitel}{%
B.Sc. Seminar Analyse von Softwarefehlern}
\newcommand{\BetreutVonPerson}{%
TODO}
\newcommand{\BetreutVonLehrstuhl}{%
Scientific Computing in Computer Science}
\newcommand{\EingereichtVon}{%
TODO\\
TODO}
\newcommand{\EingereichtAmDatum}{%
27. Juni 2025}
\newcommand{\Ort}{%
München}
\newcommand{\Datum}{%
27. Juni 2025}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{./Ressourcen/Praeambel.tex} % !!! NICHT ENTFERNEN !!!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\renewcommand{\Thema}{%
% Thema der Arbeit (optional)}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{./Ressourcen/Anfang.tex} % !!! NICHT ENTFERNEN !!!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TITELSEITEN-DATEN UND BEFEHLE LADEN (NEU)
% --------------------------------------------------------------------
\input{./Ressourcen/TitelseiteErklareungSeite.tex}
% --------------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\title{Thema der Arbeit}
\author{Martin Mustermann}
\date{Datum}
% TITELBLATT HIER EINFÜGEN
% --------------------------------------------------------------------
\frontmatter
\maketumtitle
% --------------------------------------------------------------------
% HAUPTTEIL DER ARBEIT
% --------------------------------------------------------------------
\mainmatter % <-- Schaltet auf normale arabische Zahlen (1, 2, 3) um und setzt den Zähler auf 1.
\tableofcontents % Inhaltsverzeichnis
\chapter{Technischer Fortschritt und seine Grenzen: Der Fall Ariane }
Die europäische Raumfahrt hat in den letzten Jahrzehnten beeindruckende wissenschaftliche Erfolge erzielt. Die Rosetta-Mission entdeckte 2014 Aminosäuren auf einem Kometen - potentielle Bausteine des Lebens.
\autocite[vgl.][]{zeit-rosetta-erfolg}
Das James-Webb-Weltraumteleskop liefert seit seinem Start im Jahr 2021 beispiellose Einblicke in die Frühzeit des Universums, und ab 2031 wird die JUICE-Mission erstmals das Jupiter System im Detail erforschen - mit dem Ziel, Lebensspuren außerhalb der Erde zu finden. Solche Leistungen wären ohne leistungsfähige und zuverlässige Trägerraketen undenkbar. Die Ariane 5 entwickelte sich mit über 100 erfolgreichen Starts zu einer der verlässlichsten Raketen der Welt. Doch ihr Programm begann mit einem der spektakulärsten Fehlschläge der Raumfahrtgeschichte.
\autocite[vgl.][Ariane 5]{wiki-ariane5}
\begin{figure}[h!]
\centering
\begin{subfigure}[b]{0.3\textwidth}
\centering
\includegraphics[width=\textwidth]{./Ressourcen/start_t_0s.jpg}
\caption{TODO:Image 1}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.3\textwidth}
\centering
\includegraphics[width=\textwidth]{./Ressourcen/start_t_36s.png}
\caption{TODO: Image 2}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.3\textwidth}
\centering
\includegraphics[width=\textwidth]{./Ressourcen/start_t_39s.jpg}
\caption{TODO: Image 3}
\end{subfigure}
\caption{TODO:}
\label{fig:three_images}
\end{figure}
Am 4. Juni 1996 sollte die Ariane 5 zum ersten Mal starten. Der Countdown verlief zunächst planmäßig. Um 12:33:59 UTC zündeten die Triebwerke, und die Rakete hob ab. Doch bereits 37 Sekunden nach dem Start begann die Rakete plötzlich stark von ihrer vorgesehenen Flugbahn abzuweichen, was zu extremen aerodynamischen Belastungen führte. Bei etwa 3.700m Höhe zerbrach sie in der Luft und eine automatische Selbstzerstörung wurde ausgelöst.
Die Ursache war kein mechanischer Defekt, sondern ein Fehler in der Software des Inertialreferenzsystems (SRI). Ein Konvertierungsfehler führte dazu, dass eine kritische Variable den maximal darstellbaren Zahlenbereich überschritt. Dadurch wurde eine sogenannte Operand Error-Ausnahme ausgelöst, wodurch sowohl das aktive als auch das redundante System fast gleichzeitig ausfielen. Die Flugsteuerung erhielt daraufhin fehlerhafte Daten und leitete ein falsches Korrekturmanöver ein, das letztlich zum Absturz führte.
Diese Ausarbeitung widmet sich der detaillierten Analyse dieses Softwarefehlers - einem Lehrbeispiel für systematische Fehler, unzureichende Tests und den Umgang mit Ausnahmen in sicherheitskritischer Software.
\autocite[vgl.][TODO SEITENNUMMER]{bits-and-bugs}
\chapter{Ariane 5 - Eine neue Ära}
Die Europäische Weltraumorganisation (ESA) - ist eine internationale Organisation 23 europäischer Staaten für die Koordinierung und den Betrieb gemeinsamer Raumfahrtaktivitäten. Sie wurde 1975 gegründet, um Europa technisch und politisch unabhängiger von den Raumfahrtnationen Sowjetunion und USA zu machen.
Das Ariane-Projekt trug maßgeblich dazu bei, dass die Krise in der europäischen Raumfahrt überwunden werden konnte. Ziel war die Entwicklung einer Trägerrakete, die hinsichtlich Leistungsfähigkeit und Zuverlässigkeit mit den US-amerikanischen Modellen konkurrieren kann. Sie sollte in der Lage sein, kommerzielle Satelliten sowohl in niedrige Erdorbits (LEO) als auch in geostationäre Umlaufbahnen (GEO) zu transportieren.
\autocite[vgl.][Europäische Weltraumorganisation]{wiki-esa}
\autocite[vgl.][Geschichte der Ariane-Raketen]{planetwissen-geschichte-ariane}
Vor dem Hintergrund eines ehrgeizigen Weltraumplans entschlossen sich die ESA Mitgliedstaaten im November 1987, eine neue Generation der Trägerfamilie auf den Weg zu bringen: Ariane 5. Die neue Schwerlastrakete war ausgelegt, um sowohl den Markt des kommerziellen Satellitentransports zu bedienen als auch zur Versorgung der geplanten amerikanischen Raumstation \glqq Freedom\grqq, aus der später die Internationale Raumstation ISS hervorging, beizutragen. Seither sind viele Satelliten der Europäischen Weltraumorganisation ESA oder europäischer Institutionen mit Ariane gestartet worden. Ariane 5 garantiert Europa heute den autonomen Weltraumzugang, von dem alle europäischen Staaten, aber auch große Wirtschaftszweige profitieren.
\autocite[vgl.][Ariane 5]{dlr-ariane5-arbeitspferd}
Jeder Start einer Ariane 5 in Kourou ist ein imposantes Ereignis. Die 50 Meter hohe Rakete verbrennt allein in ihrer Zentralstufe 155 Tonnen Wasserstoff und Sauerstoff. Dazu kommen die Feststoffbooster an der Seite, die nur zwei Minuten lang brennen und dann abgeworfen werden.
Die Ariane 5 ist robuster als alle vorherigen Versionen. Sie besitzt zwei Stufen und hat zwei Triebwerke.
Das \glqq Vulcain\grqq-Triebwerk verbrennt flüssigen Treibstoff. Während seiner Brenndauer von zehn Minuten verlässt die Rakete die Atmosphäre.
Das \glqq Aestus\grqq-Triebwerk bringt innerhalb von 25 Minuten die Rakete auf eine Geschwindigkeit von $28.000$ km/h. Das reicht aus, um einen Satelliten auf eine geostationäre Umlaufbahn zu bringen.
\autocite[vgl.][Geschichte der Ariane-Raketen]{planetwissen-geschichte-ariane}
Die Ariane 4 wurde in verschiedenen Versionen mit unterschiedlichen Nutzlasten entwickelt: von 2.290 kg bis 4.950 kg für das Erreichen der geostationären Umlaufbahn bzw. von 4.600 kg bis 10.200 kg für die niedrige Erdumlaufbahn. Um eine höhere Nutzlast zu ermöglichen, sah der Plan für die Ariane 5 von 1987 eine Nutzlast von 6.100 kg geostationären Umlaufbahn bzw. 18.000 kg niedrige Erdumlaufbahn vor.
\autocite[vgl.][Abschnitt 2, 2.1.2 Introduction]{bits-and-bugs}
Trotz dieser großen Ziele endete der Erstflug mit einem folgenreichen Fehlschlag, dessen genaue Analyse im Anschluss erfolgte.
%3.
\chapter{Untersuchung des Fehlers}
Der Absturz der Ariane 5 am 4. Juni 1996 zog eine unmittelbare Untersuchung nach sich. Um die genauen Ursachen des Fehlschlags zu ermitteln, setzte der Generaldirektor der Europäischen Weltraumorganisation (ESA) gemeinsam mit dem Vorsitzenden des Centre National d'Études Spatiales (CNES) wenige Tage nach dem Vorfall einen unabhängigen Untersuchungsausschuss (Inquiry Board) ein. Dieser Ausschuss unter dem Vorsitz von Prof. Jacques-Louis Lions nahm seine Arbeit am 13. Juni 1996 auf. Seine Aufgabe war es laut Mandat, die genauen Ursachen des Fehlschlags zu ermitteln und Korrekturmaßnahmen zu empfehlen, um die festgestellten Fehlerquellen zu beseitigen.
%\autocite[vgl.][Foreword, S. 2f.]{lions-ariane5-report-1996}
%3.1
\section{Datensicherung und verfügbare Informationen}
Die Grundlage für die Analyse bildete eine Reihe von Datenquellen, die während des kurzen Fluges gesammelt wurden. Dem Untersuchungsausschuss standen dabei mehrere Hauptinformationsquellen zur Verfügung: Telemetriedaten, die von der Rakete bis ca. 42 Sekunden nach dem Start an die Bodenstation übertragen wurden und direkte Einblicke in den Zustand der Bordsysteme lieferten, Radardaten von Bodenstationen, die die externe Bewegung der Rakete verfolgten, sowie optische Aufzeichnungen in Form von visuellem Material von Infrarotkameras und Filmaufnahmen, das den Flugverlauf und die Explosion dokumentierte.
Ein entscheidender Faktor für den Erfolg der Untersuchung war darüber hinaus der frühe Zeitpunkt des Absturzes. Da die Rakete in einer Höhe von nur etwa 3.700 Metern und in der Nähe des Startplatzes zerbrach, fielen die Trümmer in einem relativ begrenzten Gebiet von circa 12 km² östlich der Startrampe nieder. Trotz der schwierigen Bergungsbedingungen in einem Gebiet, das größtenteils aus Mangrovensümpfen und Savanne besteht, gelang es den Teams, kritische Hardwarekomponenten zu sichern.
\autocite[vgl.][S. 1ff.]{lions-ariane5-report-1996}
Bedeutend dabei war die Bergung der beiden Inertialreferenzsysteme (SRI). Das SRI speicherte den genauen Fehlerkontext in einem nichtflüchtigen Speicher (EEPROM). Die Auswertung dieser geborgenen Einheit war für die präzise Rekonstruktion der Fehlerkette entscheidend, da wichtige diagnostische Informationen nicht mehr über die Telemetrie an den Boden gesendet werden konnten, nachdem der erste Systemausfall auftrat.
%\autocite[vgl.][Foreword, S. 5]{lions-ariane5-report-1996}
\footnote{vgl. a. a. O, S. 5}
Die Kombination aus Telemetriedaten, externen Beobachtungen und der physischen Analyse der geborgenen Hardware ermöglichte es dem Ausschuss, die Ereignisse mit hoher Genauigkeit zu rekonstruieren und die Ursache des Fehlers eindeutig zu identifizieren.
\section{Inertial Reference System und der On Board Computer der Ariane 5}
Das Flugsteuerungssystem der Ariane 5 ist im Allgemeinen standardisiert. Die Lage der Trägerrakete und ihre Bewegungen im Raum werden von einem Inertialreferenzsystem (SRI) gemessen. Es verfügt über einen eigenen internen Computer, der Winkel und Geschwindigkeiten anhand von Informationen einer fest installierten Trägheitsplattform mit Laserkreiseln und Beschleunigungsmessern berechnet. Die Daten des SRI werden über den Datenbus an den Bordcomputer übertragen, der das Flugprogramm ausführt.
Um die Zuverlässigkeit zu verbessern, wurde auf der Geräteebene eine erhebliche Redundanz geschaffen. Zwei SRIs arbeiten parallel mit identischer Hard- und Software. Ein SRI ist aktiv, das andere befindet sich im Standby-Modus. Stellt der OBC einen Ausfall des aktiven SRI fest, schaltet er sofort auf das andere um, sofern dieses ordnungsgemäß funktioniert. Es gibt auch zwei OBCs, und mehrere weitere Einheiten des Flugsteuerungssystems sind dupliziert.
Das Bordleitsystem verfolgt ständig die Flugbahn der Rakete und sendet die Daten an den Hauptflugcomputer. Dazu wandelt das Leitsystem die Geschwindigkeitswerte von 64-Bit-Gleitkommazahlen in 16-Bit-Ganzzahlen um.
\autocite[vgl.][Abschnitt 2.1, S. 7]{lions-ariane5-report-1996}
\section{Der Operand Error}
\subsection{Darstellung von Ganzzahlen}
Genau bei dieser in Abschnitt 3.2 erwähnten Umwandlung von Zahlenformaten lag die Wurzel des Problems. Um die Wirkung dieses Schrittes nachzuvollziehen, ist ein grundlegendes Verständnis der Zahlendarstellung notwendig. Computer sind elektronische Geräte, die auf elektrischen Schaltern basieren, welche sich jeweils in einem von zwei Zuständen befinden können. Daher basieren alle Computer auf dem binären Zahlensystem, das ausschließlich die Ziffern 0 und 1 akzeptiert. Eine einzelne Stelle, die entweder den Wert 0 oder 1 annehmen kann, wird als Bit bezeichnet, 8 Bit ergeben ein Byte.
Jedes Zeichen, jedes Wort und jede Zahl muss durch eine endliche Folge von Bits, also durch eine Kombination aus Nullen und Einsen, dargestellt werden. Für eine ganze Zahl k wird die binäre Darstellung gebildet, indem man k als eindeutige Summe von Zweierpotenzen schreibt.
Da ganze Zahlen theoretisch beliebig groß werden können, muss festgelegt werden, wie viele Bits für die Darstellung einer Zahl im Computer verwendet werden sollen. Diese festgelegte Bitanzahl begrenzt den Bereich der darstellbaren Ganzzahlen. Verwendet man beispielsweise 8 Bit, so können insgesamt $2^{8} = 256$ verschiedene Zahlen kodiert werden.
Da in vielen Anwendungen sowohl positive als auch negative Zahlen erforderlich sind, muss eine geeignete binäre Repräsentation gewählt werden, um alle 256 Bitkombinationen einem entsprechenden Zahlenintervall zuzuordnen.
\autocite[vgl.][Abschnitt 2, Detailed Description of the Bug, Excursion 1]{bits-and-bugs}
Eine Möglichkeit wäre, ein Bit ausschließlich zur Darstellung des Vorzeichens zu verwenden. Dies hätte jedoch den Nachteil, dass der Wert 0 in zwei verschiedenen Bitfolgen kodiert werden könnte - eine mehrdeutige Darstellung, die vermieden werden sollte.
Bei einer 16-Bit-Darstellung im Zweierkomplement ergibt sich beispielsweise ein darstellbarer Bereich von $-32.768$ bis $32.767$. Bei arithmetischen Operationen kann es jedoch vorkommen, dass das Ergebnis diesen Bereich verlässt. Aus mathematischer Sicht würde das Addieren von $1$ zu $32.767$ das Ergebnis $32.768$ ergeben. Dieses liegt allerdings außerhalb des durch 16 Bit darstellbaren Bereichs - das sogenannte Integer Overflow tritt auf.
Abhängig vom Compiler und der verwendeten Programmiersprache kann es in manchen Fällen auch vorkommen, dass ein Ergebnis mit mehr als 16 Bit gespeichert wird. Dies kann dazu führen, dass benachbarte Speicherbereiche überschrieben werden, was wiederum zu nicht vorhersehbarem Verhalten des Programms führen kann. In solchen Fällen kann es vorkommen, dass eine andere Variable oder ein Programmteil überschrieben wird, was eine korrekte Programmausführung verhindert.
\autocite[vgl.][Abschnitt 2, Detailed Description of the Bug, Excursion 1]{bits-and-bugs}
\subsection{Darstellung von Kommazahlen}
\vspace{5.0mm}
\begin{figure}[!ht]
%\textsc{•}
%\noindent
\hspace{0.5mm}
\includegraphics[width=15cm]{./Ressourcen/fließkommazahlen_darstellung.png}
\caption{TODO: Titel, Autor}
\end{figure}
Bei Gleitkommazahlen mit double precision ermöglichen drei Schlüsselkomponenten eine präzise numerische Darstellung: das Vorzeichenbit (Sign), der Exponent und die Mantisse (Fraction). Das Vorzeichenbit ist unkompliziert; es bestimmt die Polarität der Zahl, wobei 0 für positiv und 1 für negativ steht. Der aus 11 Bit bestehende Exponent verwendet einen Bias von 1023, um sowohl positive als auch negative Exponenten verarbeiten zu können. Diese Bias-Technik ermöglicht einen großen Wertebereich und erleichtert Berechnungen über verschiedene Skalen hinweg. Die 52-Bit-Mantisse erfasst die signifikanten Ziffern der Zahl und gewährleistet so die Präzision. Ein implizites Bit, angenommen als 1, verbessert die Effizienz der Mantisse, indem es die Zahlen in normalisierter Form darstellt. Jede Komponente spielt eine entscheidende Rolle beim Ausgleich von Bereich und Präzision. Die Struktur ermöglicht somit komplexe Berechnungen ohne übermäßige Rundungsfehler. Das Verständnis dieser Komponenten hilft zu verstehen, wie double precision die Genauigkeit bei Rechenaufgaben aufrechterhält und sie in wissenschaftlichen und technischen Anwendungen unverzichtbar macht.
\autocite[vgl.][Understanding Double Precision Floating Point]{wray-castle-fp}
\subsection{Transforming Machine Number Formats: Casts}
Um die Programmierung flexibler zu gestalten, bieten Programmiersprachen üblicherweise Maschinenzahlen mit unterschiedlichen Bitlängen an. Für Ganzzahlen werden die Datentypen int (32 Bit), long int (64 Bit) und short int (16 Bit) verwendet. Dabei ist zu beachten, dass diese Formate nicht eindeutig definiert sind. Für Gleitkommazahlen werden gemäß dem IEEE-754-Standard die Typen float (32 Bit: 1 Bit für das Vorzeichen, 8 Bit für den Exponenten, 23 Bit für die Mantisse) und double (64 Bit: 1 Bit für das Vorzeichen, 11 Bit für den Exponenten, 53 Bit für die Mantisse) verwendet.
Manchmal ist es sinnvoll, die Darstellung einer Zahl in einem bestimmten Programmteil von einem Format in ein anderes zu ändern. Eine solche Operation nennt man Cast. Casts erfolgen oft automatisch, indem float $x$ und int $n$ zu $x + n$ addiert werden. Beispielsweise wird die Zahl $n$ automatisch in das Float-Format umgewandelt, um die Addition für Float-Zahlen durchzuführen. Programmierer möchten oder müssen manchmal Speicherplatz sparen, indem sie ein long int in ein short int usw. umwandeln. Dies führt jedoch nur dann zu korrekten Ergebnissen, wenn der betrachtete Integer hinsichtlich seines tatsächlichen Werts in das short int-Format passt. So könnte man eine Variable $n=5$ vom Typ long int und $k$ vom Typ short int definieren und einen Cast mit dem Befehl $k := n$ ohne Informationsverlust anwenden; $n=61.000$ hingegen würde zu einem falsch umgewandelten Wert in $k$ führen.
\autocite[vgl.][Abschnitt 2, 2.1.4 Detailed Description of the Bug]{bits-and-bugs}
\subsection{Umgang mit Ausnahmen in der Softwareentwicklung}
In der Softwareentwicklung ist es notwendig, auf unvorhergesehene Ereignisse und Fehlerzustände vorbereitet zu sein. Moderne Programmiersprachen wie Ada, die für die Entwicklung der SRI-Software verwendet wurde, stellen hierfür Mechanismen zur Verfügung, die als Exception Handling (Ausnahmebehandlung) bekannt sind. Eine Ausnahme (Exception) ist ein Ereignis während der Programmausführung, das den normalen Programmfluss unterbricht, wie etwa eine Division durch null, ein Speicherzugriffsfehler oder, wie im Fall der Ariane 5, ein numerischer Überlauf.
Das Ziel des Exception Handlings ist es, solche Fehler kontrolliert abzufangen und zu behandeln, um einen unkontrollierten Programmabsturz zu verhindern und das System stattdessen in einen sicheren, definierten Zustand zu überführen. Ohne eine solche Behandlung würde ein Laufzeitfehler typischerweise zum sofortigen Abbruch des Programms führen, was in sicherheitskritischen Anwendungen wie der Luft- und Raumfahrt katastrophale Folgen haben kann.
\autocite[vgl.][Abschnitt 2, 2.1.4 Exception Handling and Protection of Operations]{bits-and-bugs}
\subsection{Der \glqq Operand Error\grqq in der Ariane-5-Software}
Der direkte technische Auslöser für den Ausfall der Inertialreferenzsysteme der Ariane 5 war ein sogenannter \glqq Operand Error\grqq. Diese Ausnahme trat während der Konvertierung eines internen Wertes auf: Eine 64-Bit-Gleitkommazahl, die den \glqq Horizontal Bias\grqq- eine für die Ausrichtung des Systems berechnete Größe, die mit der horizontalen Geschwindigkeit zusammenhängt - repräsentierte, sollte in einen 16-Bit-Signed Integer umgewandelt werden.
\autocite[vgl.][Abschnitt 2.1, S. 4]{lions-ariane5-report-1996}
Die Fehlerursache des Ariane-5-Absturzes lag in einem Softwaremodul, das vom Vorgängermodell Ariane 4 übernommen wurde. Dieses Modul war jedoch nicht auf die geänderten Flugparameter der Ariane 5 ausgelegt, die laut Untersuchungsbericht eine bis zu fünfmal schnellere horizontale Beschleunigung aufwies. Ein interner Wert, der die horizontale Geschwindigkeit darstellte, wurde von einem 64-Bit-Gleitkommaformat in einen vorzeichenbehafteten 16-Bit-Integer konvertiert. Aufgrund der höheren Geschwindigkeit überschritt dieser Wert den für einen 16-Bit-Integer darstellbaren Zahlenbereich von -32.768 bis 32.767.
Dieser als \glqq Integer Overflow\grqq bekannte Zustand löste einen \glqq Operand Error\grqq in der Hardware aus. Obwohl die verwendete Programmiersprache Ada Schutzmechanismen gegen solche Überlauffehler bietet, war diese Konvertierung extra ungeschützt gelassen worden. Eine Analyse des Codes hatte sieben kritische Variablenkonvertierungen identifiziert, von denen jedoch nur vier geschützt wurden. Die Entscheidung, die restlichen drei ungeschützt zu lassen, basierte auf einer Analyse für die Ariane 4, dass ein Überlauf nur durch \glqq nicht-physikalische Daten\glqq auftreten könne und man zudem Rechenleistung einsparen wollte. Diese Annahme war für die Ariane 4 korrekt, für die schnellere Ariane 5 jedoch nicht mehr.
\autocite[vgl.][S. 15f.]{bits-and-bugs}
Die Konsequenz dieser ungeschützten Konvertierung war, dass der Operand Error nicht innerhalb des Softwaremoduls behandelt wurde. Stattdessen wurde die Ausnahme an das Betriebssystem des SRI weitergereicht. Gemäß der System-Spezifikation war für jede Art von Ausnahme vorgesehen, den Prozessor anzuhalten. Die entworfene Fehlerbehandlung sah also einen kompletten Shutdown des SRI-Prozessors vor. Diese Maßnahme war für den Fall eines zufälligen Hardware-Fehlers konzipiert, bei dem das identische Backup-System die Funktion übernehmen sollte. Im Fall eines systematischen Softwarefehlers führte dieses Design jedoch dazu, dass beide, ansonsten intakten, SRI-Einheiten nacheinander ausfielen.\autocite[vgl.][Abschnitt 2.2, S. 5f.]{lions-ariane5-report-1996}
\subsection{Die Kausalkette der Ereignisse (Chain of Events)}
Die Rekonstruktion des Flugverlaufs durch den Untersuchungsausschuss offenbarte eine detaillierte Kausalkette von Ereignissen, die innerhalb von nur wenigen Sekunden zum Totalverlust der Mission führte:
\begin{description}
\item[\textbf{Bis \boldmath$t+36$ Sekunden:}] Der Flug verläuft nominal. Die Rakete folgt ihrer geplanten Flugbahn, die jedoch eine signifikant höhere horizontale Beschleunigung als die der Ariane 4 aufweist.
\item[\textbf{\boldmath$t+36,692$ Sekunden:}] Das Backup-Inertialreferenzsystem (SRI 1), das sich im Standby-Modus befindet, stellt seinen Betrieb ein. Ursache ist der in Kapitel 3.3.5 beschriebene \textit{Operand Error}, der durch den Überlauf der internen Variable für den \enquote{Horizontal Bias} ausgelöst wird. Das System wird intern als fehlerhaft markiert und seine Daten werden vom Flugkontrollsystem gelesen, was zu diesem Zeitpunkt noch keine Auswirkungen auf den Flug hat.
\footnote{vgl. a. a. O, S. 3f.}
%\autocite[vgl.][Abschnitt 2.1, S. 3f.]{lions-ariane5-report-1996}
%AM ENDE IMMER EIN FOOOTNOTE ZITAT!!!!!!!!!
%TODO !!!!
\newpage
\item[\textbf{\boldmath$t+36,749$ Sekunden:}] Nur 72 Millisekunden später (ein Rechenzyklus) fällt auch das aktive Inertialreferenzsystem (SRI 2) aus demselben Softwarefehler aus. In dem Moment verliert die Rakete ihre haupt- und einzige verbliebene Quelle für Navigations- und Lageinformationen. Gemäß seiner Spezifikation schreibt der SRI-Prozessor vor dem Abschalten ein diagnostisches Datenmuster in seinen Ausgabespeicher und sendet ein Ausfallsignal an den On-Board Computer (OBC).
\item[\textbf{Direkt nach \boldmath$t+36,749$ Sekunden:}] Der aktive On-Board Computer (OBC 1) empfängt das Ausfallsignal des SRI 2. Sein Versuch, auf das Backup-System SRI 1 umzuschalten, scheitert, da dieses bereits als fehlerhaft registriert ist. Das System geht in einen \textit{degraded mode}, hat jedoch keine gültige Datenquelle mehr.
\item[\textbf{\boldmath$t+37,032$ Sekunden:}] Da keine funktionierende Navigationsquelle mehr zur Verfügung steht, verarbeitet der OBC die letzten vom SRI 2 empfangenen Daten. Dabei handelt es sich jedoch um das diagnostische Bitmuster, das er fälschlicherweise als gültige Flugdaten interpretiert.
Als Reaktion darauf sendet der OBC maximale Steuerbefehle an die Düsen der Feststoffbooster und des Vulcain-Triebwerks, um die vermeintliche Abweichung zu korrigieren.
\item[\textbf{ca. \boldmath$t+39$ Sekunden:}] Die Rakete weicht durch das abrupte und maximale Schwenken der Düsen bei hoher Geschwindigkeit stark von ihrer Flugbahn ab. Die resultierenden aerodynamischen Belastungen überschreiten die Belastbarkeit der Rakete. Es kommt zum Bruch der mechanischen Verbindungen zwischen den Feststoffboostern und der zentralen Hauptstufe. Die Rakete beginnt in der Luft auseinanderzubrechen.
\item[\textbf{Kurz nach \boldmath$t+39$ Sekunden:}] Das Sicherheitssystem der Rakete erkennt das strukturelle Versagen und löst, wie vorgesehen, die automatische Selbstzerstörung aus. Es soll verhindern werden, dass große, unkontrollierte Trümmerteile den Boden erreichen.
\autocite[vgl.][Abschnitt 2.1, S. 3f.]{lions-ariane5-report-1996}
%\footnote{vgl. a. a. O, IMMEDIATE POST-ACCIDENT ANALYSIS, FLIGHT SEQUENCE}
\autocite[vgl.][IMMEDIATE POST-ACCIDENT ANALYSIS, FLIGHT SEQUENCE]{lions-ariane5-report-1996}
\end{description}
Diese Abfolge zeigt, wie ein einzelner, nicht abgefangener Softwarefehler, der sich aufgrund eines systematischen Designfehlers in beiden redundanten Systemen ereignete, eine unaufhaltsame Kette von Ereignissen auslöste, die in weniger als drei Sekunden vom ersten Systemausfall bis zur Zerstörung der Rakete führte.
\autocite[vgl.][Abschnitt 3.2f., S. 12f.]{lions-ariane5-report-1996}
\chapter{Ursachen des Fehlschlags und abgeleitete Verbesserungsvorschläge}
Wie in Kapitel 3 detailliert dargelegt, war der unmittelbare Auslöser des Absturzes ein nicht behandelter \glqq Operand Error\grqq. Diese technische Fehlfunktion war jedoch nur ein Fehler in einer Reihe von tieferliegenden, prozessualen und organisatorischen Versäumnissen, die in der Systemarchitektur und im Projektmanagement lagen.
\section{Ursachen des Fehlschlags}
Die Analyse des Untersuchungsausschusses deckte mehrere fundamentale Schwachstellen auf, die über einen reinen Programmierfehler hinausgingen:
\begin{itemize}
\item \textbf{Unzureichendes Anforderungsmanagement bei Wiederverwendung:} Die Anforderungen an ein wiederverwendetes Softwaremodul der Ariane 4 wurden nicht an das neue, dynamischere Flugprofil der Ariane 5 angepasst. Eine für den neuen Flugablauf obsolete Funktion wurde beibehalten, ohne deren Verhalten unter den geänderten Bedingungen zu validieren.
\item \textbf{Fehlende Testabdeckung und Validierung:} Infolge der mangelhaften Spezifikationen fanden keine vollständigen Systemsimulationen mit realer Hardware unter realistischen Flugbedingungen statt. Der durch die höheren Geschwindigkeitswerte der Ariane 5 ausgelöste und in Abschnitt 3.3.5 beschriebene Integer-Overflow blieb daher unentdeckt.
\item \textbf{Risikobehaftete Design-Entscheidung:} Eine kritische Schutzfunktion wurde bewusst deaktiviert, um ein strenges CPU-Auslastungslimit einzuhalten. Diese undokumentierte Optimierung basierte auf einer Analyse für die Ariane 4, deren Gültigkeit für das neue Flugprofil nie überprüft wurde.
\item \textbf{Fehlerhafte Sicherheitsphilosophie:} Das Redundanzkonzept war nur auf zufällige Hardware-Ausfälle ausgelegt und versagte bei einem systematischen Softwarefehler, der sich in beiden identischen Einheiten replizierte. Anstatt einen funktional eingeschränkten Zustand zu ermöglichen, schrieb die Systemspezifikation einen sofortigen Shutdown des Prozessors vor, was zum Totalausfall führte.
\autocite[vgl.][Abschnitt 2.2f., S. 5ff.]{lions-ariane5-report-1996}
\end{itemize}
\section{Verbesserungsvorschläge der Untersuchungskommission}
Auf Basis dieser Analyse formulierte die Untersuchungskommission Empfehlungen, die die aufgedeckten Schwächen auf mehreren Ebenen adressierten. Zentral war die Forderung nach verbesserten Systemtests, insbesondere durch \glqq Closed-Loop\grqq-Simulationen unter Einbeziehung realer Hardware und realistischer Flugbahndaten. Auf Ebene des Software-Designs wurde empfohlen, alle nicht im Flug benötigten Funktionen abzuschalten und das Exception Handling neu zu überarbeiten. Anstatt den gesamten Prozessor anzuhalten, sollten Fehler lokal behandelt werden, um das System in einem funktionsfähigen Zustand zu halten. Schließlich zielten die Vorschläge auf die organisatorischen Prozesse ab: Rechtfertigungen für Design-Entscheidungen sollten ebenso wie der Code selbst dokumentiert und geprüft werden. Zudem wurde die Einbindung externer Experten sowie eine klarere Definition der Verantwortlichkeiten gefordert, was später unter anderem zur Etablierung der Rolle eines \glqq Software Architect\grqq führte.
\autocite[vgl.][RECOMMENDATIONS, S. 13f.]{lions-ariane5-report-1996}
\chapter{Fazit}
Die Analyse des Ariane-5-Fehlschlags zeigt, dass die Ursache nicht in einem einzelnen Programmierfehler, sondern in einer Reihe systemischer Versäumnisse im gesamten Entwicklungsprozess lag. Der Vorfall gilt daher als Fallbeispiel, das fundamentale Lehren für die Entwicklung sicherheitskritischer Systeme vermittelt.
Der Absturz zeigte die Grenzen einer Sicherheitskultur, die zu stark auf Hardware-Paradigmen und unreflektierter Wiederverwendung von Komponenten basierte. Wie in Kapitel 4 dargelegt, versagte das Konzept der identischen Redundanz, da es nicht gegen systematische Softwarefehler ausgelegt war. Gleichzeitig zeigte sich, dass die Praxistauglichkeit von Software untrennbar mit dem spezifischen Einsatzgebiet verbunden ist.
\autocite[vgl.][Abschnitt 3.1, S. 10ff.]{lions-ariane5-report-1996}
Die entscheidende Lektion des Vorfalls liegt jedoch in dem dadurch ausgelösten Paradigmenwechsel. An die Stelle der reinen Kompensation von Einzelfehlern traten fortan eine ganzheitliche Systemvalidierung, transparente Dokumentation und ein robustes Fehler-Handling, das einen kontrollierten Betrieb dem Totalausfall vorzieht. Somit wurde der Absturz der Ariane 5, trotz des großen Schadens, zu einem entscheidenden Ereignis, das die Standards für die Entwicklung sicherheitskritischer Systeme in der Luft- und Raumfahrt und darüber hinaus nachhaltig prägte.
\autocite[vgl.][TODO]{dalmau-gigou-esa-bulletin-1997}
% HIER DAS LITERATURVERZEICHNIS EINFÜGEN
% --------------------------------------------------------------------
\newpage
\addcontentsline{toc}{section}{Literaturverzeichnis}
\printbibliography
% --------------------------------------------------------------------
% NACHSPANN DER ARBEIT
% --------------------------------------------------------------------
\backmatter % Sorgt dafür, dass nachfolgende Kapitel (z.B. Anhang) nicht im Inhaltsverzeichnis nummeriert sind.
\makeeidesstattlicheerklaerung{Anhang I}{Yana Burtova} % <-- Diese Seiten sind wieder unnummeriert oder werden je nach Einstellung anders behandelt.
\makeeidesstattlicheerklaerung{Anhang II}{Markus Huber}
\end{document}

436
SoftwareFehlerAriane5.xdy Normal file
View File

@@ -0,0 +1,436 @@
;; xindy style file created by the glossaries package
;; for document 'SoftwareFehlerAriane5' on 2025-6-20
; required styles
(require "tex.xdy")
; list of allowed attributes (number formats)
(define-attributes (("default"
"glsnumberformat"
"pageglsnumberformat"
"textrm"
"pagetextrm"
"textsf"
"pagetextsf"
"texttt"
"pagetexttt"
"textbf"
"pagetextbf"
"textmd"
"pagetextmd"
"textit"
"pagetextit"
"textup"
"pagetextup"
"textsl"
"pagetextsl"
"textsc"
"pagetextsc"
"emph"
"pageemph"
"glshypernumber"
"pageglshypernumber"
"hyperrm"
"pagehyperrm"
"hypersf"
"pagehypersf"
"hypertt"
"pagehypertt"
"hyperbf"
"pagehyperbf"
"hypermd"
"pagehypermd"
"hyperit"
"pagehyperit"
"hyperup"
"pagehyperup"
"hypersl"
"pagehypersl"
"hypersc"
"pagehypersc"
"hyperemph"
"pagehyperemph"
"glsignore"
"pageglsignore")))
; user defined alphabets
; location class definitions
(define-location-class "roman-page-numbers"
( :sep "{}{" "roman-numbers-lowercase" :sep "}" )
:min-range-length 2
)
(define-location-class "roman-page-numbers-roman-page-numbers"
( :sep "{" "roman-numbers-lowercase" :sep "}{" "roman-numbers-lowercase" :sep "}" )
:min-range-length 2
)
(define-location-class "Roman-page-numbers-roman-page-numbers"
( :sep "{" "roman-numbers-uppercase" :sep "}{" "roman-numbers-lowercase" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-page-numbers-roman-page-numbers"
( :sep "{" "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
:min-range-length 2
)
(define-location-class "alpha-page-numbers-roman-page-numbers"
( :sep "{" "alpha" :sep "}{" "roman-numbers-lowercase" :sep "}" )
:min-range-length 2
)
(define-location-class "Alpha-page-numbers-roman-page-numbers"
( :sep "{" "ALPHA" :sep "}{" "roman-numbers-lowercase" :sep "}" )
:min-range-length 2
)
(define-location-class "Appendix-page-numbers-roman-page-numbers"
( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-section-numbers-roman-page-numbers"
( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
:min-range-length 2
)
(define-location-class "Roman-page-numbers"
( :sep "{}{" "roman-numbers-uppercase" :sep "}" )
:min-range-length 2
)
(define-location-class "roman-page-numbers-Roman-page-numbers"
( :sep "{" "roman-numbers-lowercase" :sep "}{" "roman-numbers-uppercase" :sep "}" )
:min-range-length 2
)
(define-location-class "Roman-page-numbers-Roman-page-numbers"
( :sep "{" "roman-numbers-uppercase" :sep "}{" "roman-numbers-uppercase" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-page-numbers-Roman-page-numbers"
( :sep "{" "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
:min-range-length 2
)
(define-location-class "alpha-page-numbers-Roman-page-numbers"
( :sep "{" "alpha" :sep "}{" "roman-numbers-uppercase" :sep "}" )
:min-range-length 2
)
(define-location-class "Alpha-page-numbers-Roman-page-numbers"
( :sep "{" "ALPHA" :sep "}{" "roman-numbers-uppercase" :sep "}" )
:min-range-length 2
)
(define-location-class "Appendix-page-numbers-Roman-page-numbers"
( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-section-numbers-Roman-page-numbers"
( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-page-numbers"
( :sep "{}{" "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "roman-page-numbers-arabic-page-numbers"
( :sep "{" "roman-numbers-lowercase" :sep "}{" "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Roman-page-numbers-arabic-page-numbers"
( :sep "{" "roman-numbers-uppercase" :sep "}{" "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-page-numbers-arabic-page-numbers"
( :sep "{" "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "alpha-page-numbers-arabic-page-numbers"
( :sep "{" "alpha" :sep "}{" "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Alpha-page-numbers-arabic-page-numbers"
( :sep "{" "ALPHA" :sep "}{" "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Appendix-page-numbers-arabic-page-numbers"
( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-section-numbers-arabic-page-numbers"
( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "alpha-page-numbers"
( :sep "{}{" "alpha" :sep "}" )
:min-range-length 2
)
(define-location-class "roman-page-numbers-alpha-page-numbers"
( :sep "{" "roman-numbers-lowercase" :sep "}{" "alpha" :sep "}" )
:min-range-length 2
)
(define-location-class "Roman-page-numbers-alpha-page-numbers"
( :sep "{" "roman-numbers-uppercase" :sep "}{" "alpha" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-page-numbers-alpha-page-numbers"
( :sep "{" "arabic-numbers" :sep "}{" "alpha" :sep "}" )
:min-range-length 2
)
(define-location-class "alpha-page-numbers-alpha-page-numbers"
( :sep "{" "alpha" :sep "}{" "alpha" :sep "}" )
:min-range-length 2
)
(define-location-class "Alpha-page-numbers-alpha-page-numbers"
( :sep "{" "ALPHA" :sep "}{" "alpha" :sep "}" )
:min-range-length 2
)
(define-location-class "Appendix-page-numbers-alpha-page-numbers"
( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "alpha" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-section-numbers-alpha-page-numbers"
( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "alpha" :sep "}" )
:min-range-length 2
)
(define-location-class "Alpha-page-numbers"
( :sep "{}{" "ALPHA" :sep "}" )
:min-range-length 2
)
(define-location-class "roman-page-numbers-Alpha-page-numbers"
( :sep "{" "roman-numbers-lowercase" :sep "}{" "ALPHA" :sep "}" )
:min-range-length 2
)
(define-location-class "Roman-page-numbers-Alpha-page-numbers"
( :sep "{" "roman-numbers-uppercase" :sep "}{" "ALPHA" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-page-numbers-Alpha-page-numbers"
( :sep "{" "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
:min-range-length 2
)
(define-location-class "alpha-page-numbers-Alpha-page-numbers"
( :sep "{" "alpha" :sep "}{" "ALPHA" :sep "}" )
:min-range-length 2
)
(define-location-class "Alpha-page-numbers-Alpha-page-numbers"
( :sep "{" "ALPHA" :sep "}{" "ALPHA" :sep "}" )
:min-range-length 2
)
(define-location-class "Appendix-page-numbers-Alpha-page-numbers"
( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-section-numbers-Alpha-page-numbers"
( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
:min-range-length 2
)
(define-location-class "Appendix-page-numbers"
( :sep "{}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "roman-page-numbers-Appendix-page-numbers"
( :sep "{" "roman-numbers-lowercase" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Roman-page-numbers-Appendix-page-numbers"
( :sep "{" "roman-numbers-uppercase" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-page-numbers-Appendix-page-numbers"
( :sep "{" "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "alpha-page-numbers-Appendix-page-numbers"
( :sep "{" "alpha" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Alpha-page-numbers-Appendix-page-numbers"
( :sep "{" "ALPHA" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Appendix-page-numbers-Appendix-page-numbers"
( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-section-numbers-Appendix-page-numbers"
( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-section-numbers"
( :sep "{}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "roman-page-numbers-arabic-section-numbers"
( :sep "{" "roman-numbers-lowercase" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Roman-page-numbers-arabic-section-numbers"
( :sep "{" "roman-numbers-uppercase" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-page-numbers-arabic-section-numbers"
( :sep "{" "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "alpha-page-numbers-arabic-section-numbers"
( :sep "{" "alpha" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Alpha-page-numbers-arabic-section-numbers"
( :sep "{" "ALPHA" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "Appendix-page-numbers-arabic-section-numbers"
( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
(define-location-class "arabic-section-numbers-arabic-section-numbers"
( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
:min-range-length 2
)
; user defined location classes
; define cross-reference class
(define-crossref-class "see" :unverified )
(markup-crossref-list :class "see"
:open "\glsseeformat" :close "{}")
; define the order of the location classes
(define-location-class-order (
"roman-page-numbers"
"arabic-page-numbers"
"arabic-section-numbers"
"alpha-page-numbers"
"Roman-page-numbers"
"Alpha-page-numbers"
"Appendix-page-numbers"
"see" ))
; define the glossary markup
(markup-index
:open "\glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble
\providecommand*\glsXpageXglsnumberformat[2]{\setentrycounter[#1]{page}\glsnumberformat{#2}}
\providecommand*\glsXpageXtextrm[2]{\setentrycounter[#1]{page}\textrm{#2}}
\providecommand*\glsXpageXtextsf[2]{\setentrycounter[#1]{page}\textsf{#2}}
\providecommand*\glsXpageXtexttt[2]{\setentrycounter[#1]{page}\texttt{#2}}
\providecommand*\glsXpageXtextbf[2]{\setentrycounter[#1]{page}\textbf{#2}}
\providecommand*\glsXpageXtextmd[2]{\setentrycounter[#1]{page}\textmd{#2}}
\providecommand*\glsXpageXtextit[2]{\setentrycounter[#1]{page}\textit{#2}}
\providecommand*\glsXpageXtextup[2]{\setentrycounter[#1]{page}\textup{#2}}
\providecommand*\glsXpageXtextsl[2]{\setentrycounter[#1]{page}\textsl{#2}}
\providecommand*\glsXpageXtextsc[2]{\setentrycounter[#1]{page}\textsc{#2}}
\providecommand*\glsXpageXemph[2]{\setentrycounter[#1]{page}\emph{#2}}
\providecommand*\glsXpageXglshypernumber[2]{\setentrycounter[#1]{page}\glshypernumber{#2}}
\providecommand*\glsXpageXhyperrm[2]{\setentrycounter[#1]{page}\hyperrm{#2}}
\providecommand*\glsXpageXhypersf[2]{\setentrycounter[#1]{page}\hypersf{#2}}
\providecommand*\glsXpageXhypertt[2]{\setentrycounter[#1]{page}\hypertt{#2}}
\providecommand*\glsXpageXhyperbf[2]{\setentrycounter[#1]{page}\hyperbf{#2}}
\providecommand*\glsXpageXhypermd[2]{\setentrycounter[#1]{page}\hypermd{#2}}
\providecommand*\glsXpageXhyperit[2]{\setentrycounter[#1]{page}\hyperit{#2}}
\providecommand*\glsXpageXhyperup[2]{\setentrycounter[#1]{page}\hyperup{#2}}
\providecommand*\glsXpageXhypersl[2]{\setentrycounter[#1]{page}\hypersl{#2}}
\providecommand*\glsXpageXhypersc[2]{\setentrycounter[#1]{page}\hypersc{#2}}
\providecommand*\glsXpageXhyperemph[2]{\setentrycounter[#1]{page}\hyperemph{#2}}
\providecommand*\glsXpageXglsignore[2]{\setentrycounter[#1]{page}\glsignore{#2}}
\begin{theglossary}\glossaryheader~n"
:close "%~n\end{theglossary}\glossarypostamble~n"
:tree)
(markup-letter-group-list :sep "\glsgroupskip~n")
(markup-indexentry :open "\relax\glsresetentrylist~n")
(markup-locclass-list :open "{\glossaryentrynumbers{\relax "
:sep ", " :close "}}")
(markup-locref-list :sep "\delimN ")
(markup-range :sep "\delimR ")
; define format to use for locations
(markup-locref :open "~n\glsXpageXglsnumberformat"
:close ""
:attr "pageglsnumberformat")
(markup-locref :open "~n\glsXpageXtextrm"
:close ""
:attr "pagetextrm")
(markup-locref :open "~n\glsXpageXtextsf"
:close ""
:attr "pagetextsf")
(markup-locref :open "~n\glsXpageXtexttt"
:close ""
:attr "pagetexttt")
(markup-locref :open "~n\glsXpageXtextbf"
:close ""
:attr "pagetextbf")
(markup-locref :open "~n\glsXpageXtextmd"
:close ""
:attr "pagetextmd")
(markup-locref :open "~n\glsXpageXtextit"
:close ""
:attr "pagetextit")
(markup-locref :open "~n\glsXpageXtextup"
:close ""
:attr "pagetextup")
(markup-locref :open "~n\glsXpageXtextsl"
:close ""
:attr "pagetextsl")
(markup-locref :open "~n\glsXpageXtextsc"
:close ""
:attr "pagetextsc")
(markup-locref :open "~n\glsXpageXemph"
:close ""
:attr "pageemph")
(markup-locref :open "~n\glsXpageXglshypernumber"
:close ""
:attr "pageglshypernumber")
(markup-locref :open "~n\glsXpageXhyperrm"
:close ""
:attr "pagehyperrm")
(markup-locref :open "~n\glsXpageXhypersf"
:close ""
:attr "pagehypersf")
(markup-locref :open "~n\glsXpageXhypertt"
:close ""
:attr "pagehypertt")
(markup-locref :open "~n\glsXpageXhyperbf"
:close ""
:attr "pagehyperbf")
(markup-locref :open "~n\glsXpageXhypermd"
:close ""
:attr "pagehypermd")
(markup-locref :open "~n\glsXpageXhyperit"
:close ""
:attr "pagehyperit")
(markup-locref :open "~n\glsXpageXhyperup"
:close ""
:attr "pagehyperup")
(markup-locref :open "~n\glsXpageXhypersl"
:close ""
:attr "pagehypersl")
(markup-locref :open "~n\glsXpageXhypersc"
:close ""
:attr "pagehypersc")
(markup-locref :open "~n\glsXpageXhyperemph"
:close ""
:attr "pagehyperemph")
(markup-locref :open "~n\glsXpageXglsignore"
:close ""
:attr "pageglsignore")
; define letter group list format
(markup-letter-group-list :sep "\glsgroupskip~n")
; letter group headings
(markup-letter-group :open-head "\glsgroupheading{"
:close-head "}")
; additional letter groups
(define-letter-group "glsnumbers"
:prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
:before "A")
; additional sort rules

113
literatur - Kopie.bib Normal file
View File

@@ -0,0 +1,113 @@
@misc{zeit-rosetta-erfolg,
author = "{ZEIT ONLINE}",
year = {2014},
note = {\textit{Rosetta-Mission: Philae schweigt, aber die Mission ist ein Erfolg} [online].
Hamburg: ZEIT ONLINE GmbH, 16.11.2014
[Zugriff am: 14.05.2025]. Verfügbar unter
\url{https://www.zeit.de/wissen/2014-11/rosetta-komet-dlr-esa}}
}
@misc{wiki-ariane5,
author = "{WIKIPEDIA FOUNDATION INC.}",
year = {2025},
note = {\textit{Ariane 5} [online].
San Francisco: Wikipedia Foundation Inc., 15.04.2025
[Zugriff am: 14.05.2025]. Verfügbar unter
\url{https://de.wikipedia.org/w/index.php?title=Ariane_5}}
}
@misc{esa-juice-start,
author = "{European Space Agency}",
year = {2023},
note = {\textit{Start für die JUICE-Mission der ESA zur Erforschung der Jupitermonde} [online].
ESA, 14.04.2023
[Zugriff am: 24.05.2025]. Verfügbar unter
\url{https://www.esa.int/kids/de/lernen/Unser_Universum/JUICE/Start_fuer_die_JUICE-Mission_der_ESA_zur_Erforschung_der_Jupitermonde}}
}
@misc{wiki-ariane-v88,
author = "{WIKIPEDIA FOUNDATION INC.}",
year = {2025},
note = {\textit{Ariane V88} [online].
San Francisco: Wikipedia Foundation Inc., 15.04.2025
[Zugriff am: 20.05.2025]. Verfügbar unter
\url{https://de.wikipedia.org/w/index.php?title=Ariane_V88}}
}
@misc{wiki-esa,
author = "{WIKIPEDIA FOUNDATION INC.}",
year = {2025},
note = {\textit{Europäische Weltraumorganisation} [online].
San Francisco: Wikipedia Foundation Inc., 15.04.2025
[Zugriff am: 20.05.2025]. Verfügbar unter
\url{https://de.wikipedia.org/wiki/Europäische_Weltraumorganisation}}
}
@misc{planetwissen-geschichte-ariane,
author = {Wolfgang Richter und Tobias Schlösser},
year = {2021},
note = {\textit{Die Geschichte der Ariane-Raketen} [online].
Planet Wissen, 30.07.2021
[Zugriff am: 24.05.2025]. Verfügbar unter
\url{https://www.planet-wissen.de/technik/weltraumforschung/sonden_und_raketen/pwiediegeschichtederarianeraketen100.html}}
}
@techreport{lions-ariane5-report-1996,
author = {Jacques-Louis Lions},
title = {Ariane 5 Flight 501 Failure: Report by the Inquiry Board},
institution = {ESA/CNES},
year = {1996},
month = {July},
note = {Verfügbar unter \url{https://esamultimedia.esa.int/docs/esa-x-1819eng.pdf}}
}
@techreport{lelann-ariane5-case-study-1996,
author = {Gérard Le Lann},
title = {The Ariane 5 Flight 501 Failure: A Case Study in System Engineering for Computing Systems},
institution = {INRIA},
year = {1996},
note = {Verfügbar unter \url{https://www.researchgate.net/publication/2637332_The_Ariane_5_Flight_501_Failure_-_A_Case_Study_in_System_Engineering_for_Computing_Systems}}
}
@article{dalmau-gigou-esa-bulletin-1997,
author = {de Dalmau, J. and Gigou, J.},
title = {Ariane-5: Learning from Flight 501 and Preparing for 502},
journal = {ESA Bulletin},
year = {1997},
volume = {89},
month = {February},
note = {Verfügbar unter \url{https://www.esa.int/esapub/bulletin/bullet89/dalma89.htm}}
}
@book{bits-and-bugs,
author = {Huckle, Thomas and Neckel, Tobias},
title = {Bits and Bugs},
publisher = {Society for Industrial and Applied Mathematics},
year = {2019},
doi = {10.1137/1.9781611975567},
address = {Philadelphia, PA},
edition = {},
URL = {https://epubs.siam.org/doi/abs/10.1137/1.9781611975567},
eprint = {https://epubs.siam.org/doi/pdf/10.1137/1.9781611975567}
}
@misc{dlr-ariane5-arbeitspferd,
author = "{Denis Regenbrecht}",
year = {2024},
note = {\textit{Ariane 5} [online].
DLR,
[Zugriff am: 20.05.2025]. Verfügbar unter
\url{https://www.dlr.de/de/ar/themen-missionen/raumfahrttechnologien/traegersysteme/ariane-5}}
}
%
% BibTex Wikipedia ( Misc )
% BEi optionen: "biber" % statt bibtex %

124
literatur.bib Normal file
View File

@@ -0,0 +1,124 @@
@misc{zeit-rosetta-erfolg,
author = "{ZEIT ONLINE}",
year = {2014},
note = {\textit{Rosetta-Mission: Philae schweigt, aber die Mission ist ein Erfolg} [online].
Hamburg: ZEIT ONLINE GmbH, 16.11.2014
[Zugriff am: 14.05.2025]. Verfügbar unter
\url{https://www.zeit.de/wissen/2014-11/rosetta-komet-dlr-esa}}
}
@misc{wiki-ariane5,
author = "{WIKIPEDIA FOUNDATION INC.}",
year = {2025},
note = {\textit{Ariane 5} [online].
San Francisco: Wikipedia Foundation Inc., 15.04.2025
[Zugriff am: 14.05.2025]. Verfügbar unter
\url{https://de.wikipedia.org/w/index.php?title=Ariane_5}}
}
@misc{esa-juice-start,
author = "{European Space Agency}",
year = {2023},
note = {\textit{Start für die JUICE-Mission der ESA zur Erforschung der Jupitermonde} [online].
ESA, 14.04.2023
[Zugriff am: 24.05.2025]. Verfügbar unter
\url{https://www.esa.int/kids/de/lernen/Unser_Universum/JUICE/Start_fuer_die_JUICE-Mission_der_ESA_zur_Erforschung_der_Jupitermonde}}
}
@misc{wiki-ariane-v88,
author = "{WIKIPEDIA FOUNDATION INC.}",
year = {2025},
note = {\textit{Ariane V88} [online].
San Francisco: Wikipedia Foundation Inc., 15.04.2025
[Zugriff am: 20.05.2025]. Verfügbar unter
\url{https://de.wikipedia.org/w/index.php?title=Ariane_V88}}
}
@misc{wiki-esa,
author = "{WIKIPEDIA FOUNDATION INC.}",
year = {2025},
note = {\textit{Europäische Weltraumorganisation} [online].
San Francisco: Wikipedia Foundation Inc., 15.04.2025
[Zugriff am: 20.05.2025]. Verfügbar unter
\url{https://de.wikipedia.org/wiki/Europäische_Weltraumorganisation}}
}
@misc{planetwissen-geschichte-ariane,
author = {Wolfgang Richter und Tobias Schlösser},
year = {2021},
note = {\textit{Die Geschichte der Ariane-Raketen} [online].
Planet Wissen, 30.07.2021
[Zugriff am: 24.05.2025]. Verfügbar unter
\url{https://www.planet-wissen.de/technik/weltraumforschung/sonden_und_raketen/pwiediegeschichtederarianeraketen100.html}}
}
@misc{wray-castle-fp,
author = {Stephanie Burrell},
year = {2024},
month = {November},
note = {\textit{Understanding Double Precision Floating Point: A Comprehensive Guide} [online].
Wray Castle, 2025
[Zugriff am: 16.05.2025]. Verfügbar unter
\url{https://wraycastle.com/blogs/knowledge-base/double-precision-floating-point}}
}
@techreport{lions-ariane5-report-1996,
author = {Jacques-Louis Lions},
title = {Ariane 5 Flight 501 Failure: Report by the Inquiry Board},
institution = {ESA/CNES},
year = {1996},
month = {July},
note = {Verfügbar unter \url{https://esamultimedia.esa.int/docs/esa-x-1819eng.pdf}}
}
@techreport{lelann-ariane5-case-study-1996,
author = {Gérard Le Lann},
title = {The Ariane 5 Flight 501 Failure: A Case Study in System Engineering for Computing Systems},
institution = {INRIA},
year = {1996},
note = {Verfügbar unter \url{https://www.researchgate.net/publication/2637332_The_Ariane_5_Flight_501_Failure_-_A_Case_Study_in_System_Engineering_for_Computing_Systems}}
}
@article{dalmau-gigou-esa-bulletin-1997,
author = {de Dalmau, J. and Gigou, J.},
title = {Ariane-5: Learning from Flight 501 and Preparing for 502},
journal = {ESA Bulletin},
year = {1997},
volume = {89},
month = {February},
note = {Verfügbar unter \url{https://www.esa.int/esapub/bulletin/bullet89/dalma89.htm}}
}
@book{bits-and-bugs,
author = {Huckle, Thomas and Neckel, Tobias},
title = {Bits and Bugs},
publisher = {Society for Industrial and Applied Mathematics},
year = {2019},
doi = {10.1137/1.9781611975567},
address = {Philadelphia, PA},
edition = {},
URL = {https://epubs.siam.org/doi/abs/10.1137/1.9781611975567},
eprint = {https://epubs.siam.org/doi/pdf/10.1137/1.9781611975567}
}
@misc{dlr-ariane5-arbeitspferd,
author = "{Denis Regenbrecht}",
year = {2024},
note = {\textit{Ariane 5} [online].
DLR,
[Zugriff am: 20.05.2025]. Verfügbar unter
\url{https://www.dlr.de/de/ar/themen-missionen/raumfahrttechnologien/traegersysteme/ariane-5}}
}
%
% BibTex Wikipedia ( Misc )
% BEi optionen: "biber" % statt bibtex %