The Simulated-Universe
A Matrix solution

Simulationskern

Der Simulationskern ist für die Ausführung der Simulation, die in einer Shared-Library verpackt ist, zuständig. Er erzeugt die Worker-Threads und ist für die Zuteilung der Arbeitspakete an die Worker-Threads zuständig. In ihm wird das Timing, als freilaufende Simulation oder in einem festen Zeitraster, geregelt und die Verteilung von Signalen zwischen Objekten realisiert.

Das gesamte System ist darauf ausgelegt eine große Anzahl von unterschiedlichen Objekttypen und eine große Anzahl von Objekten zu verwalten. Es ist möglich die Objekt-Daten in einer Datenbank zu speichern und sie sowohl mit einer einfachen History als auch mit einer kompletten Versionsverwaltung zu koppeln.

Die Entwicklung aller Features des Simulationskerns ist noch nicht abgeschlossen. Der Simulationskern ist unter Linux entwickelt worden und es ist geplant für alle Major-Distributionen entsprechende Pakete zur Verfügung zu stellen.

Web-Anwendungsbasis

Um in eine laufende Simulation eingreifen zu können, um zum Beispiel Parameter anzupassen oder sich Ergebnisse anzeigen zu lassen, stellt der Simulationskern TCP/IP Schnittstellen zur Verfügung die von PHP-Scripten und von Java-Script Web-Sockets aus genutzt werden können. Dabei wird sowohl die verschlüsselte als auch unverschlüsselte Übertragung der Daten im JSON-Format unterstützt.

Speziell die Verwendung in Kombination mit JScript Web-Sockets ermöglicht die Unterstützung aller gängigen Web-Browser als Anwendungs-Clients, da die Simulation unabhängig von HTTP-Requests eine Aktualisierung der im Browser dargestellten Inhalte ermöglicht.

Die Verwendung eines Binären-Formats für den Datenaustausch zwischen Client und Simulationskern ist ebenfalls möglich und für Android-, iOS-Apps und anderen Nativen Betriebssystem Clients vorgesehen.

Die unterschiedlichen Kommunikationspfade sind noch nicht vollständig implementiert. Besonders die Bereitstellung einer verschlüsselten Kommunikation und der Kommunikation in einem Binärformat ist noch in der Realisierung.

UML-Codegenerator

Durch die Verwendung des UML-Codegenerators vereinfachst sich die Entwicklung und Integration einer Simulation erheblich. Der Simulationkern erwartet eine Reihe von Funktionen und Fähigkeiten die in einer Simulation zur Verfügung gestellt werden müssen. Die Generierung dieser Funktionen und der Abgleich von Änderungen an der Simulation mit einigen speziellen Funktionen macht den UML-Codegenerator zu einem wichtigen Werkzeug bei der Entwicklung von Simulationen.

Da die Simulation sich auf C++ als Programmiersprache stützt, ist die Generierung von C++ Source-Code Fragmenten integraler Bestandteil des Code-Generators. Da in UML2 eine vielzahl von unterschiedlichen Kombinationen der Modellelemente erlaubt sind und in sich in den meisten Fällen auch sinnvoll C++ Code daraus erzeugen lässt, ist und bleibt der Code-Generator eine stetig fortschreitende Entwicklung.

Aktuell ist der Code-Generator in der Lage UML2-Modelle des StarUML Modellers direkt einzulesen und auszuwerten. Eine Erweiterung für die Auswertung von XMI-Exporten des Enterprise Architect ist in Vorbereitung.