ODYSSEE

Willkommen bei ODYSSEE, der automatischen Teameinteilung für "Praxis der Softwareentwicklung" am KIT.

Was ist ODYSSEE?

ODYSSEE ist die rechnergestützte Verwaltung der Veranstaltung Praxis der Softwareentwicklung (PSE). Es steht für:

Odyssee
Distributes
Your
Students (to)
Software
Engineering
Exercises

Wenn Sie dieses Semester an PSE teilnehmen möchten, müssen Sie sich hier registrieren. Anschließend können Sie die verfügbaren Projekte ansehen und bewerten. Außerdem können Sie sich mit Kommilitonen zu Gruppen zusammenschließen, wenn Sie ein Projekt gerne gemeinsam bearbeiten möchten.
Danach wird unter Berücksichtigung Ihrer Wünsche und weiterer Nebenbedingungen die bestmögliche Zuteilung aller Anmeldungen zu den Projekten berechnet. Sobald diese Einteilung abgeschlossen ist, wird ODYSSEE Ihnen eine E-Mail senden, die Sie über Ihr zugewiesenes Projekt informiert. Sie können diese Information auch sehen, wenn Sie sich wieder in ODYSSEE einloggen.

Weitere Informationen zu den angebotenen Projekten erhalten Sie in der Auftaktveranstaltung. Denken Sie bitte auch daran, sich im Campus-System für das PSE anzumelden.

Derzeit laufendes PSE PSE Winter 2018/19

Anmeldebeginn Dienstag, 23. Oktober 2018 16:30
Anmeldeschluss Donnerstag, 25. Oktober 2018 23:59
Link zur Institutsseite

Projekte (vorläufig)

Mobile devices such as smart phones and tablets have a limited battery capacity. Multimedia creation (taking photos and videos) and consumption (Instagram, YouTube etc.) became an essential part of their usage.

Our topic is to develop a multimedia editing app for the evaluation of video encoders. By this, we understand a program consisting of several modules, that handle the creation of image sequences, and modules, that can modify image sequences (e.g. color filters, noise, blur, ...). The resulting image sequences generated by a combination of different modules will then be encoded with a (preexisting, e.g. H.264) video encoder. The next step of this task is to analyze and compare the distortions on encoded image sequences and search potential methods to improve the encoder.

 

The resulting tool could be used, e.g., to check the quality of video encoders and to find a good trade off of energy usage (in terms of computational effort) and image quality, as it is desirable in embedded systems.

 

The goal of this task is to carry out a complete software development project as a software engineering team with 5 members. In particular software design, quality assurance procedures, implementation and teamwork will be practiced.

Where is my stuff?
Using small electronic devices, we can track our objects for a while. But currently they have limitations.
Existing trackers are typically Bluetooth based low-power IoT devices, that can work with a small battery for a long time.
However they are limited with working distance and as they measure the signal strength, they can only report the distance, not direction or location.

Alternatively GPS trackers with dedicated SIM card or long distance communication protocols can be used for object tracking.
These trackers require significant hardware resources (GPS, SIM card). Although they can find the accurate location, typically they have high power consumption and limited battery life.

This project combines the properties of the two without their limitations.
It will be low power consumption using low-power Bluetooth trackers and it will be able to locate the objects accurately using a mobile phone.
It will consist of 2 components:
1) The database: The users will be able to register their low-energy Bluetooth trackers on the database and enable it to search anytime (optional).
2) A mobile app that has a copy of the database and uploads its location whenever it encounters any Bluetooth tracker.

The mobile app will be used as a traveling sink node for the wireless network of Bluetooth trackers.
This way, the crowd (via the mobile app) will help locating the missing objects.

IPD Tichy

Wöchentliche Treffen: Do. 14:00-15:30 50.34 SR 348

Der Imagine Cup ist ein Technologiewettbewerb von Microsoft für Studenten.
Es geht darum, eure eigene Idee mit Technologie/Software umzusetzen und gegen andere Teams anzutreten.
Ihr könnt dabei selbst entscheiden, was euer PSE Thema sein wird und das Ergebnis dann im Wettbewerb einreichen.

Die Teilnehmeranzahl pro Team beim Imagine Cup ist auf 3 beschränkt, weshalb wir auch im PSE mit 3er Teams arbeiten werden.
Der Projektumfang innerhalb des PSE ist entsprechend angepasst.

In den Jahren 2014-2018 konnten wir jeweils mit einem Team das nationale Finale für uns entscheiden und uns dann im internationalen Finale mit den besten Teams aus der ganzen Welt messen!

Mehr Infos:

An Artificial Neural Network (ANN) is a computing system designed to mimic the biological neural network. Applications of ANNs include voice recognition, image processing, object classifications and many others.  ANNs are made up of a number of simple, highly interconnected processing nodes or neurons, which work independently. Since parallelism is inherent in ANNs, implementing them on dedicated hardware accelerators  is more efficient compared to the software implementation on sequential machines.

The focus of this lab is to implement ANNs on a heterogeneous platform, which consists besides a General Purpose Graphics Processing Unit (GPGPU), also of the Intel Movidius Neural Compute Stick or optionally of an FPGA accelerator board. Using this heterogeneous platform,  an image classification system is built which comprises a GUI-based front-end and a back-end with the hardware accelerators.  It is important to note, that no hardware knowledge is required in this lab. For instance, the FPGA board can be programmed using the OpenCL-API, which abstracts any hardware details.

Hintergrund

Aktuellen Softwareentwicklungsprojekten stehen heutzutage eine Vielzahl an Werkzeugen und Tools zur Verfügung um den Entwicklungsprozess zu unterstützen. Angefangen bei Versionsverwaltung, über Tools für den Build-Prozess bis hin zu automatisierten Build-Systemen existiert ein Zoo unterschiedlichster Anwendungen. Im Rahmen von CI/CD werden Deployment-Prozesse ebenfalls automatisiert und müssen in der Build-Pipeline berücksichtig werden.

Historische und langlaufende Projekte können nicht ohne erheblichen Aufwand auf die aktuellen Tools angepasst werden, wohingegen Entwickler bei neuen Projekten gerne auf die Unterstützung der modernen Tools setzen. Dies hat zwangsläufig die Koexistenz verschiedener Werkzeuge zur Folge: SVN/Git für die Versionsverwaltung, Maven/Gradle für den Build-Prozess oder Jenkins/GitLab-Ci/Bamboo für den automatisierten Build, um nur einige Beispiele zu nennen. Erschwerend kommt hinzu, dass zwischen den Projekten Abhängigkeiten existieren, sodass beim Bauen eines Projektes automatisch alle davon abhängenden Projekte ebenfalls neu gebaut werden müssen.

Zunehmend wird es schwerer den Überblick über den Zustand der Projekte zu behalten. Build-Abhängigkeiten über Build-Systemegrenzen hinweg sind nicht möglich.

An dieser Stelle soll dieses PSE-Projekt ansetzen. Es soll eine Projekt-Management Anwendung entwickelt werden, die zum einen einen Überblick über die Projekte sowie deren Zustand (letzter Commit, Build-Status, …) gibt. Zum anderen soll eine Möglichkeit geschaffen werden Build-Abhängigkeiten über Systemgrenzen hinweg zu definieren.

Was soll das Programm können?


Zentraler Punkt der Anwendung soll ein Dashboard sein, das sämtliche Projekte, sowie weitere relevante Informationen anzeigt (Source-Code Repository, Letzter Commit, Ergebnis des letzten Builds, Deployments, Abhängigkeiten, usw.). Für jedes Projekt soll ebenfalls eine Detail-Ansicht existieren, die weitere Information enthält.

Als weitere Funktion soll das Programm Abhängigkeiten zwischen Projekten verwalten können. Beim Bauen dieser Anwendungen soll diese Abhängigkeiten berücksichtigt werden und durch eine Integration mit den vorhandenen Build-Systemen sicherstellt werden, dass alle Build-Artefakte auf dem aktuellen Stand sind.

Das Programm soll als Java-Serveranwendung mit einer Weboberfläche entwickelt werden. Die vorhandene, moderene Build- und Deployment-Infrastruktur kann selbstverständlich auch für das PSE eingesetzt werden.

Anwendung
   
Das Ergebnis dieses PSE-Projektes würden wir gerne produktiv bei uns einsetzen, um einen besseren Überblick über die aktuell existierenden Software-Projekte zu erhalten. Ebenfalls soll es uns helfen eine kontinuierlich hohe Qualität der Softwareentwicklungsprozesse sicherzustellen.

Maschinelles Lernen (ML) umfasst Methodik und Algorithmik, um aus Daten neue Erkenntnisse zu gewinnen. Sowohl in der Forschung als auch der Praxis ist ML zu einem integralen und alltäglichen Bestandteil geworden. Je weitreichender ML in unseren Alltag voranschreitet, desto wichtiger wird auch, dass Nutzer die von Maschinen berechneten Ergebnisse und Vorhersagen verstehen können. Zuletzt hat gar das "Recht auf Erklärung algorithmischer Entscheidungen" Einzug in die Europäische Datenschutzgrundverordnung gefunden.

Verständlichkeit und Nachvollziehbarkeit von Maschinellem Lernen sind aber auch notwendig, um Nutzer in maschinellen Lernprozesse einzubeziehen. Durch interaktive Feedbackschleifen lassen sich beispielsweise Systeme entwickeln, die Präferenzen und Domänenwissen der Nutzer in die algorithmischen Entscheidungen integrieren. In diesem Bereich gibt es viele offene Forschungsfragen, wie z.B. in welchen Situationen der Nutzer vom System befragt werden soll, oder welche Informationen der Nutzer benötigt, um Feedback geben zu können.

In diesem PSE Projekt soll ein System entworfen und entwickelt werden, um diese Forschungsfragen mit Nutzerexperimenten zu untersuchen. Das System soll unterschiedliche Informationen zu ML Ergebnissen ansprechend visualisieren (browserbasiert), Feedback von Nutzern erfragen und den Lernprozess dokumentieren. Darüber hinaus sollen in dem System Nutzerstudien verwaltet und Schnittstellen für die Auswertung bereitgestellt werden. Die verwendeten ML Algorithmen kommen dabei aus Forschungsprojekten des Lehrstuhls und werden über eine API zur Verfügung gestellt (https://github.com/englhardt/OcalAPI.jl).

Industrielle Automatisierungssysteme steuern Produktionsanlagen, überwachen Fertigungsprozesse und tauschen Daten mit Managementsystemen aus. Dabei kommt es auf Verfügbarkeit rund um die Uhr und häufig auch auf Echtzeitfähigkeit an. Im Rahmen von Industrie 4.0 werden solche kritischen Automatisierungssysteme zunehmend mit dem Internet verbunden. Allerdings sind Automatisierungsexperten selten Security-Experten, und so weisen viele dieser Systeme Schwachstellen auf, die eine ganze Produktionsanlage zum Stillstand bringen können. Am Fraunhofer IOSB wurde das Security-Testing-Framework ISuTest für industrielle Automatisierungssysteme entwickelt. Es kann entwicklungsbegleitend eingesetzt werden, führt Security-Tests gegen Automatisierungssysteme durch und sammelt Ergebnisse, die auf mögliche Schwachstellen hinweisen. Entwickler können anhand dieser nun Schwachstellen entdecken und beheben.

Aufgabe dieses PSE ist es, eine grafische Benutzeroberfläche zur Steuerung und Ergebnisdarstellung der Security-Tests mittels ISuTest zu entwickeln. Das ISuTest-Framework lässt sich komplett über eine API steuern. Eine Implementierung der API stellen wir in einer Dockerumgebung als funktionsfähiges Mockup zur Verfügung. Automatisierungsexperten sollen über die GUI Security-Tests grafisch ansprechend anlegen, konfigurieren, starten und auswerten können.

Eingesetzte Tools und Techniken: QT, C++, Docker, STOMP/ActiveMQ

Machine Learning Lösungen werden häufig als "Pipelines" mit einer Reihe von Verarbeitungsschritten von den Rohdaten bis zum fertigen Modell umgesetzt. Die ML-Pipelines werden zumeist über Skriptsprachen aus bestehenden oder neu entwickelten Funktionsbausteinen aufgebaut und konfiguriert.

Ziel dieses PSE-Projektes ist die Umsetzung einer grafischen Oberfläche für die Konfiguration und die Laufzeit-Überwachung von Machine-Learning Pipelines. Als Grundlage steht eine Bibliothek mit ML-Funktionsbausteinen, sowie eine Datenbank mit Beispieldaten für das Training von Modellen zur Verfügung.

IPD Reussner, IPD Koziolek

In diesem Projekt entwickeln Studierende eine eigene Android-App. Dabei haben sie die Möglichkeit, frei ein eigenes Thema vorzuschlagen oder ein von den Betreuern definiertes Thema zu wählen.
Während der Vorlesungszeit erhalten die Studierenden dazu eine Android-Schulung, die in Kooperation mit dem Karlsruher Unternehmen Arconsis durchgeführt wird.



Ziel ist die Implementierung eines Bilderquiz mit Editorfunktionen. Die App soll es ermöglichen schnell mit anderen Mitspielern Gegenstände auf Bildern zu identifizieren und zu benennen. Ein Editor erlaubt es Spielern neue Aufgaben selbst zu erstellen.

Wichtige Eckpunkte:
  • Plattformübergreifende Web Applikation, z.B. als Progressive Web App (PWA). Das Quiz ist also spielbar auf allen Web-fähigen Plattformen wie Desktop PC, Smartphone oder Tablet.
  • 2 Spielmodi: Solospiel, Duell
  • Modulare Architektur/Datenstruktur um die App erweitern und anpassen zu können (z.B. neue Aufgabentypen oder weitere Spiel-Modi).
  • Gamification Elemente wie Leaderboards, Achievements, Scoreboards
  • "Community"-Editor zur Erstellung neuer Bilderrätsel. D.h. die Spieler selbst können neue Aufgaben erstellen und einstellen. Der Fokus liegt in diesem Projekt vor allem auf der leichten Erstellbarkeit von neuen Aufgaben und nicht auf der Berücksichtigung einer notwendigen Redaktion (Überprüfung auf Richtigkeit, etc.) der neuen Aufgaben. Der Editor muss auch nicht zwingend auf allen Endgeräten funktionieren. Eine Desktopvariante ist ausreichend.
  • Client Server Architektur; Software Patterns
Link zur Projektseite am Fraunhofer IOSB: SPOT.ME

Visual Analytics is utilizing graphics to enhance human cognition to understand a problem better or find 'a needle in the haystack' within a huge amount of data. Industrial Network Security aims to understand the communication network traffic generated in an  industrial production system. Analyzing the traffic generated by underlying industrial protocols is the primary step. Real-time visualization of analysed network data will help the end-user to understand the system's communication behavior and changes within it more clearly. Deviations or incidents can be detected visually as they are occurring or already persisting.


Within the project, students would be provided with JSON stream of analysed data. An open-source distributed streaming platform Apache KAFKA (Java Platform) need to be incorporated for publishing and subscribing to the streams. The visualization tool (Web-based, with/without JavaScript) will subscribe to KAFKA to receive stream(s) and visualize different information in different formats (charts, network, etc.). Interactions with visualization formats and data need to be defined and implement.

Das Mehr-Augen-Prinzip dient dazu, wichtige Entscheidungen durch eine oder mehrere Personen zu überprüfen und so Fehler zu minimieren bzw. zu verhindern. Das Vier-Augen-Prinzip gehört dabei zu den bekanntesten Beispielen, lässt sich aber auf beliebig viele Augenpaare erweitern.

Beispiele für das Mehr-Augen-Prinzip sind der Kassenprüfer, der den Schatzmeister überprüft (bei Vereinen) oder eine Zweitmeinung eines anderen Arztes, der die Diagnose des ersten Arztes überprüft.

Allgemein lässt sich sagen, dass das Mehr-Augen-Prinzip bei der Authentifizierung, Entscheidungsfindung, Qualitätskontrolle und Zugriffskontrolle zum Einsatz kommt.


Auch im Zeitalter der Digitalisierung ist es wünschenswert dieses Prinzip einzusetzen. Allerdings findet man nur wenige Tools, die dieses umsetzen. Deshalb soll im Rahmen dieses PSE-Projekts ein Webdienst entwickelt werden, der das Mehr-Augen-Prinzip generisch umsetzt. Dazu gehört, dass Nutzer Endpunkte mit eigenen Richtlinien definieren können (Anzahl der Signaturen, Rollen der Unterzeichner, etc.). Außerdem sollen dem Endpunkt beliebige Dokumente übergeben werden können.

Für die Verifikation der Benutzer und Rollen, soll eine Anbindung an LDAP (Lightweight Directory Access Protocol) realisiert werden.

Anwendungsbeispiele:

  • Dokument muss von verschiedenen Rollen abgezeichnet werden.

  • Dokument muss von mehreren Parteien in einer definierten Reihenfolge abgezeichnet werden.

  • Der Autor kann das Dokument verändern, mehrere Personen zusammen können das Dokument lesen (Testament).



Die Programmiersprache und die Programmierumgebung dürfen frei gewählt werden, solange sie den Richtlinien des PSE-Moduls entsprechen.