Commit d143409a authored by Matthias Lange's avatar Matthias Lange
Browse files

Korrektur Kapitel 9

parent 784168c1
Die Ziele des Projekts wurden in der Einfürung (\autoref{ziel}) genannt. Der Fokus lag auf dem Erhöhen der Teststärke durch das Nutzen von modellbasierten Tests, da im vorherigen Projekt nur Unit Tests verwendet wurden. Außerdem sollte das System um neue Features erweitert werden.
\sectionauthor{Patrick Wilde}
Die Ziele des Projekts wurden in der Einführung (\autoref{ziel}) genannt. Der Fokus lag auf dem Erhöhen der Teststärke durch das Nutzen von modellbasierten Tests, da im vorherigen Projekt nur Unit-Tests verwendet wurden. Außerdem sollte das System um neue Features erweitert werden.
Die Züge sollen nun in Güter- und Passagierzüge aufgeteilt sein und in beide Richtungen fahren können. Passagierzüge fahren dabei einen vorgegebenen Fahrplan ab während die Güterzüge sich zufällige Ziele auswählen und bei Bedarf umgeleitet werden können. Da dieses Verhalten in einem autonomen System zu Deadlocks führen kann, war es auch ein Ziel, diese Deadlocks automatisch zu beheben.
Die Züge sollen nun in Güter- und Passagierzüge aufgeteilt sein und in beide Richtungen fahren können. Passagierzüge fahren dabei einen vorgegebenen Fahrplan, ab während die Güterzüge sich zufällige Ziele auswählen und bei Bedarf umgeleitet werden können. Da dieses Verhalten in einem autonomen System zu Deadlocks führen kann, war es auch ein Ziel, diese Deadlocks automatisch zu beheben.
Diese Ziele konnten alle erreicht werden. Die Güterzug-Funktionalität bestand dabei schon im vorherigen System, sodass nur noch die Passagierzüge implementiert werden mussten. Diese können nun ihren Fahrplan aus einer \texttt{.csv}-Datei einlesen und abfahren. Dies ist in \autoref{passagier-gueterzug} näher beschrieben.
Das System schafft es nun auch die im Zuverkehr auftretenden Deadlocks aufzulösen. Diese Deadlocks werden dadurch aufgelöst, dass ein oder mehrere Züge temporär auf Ausweichrouten geschickt werden. Hierfür wurden zwei Ansätze implementiert. Einer ist direkt im IXL integriert (siehe \autoref{dl-solution}) während der andere Ansatz ein Client-Server-Modell verwendet (siehe \autoref{sec:deadl}).
Das System schafft es nun auch, die im Zugverkehr auftretenden Deadlocks aufzulösen. Diese Deadlocks werden dadurch aufgelöst, dass ein oder mehrere Züge temporär auf Ausweichrouten geschickt werden. Hierfür wurden zwei Ansätze implementiert: Einer ist direkt im IXL integriert (siehe \autoref{dl-solution}), während der andere Ansatz ein Client-Server-Modell verwendet (siehe \autoref{sec:deadl}).
Um die Sicherheit unseres Systems noch weiter zu erhöhen haben wir uns das Ziel gesetzt ein Weichenrückmeldesystem und einen unsychronisierten Safetymonitor zu entwerfen und in das System zu integrieren. Das Weichenrückmeldesystem soll die Ist- und Soll-Stellung der Weichen vergleichen und einen Notstopp auslösen, sobald sich diese Stellungen unterscheiden. Der Safetymonitor soll getrennt vom System gestartet werden können und das Verhalten unseres Systems von außen beobachten. Falls sich das System nicht entsprechend vordefinierter Sicherheitsbedingungen verhält, soll der Safetymonitor einen Notstopp signalisieren.
Um die Sicherheit unseres Systems noch weiter zu erhöhen, haben wir uns das Ziel gesetzt, ein Weichenrückmeldesystem und einen unsynchronisierten Safetymonitor zu entwerfen und in das System zu integrieren. Das Weichenrückmeldesystem soll die Ist- und Soll-Stellung der Weichen vergleichen und einen Notstopp auslösen, sobald sich diese Stellungen unterscheiden. Der Safetymonitor soll getrennt vom System gestartet werden können und das Verhalten unseres Systems von außen beobachten. Falls sich das System nicht entsprechend vordefinierter Sicherheitsbedingungen verhält, soll der Safetymonitor einen Notstopp signalisieren.
Beide Komponenten wurden erfolgreich entwickelt und in das System integriert. Für das Weichenrückmeldesystem wurde an jeder Weiche eine elektronischer Schalter so angebracht, dass die Weichenstellung gemessen werden kann. Diese wird dann mit der vom IXL erwarteten Stellung verglichen. Die genaue Funktionsweise ist in \autoref{weichen} beschrieben.
Beide Komponenten wurden erfolgreich entwickelt und in das System integriert. Für das Weichenrückmeldesystem wurde an jeder Weiche ein elektronischer Schalter so angebracht, dass die Weichenstellung gemessen werden kann. Diese wird dann mit der vom IXL erwarteten Stellung verglichen. Die genaue Funktionsweise ist in \autoref{weichen} beschrieben.
Der Safetymonitor wurde auch erfolgreich als externe Komponente entwickelt, sodass das System auch ohne sie funktionieren kann. Der Safetymonitor kann während des Betriebs des Hauptsystems gestartet werden und überprüft ab dann das Verhalten von IXL und TCC. Das erwartete Verhalten des Systems kann mit LTL-Formeln beschrieben werden, welche dann während des Betriebs ausgewertet werden. Außerdem errechnet der Safetymonitor mögliche Kollisionen zwischen den Zügen. Es wird ein Notstopp ausgelöst sobald eine Kollision bevorsteht oder eine LTL-Formel verletzt wurde. Um den Status des Systems abzugreifen, wurde die Kommunikation unter den Komponenten auf Multicast-UDP umprogrammiert, sodass der Safetymonitor diese Kommunikation abgreifen kann. Die genaue Funktionsweise ist in \autoref{health-monitor} beschrieben.
Der Safetymonitor wurde auch erfolgreich als externe Komponente entwickelt, sodass das System auch ohne sie funktionieren kann. Der Safetymonitor kann während des Betriebs des Hauptsystems gestartet werden und überprüft ab dann das Verhalten von IXL und TCC. Das erwartete Verhalten des Systems kann mit LTL-Formeln beschrieben werden, welche dann während des Betriebs ausgewertet werden. Außerdem errechnet der Safetymonitor mögliche Kollisionen zwischen den Zügen. Es wird ein Notstopp ausgelöst, sobald eine Kollision bevorsteht oder eine LTL-Formel verletzt wurde. Um den Status des Systems abzugreifen, wurde die Kommunikation unter den Komponenten auf Multicast-UDP umprogrammiert, sodass der Safetymonitor diese Kommunikation abgreifen kann. Die genaue Funktionsweise ist in \autoref{health-monitor} beschrieben.
\autoref{ziel-tabelle} listet alle Ziele einmal auf und beschreibt, ob diese erreicht wurden.
......@@ -35,7 +36,7 @@ Der Safetymonitor wurde auch erfolgreich als externe Komponente entwickelt, soda
\section{Auswertung der Tests}
\label{testauswertung}
\sectionauthor{Patrick Wilde}
Im Rahmen des Projektes wurden verschiedene auf Modellen basierende Tests für die unterschiedlichen Komponenten unserer Software entwickelt und ausgeführt (siehe \autoref{test-verifikation}). Abbildung \ref{all-test-results} zeigt eine Übersicht die beschreibt, welches Modul auf welche Weise getestet wurde und was für Ergebnisse dabei erschienen sind.
Im Rahmen des Projektes wurden verschiedene, auf Modellen basierende Tests für die unterschiedlichen Komponenten unserer Software entwickelt und ausgeführt (siehe \autoref{test-verifikation}). Abbildung \ref{all-test-results} zeigt eine Übersicht, die beschreibt, welches Modul auf welche Weise getestet wurde und was für Ergebnisse dabei erschienen sind.
\begin{figure}[H]
\begin{center}
\begin{tabular}{| l | c | c | c |}
......@@ -57,20 +58,19 @@ Im Rahmen des Projektes wurden verschiedene auf Modellen basierende Tests für d
Während der Ausführung des IXL-Test mittels \texttt{nuXmv} kam es zu einer State Explosion und wurde deswegen vorzeitig abgebrochen. Ursache dieser State Explosion ist die grundlegende Komplexität des Schienennetzes. Weiteres ist in \autoref{model-check-nuxmv} nachzulesen.
Es konnten durch die Tests mehrere Fehler in der Implementierung der TCC und IXL Module aufgedeckt und anschließend behoben werden.
Da unsere Tests mittels kompletten Testtheorien, wie zum Beispiel der vom \texttt{fsm-generator} genutzten Wp-Methode, aus den Modellen abgeleitet wurden, erreichen wir verglichen mit den früheren Unit-Tests eine höhere Teststärke. Dadurch können wir uns sicher sein, dass es keine weiteren Fehler in unserem System gibt, solange wir es richtig modelliert haben. Die Wahrscheinlichkeit eines Fehlers im Modell wurde im Projekt dadurch minimiert, dass die Modelle regelmäßig im gemeinsamen Plenum besprochen wurden.
Da unsere Tests mittels kompletter Testtheorien, wie zum Beispiel der vom \texttt{fsm-generator} genutzten Wp-Methode, aus den Modellen abgeleitet wurden, erreichen wir, verglichen mit den früheren Unit-Tests, eine höhere Teststärke. Dadurch können wir uns sicher sein, dass es keine weiteren Fehler in unserem System gibt, solange wir es richtig modelliert haben. Die Wahrscheinlichkeit eines Fehlers im Modell wurde im Projekt dadurch minimiert, dass die Modelle regelmäßig im gemeinsamen Plenum besprochen wurden.
Verglichen mit der Verwendung von Unit-Tests muss für modellbasiertes Testen zwar mehr vorgerarbeitet werden, da Modelle für das System entworfen werden müssen, aber es erleichtert die spätere Arbeit dadurch, dass die Tests, Testdaten und die erwarteten Outputs des Systems automatisch generiert werden. Auf lange Zeit gesehen verringert dies den Arbeitsaufwand, da bei Änderungen am Modell nur die neuen Daten generiert werden müssen und nicht wie bei Unit-Tests alle Tests per Hand angepasst werden müssen. Dies verringert die Anfälligkeit gegenüber Flüchtigkeitsfehlern.
Verglichen mit der Verwendung von Unit-Tests muss für modellbasiertes Testen zwar mehr vorgearbeitet werden, da Modelle für das System entworfen werden müssen, aber es erleichtert die spätere Arbeit dadurch, dass die Tests, Testdaten und die erwarteten Outputs des Systems automatisch generiert werden. Auf lange Zeit gesehen verringert dies den Arbeitsaufwand, da bei Änderungen am Modell nur die neuen Daten generiert werden müssen und nicht wie bei Unit-Tests alle Tests per Hand angepasst werden müssen. Dies verringert die Anfälligkeit gegenüber Flüchtigkeitsfehlern.
\section{Manueller Systemtest}
\sectionauthor{Patrick Wilde, Matthias Lange}
Im Rahmen des Teamod Bachelorprojekts wurden schon mehrere Systemtests definiert, welche hier noch einmal aufgegriffen werden.
Diese Tests haben die Aufgabe die Funktion des Systems grob zu überprüfen, aber man kann mit ihnen nicht sicherstellen, dass das System
Im Rahmen des TEAMOD Bachelorprojekts wurden schon mehrere Systemtests definiert, welche hier noch einmal aufgegriffen werden.
Diese Tests haben die Aufgabe, die Funktion des Systems grob zu überprüfen, aber man kann mit ihnen nicht sicherstellen, dass das System
komplett fehlerfrei funktioniert.
Die folgenden Tests konnten am Ende des Projekts nicht mehr ausgeführt werden, weil das Zugsystem wegen der COVID-19-Pandemie nicht mehr
zugänglich war.
Die folgenden Tests konnten am Ende des Projekts nicht mehr vollständig ausgeführt werden, weil das Zugsystem wegen der COVID-19-Pandemie nicht mehr zugänglich war.
\subsection{Kontinuierlicher Betrieb}
......@@ -92,4 +92,4 @@ Ein weiterer Test beschäftigt sich mit dem Ausfall des IXL. Auch hier wird das
\subsection{Befahren eines illegalen Elements}
Im letzten Test soll das falsche Abbiegen eines Zuges überprüft werden. Dafür muss vorher das Weichenkontrollprogramm des IXL ausgeschaltet werden, um manuelle Weichenstellungen über die Märklinstation zu erlauben, ohne einen Notstopp auszulösen. Anschließend wird das System gestartet. Nach einer kurzen Zeit wird dann eine beliebige Weiche auf der Route eines Zuges manuell gestellt, sodass dieser von seiner eigentlichen Route abkommt. Sobald der Zug dann das nächste Track Element, welches sich außerhalb seiner Route befindet, befährt, löst das IXL einen Notstopp aus.
\ No newline at end of file
Im letzten Test soll das falsche Abbiegen eines Zuges überprüft werden. Dafür muss vorher das Weichenkontrollsystem des IXL ausgeschaltet werden, um manuelle Weichenstellungen über die Märklinstation zu erlauben, ohne einen Notstopp auszulösen. Anschließend wird das System gestartet. Nach einer kurzen Zeit wird dann eine beliebige Weiche auf der Route eines Zuges manuell gestellt, sodass dieser von seiner eigentlichen Route abkommt. Sobald der Zug dann das nächste Track-Element, welches sich außerhalb seiner Route befindet, befährt, löst das IXL einen Notstopp aus.
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment