-
Notifications
You must be signed in to change notification settings - Fork 0
Dokumentation Softwaredesign
Dieses Dokument dient zur Beschreibung des Softwaredesigns im Rahmen des Projekts Verkehrssimulation. Inhalte dieses Dokuments sind detailliertere Erklärungen zur Dokumentation der Softwarearchitektur dieses Projektes (siehe Dokumentation Architekturdokumentation Verteilte komponentenbasierte Verkehrssimulation Kapitel 5.1). Darunter wird die Kommunikation zwischen den jeweiligen Komponenten beschrieben und zur Visualisierung der Relationen zwischen den Klassen dazugehörige Klassendiagramme der einzelnen Module dargestellt. Das letzte Kapitel dieser Dokumentation zeigt, wie das Projekt ausgeführt wird.
Folgende Punkte soll die Simulation unterstützen:
- Mikroskopische Simulation der Fahrzeuge (PKW und LKW) und Ampelanlagen
- Zusammenhängendes Verkehrs-/Straßennetz
- Geregelte und ungeregelte Kreuzungen
- Verhalten der Verkehrsteilnehmer sollte weitgehend parametrisierbar sein (variabel/zufällig/individuell)
- Verhalten der Lichtsteueranlage parametrisierbar, Regelung über eigenen Prozess
- Anzahl der Einfahrtsstraßen in das System zufahrenden Fahrzeuge regelbar
- Grafische Darstellung und einfache Benutzerschnittstelle; Konfiguration-GUI nicht unbedingt notwendig
Als Erweiterung müssen zusätzlich folgende Punkte realisiert werden:
- Die Simulationen sollen untereinander vernetzt werden, d.h. dass Fahrzeuge bei einer Straße einer Simulation ausfahren und dann in der anderen Simulation über eine Straße wieder einfahren können. Dafür müssen zumindest zwei der Laborgruppen miteinander arbeiten und ein Handover-Protokoll definieren, welches es erlaubt, ein Auto aus der Simulation auszufahren und bei der Simulation der anderen Gruppe wieder einzufahren.
- Ebenfalls muss es möglich sein, beliebige Hindernisse auf der Straße ein/ausschaltbar zu machen, z.B. per Mausklick defekte Autos bzw. Baustellen zu positionieren/definieren. Ein Umfahren der Hindernisse mit eigens dafür definierten Straßen ich nicht erlaubt.
Die Architektur samt Komponenten/Module und deren Aufgaben ist in der Dokumentation Architekturdokumentation Verteilte komponentenbasierte Verkehrssimulation im Kapitel 5 dargestellt. In den folgenden Abschnitten werden zur besseren Nachvollziehbarkeit der innere Aufbau aus Ebene 2 der Bausteinsicht (siehe ebenfalls Architekturdokumentation) der einzelnen Komponenten mittels der wichtigsten Klassendiagramme näher erläutert.
Zu dieser Komponente gehören die geplanten Fahrzeugarten, wie Autos, LKWs und Motorräder. Die Fahrzeuge bewegen sich unter Beachtung von Verkehrsregeln, diverser Kreuzungen und anderen Verkehrsteilnehmer selbstständig auf der definierten Straßenkarte (siehe Kapitel 3.4 GUI). Dies führt dazu, dass die Fahrzeuge selbst entscheiden, ob sie beschleunigen, bremsen oder in eine bestimmte Straße abhängig vom Ampelstatus und der Kreuzungsart abbiegen. Dieses Modul kommuniziert laut Architekuturdiagramm mit einer von der Simulationskomponente angebotenen Schnittstelle.
Das folgende Klassendiagramm zeigt die Klassen des Fahrzeugkomponente, wobei die einzelnen Klassenparameter- und funktionen in der Dokumentation Implementierung im Kapitel Fahrzeuge zu finden sind:
Diese Komponente soll laut Aufgabenstellung über einen eigenen Prozess geregelt werden und zusätzlich parametrisierbar sein. Dabei wird die Steuerung der einzelnen Ampeln pro Kreuzung (TrafficLightGroups) hier übernommen und die notwendigen Parameter anschließend an die Simulation weitergegeben. Weitere Details sind in der Dokumentation Implementierung im Kapitel Ampelsteuerung zu finden.

Die Verkehrssimulation ist, wie in der Architekturdokumentation beschrieben, ein eigener Prozess (Executable) und kommuniziert mit den Komponenten Ampelsteuerung, Fahrzeug und GUI über definierte Schnittstellen (siehe Dokumentation Implementierung Kapitel Simulation), um sich die notwendigen Informationen zu holen. Die Simulation beinhaltet folgende Teilkomponenten:
Diese Komponente besteht aus folgenden Klassen, deren Funktionen, Parameter und Schnittstellen in der Dokumentation Implementierung genauer nachgelesen werden können. Grundsätzlich sind in dieser Komponente alle Basisklassen mit den Eigenschaften der GUI-Elemente zu finden.

In den folgenden Klassen sind diverse Konfigurationen enthalten, die für die Simulation notwendig sind. Hier sind z.B. der Takt (Star/Stop-Funktion), Abstandsfunktionen und Parameter für die Fahrzeuge definiert.

Diese Komponente mit der Klasse Simulator Service steht in Beziehung zu allen Klassen, die in den vorherigen Kapiteln 3.3.1 und 3.3.2 beschrieben wurden, und ist für die gesamte Simulationslogik zuständig.

Die GUI stellt ebenfalls einen eigenen Prozess dar und ist mit dem MonoGame Framework entwickelt. Diese ist einfach aufgebaut und bietet dem Benutzer eine einfache Benutzerschnittstelle. Zur Kommunikation mit der Simulation ist ebenfalls, wie erwähnt, eine Schnittstelle definiert, die in der Dokumentation Implementierung im Kapitel GUI genauer beschrieben ist. Folgende Beziehungen sind zwischen den Klassen gegeben:
Die Klasse Game1 implementiert alle notwendigen Funktionen, die für die Darstellung des Straßennetzes, diverser Ampeln und der Verkehrsteilnehmer notwendig ist. Dabei vom Interface IDisposable angebotene Methode wichtig.

Diese Teilkomponente enthält zwei Hilfsklassen, die Funktionen für die GUI-Elemente implementieren. Weitere Details sind wieder in der Dokumentation Implementierung zu finden.

Dieser Abschnitt beschreibt, wie die Simulation gestartet werden kann. Im ersten Schritt muss das Visual-Studio Projekt RunSimulation.sln als Administrator ausgeführt werden (dies wird ohnehin beim Versuch das Projekt ohne Administratorrechte zu starten automatisch von Visual Studio vorgeschlagen). Dieses enthält alle einzelnen Projekte (Traffic control, Simulation,...).
Abb.1: Projekt RunSimulation.sln im lokalen Projektordner als Administrator starten
Im nächsten Schritt kann das Projekt mit dem Start-Button gestartet werden. Davor sollte die Projektmappe zur Sicherheit noch einmal erstellt werden.
Abb.2: Projekt als Administrator gestartet (siehe Beschreibung in oberster Fensterzeile). Das Projekt mit dem Start-Button ausführen
Anschließend erscheinen drei neue exe-Fenster, in dem die Bestätigung des erfolgreichen Starts der einzelnen Prozesse und die Ausgabe der Karten-IDs (Simulator.exe) zu sehen sein sollen.
Abb3.: Erfolgreiche Ausführung
Anschließend öffnet sich die Simulationskarte und die Simulation startet:
Abb.4: Simulationskarte