Abschluss Master of Science Informatik und Fakultätspreis
Februar 2022
Master-Studium
Im Februar 2022 habe ich das Master-Studium "Informatik" an der Hochschule Furtwangen erfolgreich mit Auszeichnung abgeschlossen sowie den Fakultätspreis des Jahrgangsbesten gewonnen.
Die Anforderungen an eingebettete Systeme steigen. Immer mehr Anwendungen mit steigender Komplexität sollen darauf ausgeführt werden, ohne dass der Energiebedarf zu stark zunimmt. Nur durch bessere Hardware lässt sich diese Herausforderung allerdings nicht bewältigen. In dieser Arbeit werden verschiedene Ansätze zur Optimierung eingebetteter Systeme betrachtet. Es werden Optimierungen der Software und der Einsatz rekonfigurierbarer Systeme vorgestellt. Außerdem werden Techniken zur Optimierung des Speichersystems erläutert. Dieses hat einen besonders hohen Anteil am Energieverbrauch eines eingebetteten Systems.
Empfehlungssysteme sind aus dem modernen Web nicht wegzudenken. Für Unternehmen können mit relevanten Empfehlungen enorme Summen an Geschäftswert generiert werden. Für Benutzer wird dabei ein personalisiertes Erlebnis auf der Plattform geboten. In dieser Arbeit werden zunächst die Herausforderungen an Empfehlungssysteme sowie die unterschiedlichen Arten von Algorithmen umrissen. In einem Proof-of-Concept (PoC) werden zwei verfügbare Lösungen – Amazon Personalize und LibRec – untersucht und bewertet. Grundlage des PoC ist ein offline Wikipedia-Modell, welches eine ausgewählte Untermenge von Artikeln aus unterschiedlichen Kategorien in einem zusammenhängenden Graphen abbildet. Zur Generierung von Daten für das Empfehlungssystem wird der Graph von simulierten Benutzern zufällig durchlaufen. Jeder Nutzer bekommt dabei pro Sitzung eine Lieblingskategorie. Artikel aus dieser Kategorie werden sehr gut bewertet, im Graph weit entfernte Artikel bekommen in dieser Sitzung schlechtere Bewertungen. Das Empfehlungssystem soll die Zugehörigkeit der Artikel zu den Kategorien reproduzieren, ohne explizite Kenntnis der Kategorien zu haben. Als Bewertungskriterium werden für jeden Artikel die besten fünf Empfehlungen des jeweiligen Empfehlungssystems betrachtet. Als Metrik dient dabei der Prozentsatz, wie viele der Empfehlungen zur selben Kategorie gehören, wie der Artikel, für den die Empfehlungen gegeben werden. Amazon Personalize erreicht mit diesem Test eine Präzision von über 95%, LibRec erreicht dabei bis zu 73%.
Software wird allgemein immer komplexer und damit auch teurer. Durch die Modularisierung einer Anwendung können der Wartungsaufwand gesenkt und die Weiterentwicklung beschleunigt werden. In Java 9 wurde mit dem Java Platform Module System (JPMS) ein Modulsystem veröffentlicht, das in die Sprache selbst integriert ist. Das JPMS sollte die Modularisierung des Java Development Kits unterstützen und gleichzeitig ein einfach zu benutzendes Modulsystem für Anwendungsentwickler bieten. Dabei hat das Modulsystem in der Community aktuell noch eine sehr schwache Verbreitung. In dieser Arbeit werden die Konzepte des JPMS dargestellt und mögliche Gründe für die schwache Verbreitung gesucht. Dazu wird ein Vergleich zum Modulsystem OSGi gezogen, welches im Java-Ökosystem bereits etabliert ist. Zusätzlich werden auch aktuelle Technologie-Trends außerhalb der Java-Plattform betrachtet.
Das JPMS hat seine Aufgabe beim Redesign des JDK erfüllt. Die Möglichkeiten des modularen JDKs bieten einen klaren Mehrwert für die Java-Plattform, insbesondere beim Einsatz auf eingebetteten Systemen oder in Cloud Computing-Szenarien. Aus Sicht eines Anwendungsentwicklers bringt das JPMS allerdings mehr Einschränkungen als neue Möglichkeiten, vor allem im Vergleich zu OSGi. Zusätzlich wird die Notwendigkeit eines plattformgebundenen Modulsystems durch aktuelle Trends außerhalb der Java-Plattform weiter entkräftet. Dazu zählen der wachsende Einsatz von Microservices und Container-Technologien, die ebenfalls das Ziel verfolgen, Softwarekomponenten zu isolieren. Auf Seite der JDK-Entwickler existieren aktuell keine Pläne, die Probleme des JPMS zu bearbeiten. Eine steigende Beliebtheit des Modulsystems ist aus unserer Sicht daher unwahrscheinlich.
Digitale Zwillinge als OSGi-Komponenten mit Spring Boot und REST-API
Februar 2021
Master-Studium
Wissenschaftliche Arbeit
OSGi-Bundles sind modulare Komponenten, die bei Bedarf dynamisch zur Laufzeit ausgeführt werden können. Sie können durch das Laufzeitsystem Ressourcen und Funktionalitäten teilen, können aber auch isoliert voneinander betrieben werden. Im Rahmen dieser Arbeit wird das Konzept des digitalen Zwillings vorgestellt, welches die virtuelle Abbildung eines realen Objektes oder Prozesses beschreibt. Es wird ein Vorgehen gezeigt, wie sich die OSGi-Technologie einsetzen lässt, um solche Abbildungen automatisiert erzeugen und ausführen zu können. Die Verwaltung der Instanzen wird dabei über eine REST-API ermöglicht. Die digitalen Zwillinge sollen in der Lage sein, REST-APIs als Server anbieten und als Client verwenden zu können. Dafür wird das umfangreiche Java-Framework Spring Boot verwendet, welches bereits viele verschiedene Komponenten enthält und sich gut erweitern lässt.
Abschluss Bachelor of Science: Allgemeine Informatik/Technische Informatik
Februar 2020
Bachelor-Studium
Im Februar 2020 habe ich das Bachelor-Studium "Allgemeine Informatik" mit der Vertiefungsrichtung "Technische Informatik" an der Hochschule Furtwangen erfolgreich abgeschlossen.
Nutzung des SICK Gateway-Systems TDC-E als Edge-Computing-Komponente
Dezember 2019
Bachelor-Studium
Thesis
Von September 2019 bis Dezember 2019 habe ich meine Bachelor-Thesis zum Thema "Nutzung des SICK Gateway-Systems TDC-E als Edge-Computing-Komponente" bei der Firma SICK in Waldkirch verfasst.
Webanwendung für Architektur-Überblicksgrafiken (Spring Boot, Jenkins, Vue.js, TypeScript, JUnit)
Juli 2019
Bachelor-Studium
Semesterprojekt
Das Projekt hat das Ziel, eine Webanwendung zur Verwaltung und dynamischen Informationsanreicherung von Architekturüberblicksgrafiken zu erstellen. Da bei der Entwicklung eines Softwaresystems viele verschiedene Dokumente und Grafiken entstehen und dabei die Übersicht schnell verloren gehen kann, soll die zu entwickelnde Software dabei unterstützen, die Kommunikation zwischen den Architekten und Entwicklern zu verbessern und den Überblick für das Projektmanagement und für sämtliche Projektbeteiligte zu fördern. Das Tool soll den Entwicklungsprozess von Softwaresystemen optimieren, indem Architekturüberblicksgrafiken mit Informationen in verschiedener Form bequem und dynamisch angereichert werden, sowie für verschiedene Zielgruppen angepasst dargestellt werden können.
Mein Praxissemester von September 2018 bis Februar 2019 habe ich bei der Firma SICK in Waldkirch absolviert. Während dieser Zeit habe ich an verschiedenen Projekten selbstständig oder in kleinen Teams gearbeitet.
Druckeranwendung und Bildbearbeitung unter Android
Juli 2018
Bachelor-Studium
Semesterprojekt
Die Ernst Reiner GmbH & Co. KG aus Furtwangen, die seit 1913 auf die Entwicklung und Herstellung von Stempeln und Kennzeichnungswerkzeugen spezialisiert ist, schafft mit der jetStamp-Produktreihe eine portable Druckerlösung für schwarz-weiß-Drucke. In Kooperation mit der Ernst Reiner GmbH & Co. KG entstand im Rahmen des Projektes eine Android-App, die die Funktion des jetStamp graphic 970 erweitert, sodass er als vollständig portabler Drucker verwendbar ist. Der portable Drucker hat in seinem internen Speicher Platz für Bilder, die über USB und Bluetooth von einem Computer übertragen werden können. Durch die entwickelte App wird der regelmäßige Gang zu einem Computer ersetzt, sodass vom Smartphone aus Bilder bearbeitet und übertragen werden können.
Mein Schwerpunkt in dem Projekt lag in der Erstellung, Bearbeitung und Aufbereitung von Druckbildern in der Android-App. Ich habe Funktionen zum Einfügen, Verschieben, Drehen, Skalieren und Zuschneiden von Bildern und Texten entwickelt, damit in der App bequem beliebige Druckbilder zusammengestellt werden können. Besonders interessant war dabei der optimierte Einsatz des Floyd-Steinberg-Algorithmus, um mittels Dithering farbige Bilder durch Graustufen auf dem schwarz-weiß-Drucker ausgeben zu können.
Diese Arbeit stellt einige grundlegende Webtechnologien vor, die auf Webservern und in Webbrowsern eingesetzt werden. Diese Techniken sind bereits Mitte der neunziger Jahre entstanden und werden bis heute eingesetzt und weiterentwickelt. Bei der Entwicklung nativer Anwendungen, zum Beispiel für die Windows-Plattform, reicht oftmals eine einzige Programmiersprache für Layout und Funktionalität. Doch das World Wide Web hat sich anders entwickelt. So gibt es Auszeichnungssprachen für das Layout einer Website und verschiedene Skriptsprachen für Webbrowser und Webserver. In dieser Arbeit wird zum einen ein Überblick gegeben, welche Sprache wie funktioniert und für welchen Zweck eingesetzt wird. Der zweite Teil beschreibt die objektorientierte Programmierung einer serverseitigen Skriptsprache. Außerdem wird ein Framework vorgestellt, um einheitlich in dieser Sprache Websites erzeugen zu können.
Die Idee für unser Projekt Floppy entstand daraus, dass wir alte Hardware wiederbeleben und damit etwas kreatives Schaffen wollen. Dabei sind wir auf die Idee gekommen, Musik zu erzeugen. Anschließend haben wir uns darüber informiert welche Möglichkeiten uns offenstehen. Dabei sind wir auf Videos in YouTube gestoßen, in denen mit Floppy-Laufwerken Musik erzeugt wird. Unsere Gruppe fand diese Art der Musikerzeugung interessant, und da es über den Raspberry Pi gesteuert werden kann, für unser Projekt geeignet.
In einem ersten Versuch haben wir den Step-Motor eines Diskettenlaufwerkes angesteuert. Der Step-Motor des Lesekopfes ist der eigentliche Faktor bei der Tonerzeugung. Der Motor an sich erzeugt zum einen durch seine Motorbewegung ein Geräusch, zusätzlich kratzt der Lesekopf auf der eingelegten Diskette. Der Schrittmotor bewegt sich immer um einen Schritt, wenn sich der Wert an einem bestimmten Pin des Laufwerkes von High auf Low ändert. Die Richtung wird durch einen zweiten Pin angegeben. Durch Low auf dem Richtungs-Pin des Laufwerkes bewegt sich der Schrittmotor bei einem Wechsel nach vorwärts (in Richtung der Mitte der Diskette), High auf dem Richtungs-Pin wirkt entsprechend entgegengesetzt.
Ein Webinterface ermöglicht die Verwaltung und den Upload von MIDI-Dateien. Über das Webinterface können Midi-Dateien ausgewählt werden, die dann durch die Disketten wiedergegeben werden. Auf einem LCD-Display wird der aktuell abgespielte Titel ausgegeben.