Themenliste für Bachelorarbeiten im WS 2022/2023.
Themen für Bachelorarbeiten im WS 2022/2023
Im Folgenden finden Sie Themenvorschläge für Bachelorarbeiten im WS 2022/2023. Sie finden bei jedem Thema neben einer Kurzbeschreibung auch noch die Kontaktperson. Wenn Sie sich für ein Thema näher interessieren, können Sie jederzeit Kontakt aufnehmen – natürlich auch schon gerne vor Beginn der Lehrveranstaltung. Die Themen werden bis zur Vorbesprechung der Lehrveranstaltung noch laufend ergänzt.
Der Qualitätsstandard ISO/IEC 5055: Überblick und Java basierte Werkzeugunterstützung
Das IT-CISQ Konsortium hat einen Vorschlag für automatisch messbare Source Code Qualitätsmetriken gemacht. Dieser Vorschlag wurde im Jahr 2021 als ISO/IEC 5055 Standard verabschiedet. Ziel der Arbeit ist es, für die Programmiersprache Java
-
- einen Überblick über den Standard zu geben,
- zu analysieren, welche der vorgeschlagenen Metriken (CWE-basiert) durch welche statische Analysewerkzeuge ermittelt werden können,
- im Rahmen einer kleinen Fallstudie die Eignung der identifizierten Werkzeuge zu untersuchen und zu beurteilen.
Betreuung: Reinhold Plösch
Secure Coding nach ISO/IEC 5055: Experimentelle Analyse
Der im Jahr 2021 verabschiedete Standard ISO/IEC 5055 definiert u.a. eine Reihe von CWE-basierten Metriken zur Identifikation von Security-Problemen in Software durch statische Analyse des Source Codes. Ziel der Arbeit ist es, für die Programmiersprache Java
-
- einen Überblick über die in ISO/IEC 5055 definierten Metriken zur Messung der Security zu geben,
- ein minimales Set an Open-Source Werkzeugen zu identifizieren, das alle im Standard definierten Metriken erheben kann,
- im Rahmen eines detaillierten Experiments zu zeigen, welche Ergebnisse die ausgewählten Werkzeuge liefern und diese Ergebnisse in Bezug auf deren Qualität (vor allem false-positives) zu beurteilen.
Betreuung: Reinhold Plösch
Energieeffizienz nach ISO/IEC 5055: Experimentelle Analyse
Der im Jahr 2021 verabschiedete Standard ISO/IEC 5055 definiert u.a. eine Reihe von CWE-basierten Metriken zur Identifikation von “Energieverschwendung” in Software durch statische Analyse des Source Codes. Ziel der Arbeit ist es, für die Programmiersprache Java
-
- einen Überblick über die in ISO/IEC 5055 definierten Metriken zur Messung der Energieeffizienz zu geben,
- ein minimales Set an Open-Source Werkzeugen zu identifizieren, das alle im Standard definierten Metriken erheben kann,
- im Rahmen eines detaillierten Experiments zu zeigen, welche Ergebnisse die ausgewählten Werkzeuge liefern und diese Ergebnisse in Bezug auf deren Qualität (vor allem false-positives) zu beurteilen.
Betreuung: Reinhold Plösch
Verbesserungspotential von statischen Green Software Metriken
Sustainability und insbesondere Energieeffizienz sind ein Gebot der Stunde in der Softwareentwicklung. Es existieren eine Reihe von statischen Analysemetriken, die Defizite in der Ressourcennutzung aufzeigen können. Unklar ist dabei in den meisten Fällen, welchen quantitativen Effekt die Vermeidung oder Befolgung dieser Programmierpraktiken hat. Ziel der Arbeit ist es, für die Programmiersprache Java
-
- durch eine Literaturanalyse zu identifizieren, welche Indizes es für die Beurteilung der Energieeffizienz gibt,
- durch Analyse der Ergebnisse der Literaturanalyse jene Energieeffizienzindizes auszuwählen, die am geeignetsten erscheinen,
- für ausgewählte Metriken experimentell zu ermitteln, welchen Effekt die Einhaltung dieser Metriken auf die Energieeffizienz hat,
- für die untersuchten ausgewählten Metriken die identifizierten Energieeffizienzindizes zu berechnen.
Betreuung: Reinhold Plösch
Automatische Beurteilung der Greenability von Software nach Source Code Änderungen
Sustainability und insbesondere Energieeffizienz sind ein Gebot der Stunde in der Softwareentwicklung. Es existieren eine Reihe gut definierter Metriken, um die Veränderung des Energieverbrauchs – aufgrund von Änderungen in der Software – zu messen. Diese Metriken werden dynamisch gemessen – beispielsweise im Rahmen der Ausführung von Unit Tests. Damit soll eine Abschätzung möglich werden, welchen Energie-Effekt Änderungen an der Software haben. Die Art der Änderung (Bugfix, Verbesserung der Energieeffizienz, neue Funktionalität) ist dabei irrelevant und ist nicht weiter zu berücksichtigen – es geht im Kern um die Messung der Veränderung. Ziel der Arbeit ist es, für die Programmiersprache Java
-
- ein JUnit basiertes Rahmenwerk zu schaffen oder eine bestehende Erweiterung zu nutzen (z.B. JMH), das es erlaubt, den Energieverbrauch oder die Laufzeit für die Ausführung eines Unit Tests zu ermitteln,
- auf Basis der Messergebnisse die entsprechenden dynamischen Metriken für die Identifizierung der Verbesserung / Verschlechterung des Energieverbrauchs oder der Laufzeit zu berechnen,
- eine Möglichkeit zu schaffen, die Veränderungen über die Zeit (für jeden betrachteten Unit Test) zu visualisieren und ggfs. detaillierter zu analysieren.
Betreuung: Reinhold Plösch
Bewertung von Python Programmieraufgaben in Jupyter Notebooks
Im Kurs “Einführung in die Softwareentwicklung mit Python” werden die Programmieraufgaben den Studierenden als Jupyter Notebooks (https://jupyter.org) zur Verfügung gestellt. Die Notebooks enthalten sowohl die Beschreibung Programmieraufgaben in Form von Text, als auch die Lösung der Aufgabe als Python Code. In der Lehrveranstaltung wird Visual Studio Code (https://code.visualstudio.com) als Entwicklungsumgebung eingesetzt.
Die wöchentlich abzugebenden Hausübungen werden von Tutoren manuell korrigiert und die erreichten Punkte für die jeweiligen Aufgaben von den Tutoren als Text direkt im Notebook eingetragen.
Ziel der Arbeit ist es
- eine Erweiterung für Visual Studio Code zu entwickeln, die es den LVA-Leitern erlaubt pro Aufgabe die maximal erreichbaren Punkte einzutragen und
- den Tutoren die Möglichkeit gibt, die tatsächlich erreichten Punkte sowie textuelles Feedback pro Aufgabe zu erfassen.
Visual Studio Code bietet eine Extension API (https://code.visualstudio.com/api) zur Erweiterung der Entwicklungsumgebung.
Betreuung: Iris Groher
Erfassung von Kompetenzen in Jupyter Notebooks (VERGEBEN)
In einer bereits abgeschlossenen Bachelorarbeit wurde für den Kurs “Einführung in die Softwareentwicklung mit Python” ein Kompetenzmodell erstellt. In diesem Modell werden Fähigkeiten, die in der Lehrveramstaltung erlangt werden, abgebildet. Das Modell wurde in der Gecko Plattform (https://gecko.aau.at/) erstellt. Das Modell kann als CSV Datei exportiert werden. Im Rahmen der Bachelorarbeit soll ein Tool erstellt werden mit dessen Hilfe Kompetenzen zu Programmieraufgaben zugeordnet werden können. Die Aufgaben sind in Jupyter Notebooks (https://jupyter.org) definiert.
Ziel der Arbeit ist es
- die Kompetenzen des Modells sowie die Aufgaben eines Jupyter Notebooks dem Benutzer anzuzeigen
- die Möglichkeit zu schaffen eine Zuordnung zwischen Aufgaben und Kompetenzen zu erstellen
- die ausgewählten Kompetenzen in den Metadaten des Notebooks zu speichern
- eine Übersicht über Kompetenzen und Aufgaben über das Semester anzuzeigen
Betreuung: Iris Groher
Erweiterung eines Jira-Plugins für nachhaltige Softwaresysteme
Im Zuge einer vergangenen Masterarbeit wurde ein Jira-Plugin entwickelt, welches Stakeholdern bei der Bewertung von potentiellen Auswirkungen einzelner Backlog-Items (User Stories) auf unterschiedliche Nachhaltigkeitsdimensionen unterstützen soll. Vorrangiges Ziel ist, den Entscheidungsträgern in agilen Entwicklungsprozessen eine zusätzliche Informationsbasis zu bieten, um langfristig nachhaltige Softwaresysteme entwickeln zu können.
Im Rahmen dieser Bachelorarbeit soll das Jira-Plugin entsprechend weiterentwickelt werden.
Von speziellem Interesse ist die Zusammenführung des Plugins mit zwei anderen Applikationen/Plugins:
– einer Webanwendung zur Unterstützung des “Sustainability Awareness Frameworks” mit dem Auswirkungen von Softwaresystemen auf Produktebene evaluiert und dokumentiert werden können
– einem Intellij-Plugin mit dem der Energieaufwand bei Software-Tests gemessen werden kann
Betreuung: Iris Groher
Evaluierung eines Jira-Plugins für nachhaltige Softwaresysteme (VERGEBEN)
Im Zuge einer vergangenen Masterarbeit wurde ein Jira-Plugin entwickelt, welches Stakeholdern bei der Bewertung von potentiellen Auswirkungen einzelner Backlog-Items (User Stories) auf unterschiedliche Nachhaltigkeitsdimensionen unterstützen soll. Vorrangiges Ziel ist, den Entscheidungsträgern in agilen Entwicklungsprozessen eine zusätzliche Informationsbasis zu bieten, um langfristig nachhaltige Softwaresysteme entwickeln zu können.
Im Rahmen dieser Bachelorarbeit soll die Nutzbarkeit des Jira-Plugins in einem realen Softwareprojekt evaluiert werden. Ziel ist, in Zusammenarbeit mit dem bzw. der Product Owner:in neue Backlog Items hinsichtlich potentieller Auswirkungen auf Nachhaltigkeit über mehrere Sprints hinweg zu bewerten, und zu evaluieren welche Auswirkungen die Nutzung des Plugins auf die Priorisierung der Backlog-Items hat.
Betreuung: Iris Groher
Interview-Studie mit Product Owner:innen zur Entwicklung nachhaltiger Softwaresysteme
Product Owner:innen sind in agilen Entwicklungsprozessen wie Scrum vorrangig für die Erstellung und Priorisierung der Backlog Items (User Stories, o.ä.) verantwortlich. In Abstimmung mit den Stakeholdern des Softwaresystems erarbeiten sie die (nicht-)funktionalen Anforderungen und legen die kommenden Ziele im Entwicklungsprozess zu.
Im Rahmen dieser Bachelorarbeit soll (zb. mit einer Interview-Studie) evaluiert werden, welche Faktoren primär zur Priorisierung der Backlog Items in einem Scrum-Prozess beitragen. Von speziellem Interesse dabei ist, welchen Stellenwert verschiedene Faktoren – die unterschiedlichen Nachhaltigkeitsdimensionen (wirtschaftliche Aspekte, ökologische Aspekte, technische Aspekte, soziale Aspekte, individuelle Aspekte) zugeordnet werden können – haben.
Betreuung: Iris Groher
Sustainability und Softwareentwicklung auf Social Media (VERGEBEN)
Social-Media-Plattformen wie GitHub, Stackoverflow, Twitter und Reddit werden von Softwareentwickler:innen intensiv genutzt. Während auf Stackoverflow primär mögliche Lösungswege für diverse Problemstellungen diskutiert werden und GitHub zur Entwicklung diverser OpenSource-Projekte verwendet wird, werden auf Twitter und Reddit generell viele technische Themen diskutiert. Die o.g. Plattformen bieten APIs (oder ähnliches) mit denen die Analyse der erstellten Kommentare und Tweets möglich ist.
Im Rahmen dieser Bachelorarbeit soll analysiert werden, welchen Stellenwert verschiedene Faktoren – die unterschiedlichen Nachhaltigkeitsdimensionen (wirtschaftliche Aspekte, ökologische Aspekte, technische Aspekte, soziale Aspekte, individuelle Aspekte) zugeordnet werden können – haben. Andererseits kann aber auch analysiert werden, welche anderen Themen in Zusammenhang mit Nachhaltigkeit auf diesen Plattformen derzeit diskutiert werden bzw. wie sich der Stellenwert verschiedener Aspekte zeitlich verändert hat.
Betreuung: Iris Groher
Verteiltes Java-Coding (VERGEBEN)
In den Einführungslehrveranstaltungen mit Programmiercharakter (Einführung in die Programmierung, Algorithmen und Datenstrukturen) kommen unterschiedliche Java-Entwicklungswerkzeuge (Geany, Eclipse, NetBeans), unterschiedliche Bewertungswerkzeuge (Artemis, Moodle) und unterschiedliche Kommunikationswerkzeuge (email, Foren) zum Einsatz. Eine Vereinheitlichung wäre wünschenswert.
Ziel dieser Bachelorarbeit ist es, eine webbasierte Programmierumgebung als verteilte Lernplattform zu entwickeln, mit der die Anwender ohne Installationsaufwand in Java programmieren können. Im Fokus stehen einfache Programme, die nur auf die Kommandozeile ausgeben. Compilieren und Ausführen soll serverseitig erfolgen. Die Plattform soll es Studierenden, Lehrenden und Tutoren ermöglichen, miteinander zu interagieren und zu kommunizieren (Aufgaben stellen, Ausarbeitungen bewerten).
Betreuung: Wolfgang Narzt
Webbasierte Entwicklungsumgebung (VERGEBEN)
In Lehrveranstaltungen mit Programmiercharakter (Einführung in die Programmierung, Algorithmen und Datenstrukturen, Einführung in die Softwareentwicklung mit Python, usw.) kommen unterschiedliche Programmiersprachen und unterschiedliche Entwicklungswerkzeuge zum Einsatz. Eine Vereinheitlichung wäre wünschenswert.
Ziel dieser Bachelorarbeit ist es, eine webbasierte Programmierumgebung zu entwickeln, mit der die Anwender ohne Installationsaufwand in unterschiedlichen Programmiersprachen entwickeln können (z.B. Java, Python, JS). Im Fokus stehen einfache Programme, ohne grafische Ausgabe. Compilieren und Ausführen soll serverseitig erfolgen.
Betreuung: Wolfgang Narzt
Verteilte Dokumentenbearbeitung
Die Bearbeitung von Dokumenten auf modernen Webplattformen durch mehrere Benutzer gleichzeitig ist heute selbstverständlich. Doch wie funktioniert das? Welche Konzepte stecken hinter einer verteilten Bearbeitungsmöglichkeit? Entwickeln Sie im Rahmen dieser Bachelorarbeit auf der Grundlage ihrer Recherchen ein eigenes, webbasiertes Dokumentenbearbeitungstool, mit dem mehrere Benutzer gleichzeitig an ein und demselben Dokument arbeiten können.
Betreuung: Wolfgang Narzt
Sicherheitskonzepte für Online-Java Compiler
Es gibt eine Vielzahl an Online-Java Compilern, mit denen man ohne Installationsaufwand kleine Java-Programme ausführen kann. Die wenigsten dieser Compiler haben allerdings ausreichende Sicherheitskonzepte: Code wird auf dem (Web-)Server ausgeführt, und damit steht Angreifern Tür und Tor offen, mit einfachen Java-Programmen Dateimanipulationen auf dem Server durchzuführen (z.B. Verzeichnisse auslesen, Dateien löschen).
Im Rahmen dieser Arbeit soll recherchiert werden, welche Sicherheitskonzepte es im Zusammenhang mit Online-Compilern gibt und auf Basis der gewonnenen Erkenntnisse ein eigener Online-Java-Compiler entwickelt werden, der diese Sicherheitskonzepte umsetzt.
Betreuung: Wolfgang Narzt