Skip to content

Dokumentation Softwaredesign

Zeeljko edited this page Jul 13, 2017 · 45 revisions

1. Einführung

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.

2. Aufgabenstellung

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.

3. Detaillierter Komponentenüberblick

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.

3.1 Fahrzeug

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:

Klassendiagramm Fahrzeug

3.2 Ampelsteuerung (TrafficLight)

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.

TrafficLight

3.3 Verkehrssimulation

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:

3.3.1 Base

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.

Base

3.3.2 Utilities

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.
Utilites

3.3.3 WCFInterfaces

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.

WCFInteface

3.4 GUI

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:

3.4.1 Game1

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.

Game Klasse

3.4.2 Helper

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

Helper

4. Anleitung zum Starten der Simulation

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,...).

Projekt

                        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.

Projekt_ausfuehren

           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.

prozesse

                                       Abb3.: Erfolgreiche Ausführung  

Anschließend öffnet sich die Simulationskarte und die Simulation startet:

Simulationskarte

                                            Abb.4: Simulationskarte