Hier finden Sie eine Übersicht über Themen möglicher Abschlussarbeiten für Bachelor und Master sowie eine Liste bereits durchgeführter Arbeiten. Über die hier vorgestellten Themen hinaus sind weitere Themen und eine begleitende Betreuung mit Firmen auf Anfrage möglich, sofern diese in das Forschungsprofil der Arbeitsgruppe passen. Weiterhin haben wir selber guten Kontakt zu renommierten Firmen und könen Arbeiten dort hin vermitteln.

Themenübersicht:

Kontext: Die meisten Softwaresysteme in der heutigen Zeit bieten eine Vielzahl an  Konfigurationsoptionen um ihre Funktionalität, aber auch nicht-funktionale Eigenschaften wie die Performance (benötigte Ausführungszeit, Speicherverbrauch, etc.), auf Nutzerbedürfnisse anzupassen. Viele Konfigurationsoptionen lassen sich unabhängig voneinander wählen, jedoch existieren unter diesen auch Beschränkungen (constraints), welche den Raum der möglichen gültigen Konfigurationen einschränken. Neben dem Effekt einzelner Option kann auch die Kombination  mehrerer Optionen einen separaten Einfluss auf diese Eigenschaften haben.

In der Literatur existiert eine Vielzahl von Lernalgorithmen, mit Hilfe welcher Vorhersagemodelle für die Performance in Abhängigkeit der Konfiguration erstellt werden können. Wie bei jedem Machine-Learning-Problem (ML) ist die Wahl der Trainings-Stichprobe ein wesentliches Kriterium bei der Bewertung der Effizienz eines Ansatzes: Idealerweise lässt sich mit möglichst wenig Performance-Messungen verschiedener Konfigurationen ein Vorhersagemodell erstellen, was für möglichst viele Konfigurationen akkurate Vorhersagen macht. 

Ein wichtiger Baustein bisheriger Arbeiten sind Verfahren zur effektiven und effizienten Wahl der Trainings-Stichprobe (Sampling), welche häufig versucht eine optimale Abdeckung des Problemraums (Menge aller möglichen Konfigurationen) zu erreichen oder gewissen Heuristiken folgen (z.B.  Testen aller 2er- oder 3er-Kombinationen). Eine weitere Möglichkeit, einflussreiche Optionen im Vorfeld zu erkennen ist die Sensitivitätsanalyse. Hier steht nicht die Frage “Wie ist die Performance einer beliebigen Konfiguration?” im Vordergrund, sondern “Welche Optionen oder Kombinationen dieser haben einen Einfluss auf die Performance?”. 

Ziel der Arbeit:

Ziel der Arbeit ist es, einen etablierten und simplen Ansatz zur Sensitivitätsanalyse, die Elementary Effects Method nach Morris, zu erweitern. Hierbei wird abgeschätzt, 1) ob eine Option einen Einfluss auf die Performance hat und 2) ob die Option darüber hinaus an Interaktionen mit relevantem Einfluss beteiligt ist. Betrachtet man anstatt einer einzelnen Option eine Gruppe von Optionen, lassen sich mit weniger Messungen die gleichen Aussagen über diese Gruppe treffen. Durch wiederholtes Permutieren der Gruppen können auf diese Weise nicht-einflussreiche Optionen herausgefiltert werden. Mit Hilfe der so getroffenen Vorauswahl an Optionen (sowie dem Wissen ob es an einer Interaktion beteiligt ist) – so die Überlegung –  lässt sich die Trainings-Stichprobe für das Lernen von Vorhersagemodelle effektiver und effizienter wählen.Möglichkeiten

Im Rahmen der Arbeit soll obig skizzierter Ansatz umgesetzt und evaluiert werden. Dazu stellen wir eine Reihe von Datensätzen von realen konfigurierbaren Softwaresysteme zur Verfügung bzw. finden sich in der Literatur (siehe unten) weitere umfangreiche Datensätze, z.B. zum Linux-Kernel. 

Vorwissen: Programmierkenntnisse beispielsweise in Python (oder Java) sind erforderlich.

Literatur/Quellen:

  • Saltelli, A., Ratto, M., Andres, T., Campolongo, F., Cariboni, J., Gatelli, D., … & Tarantola, S. (2008). Global sensitivity analysis: the primer. John Wiley & Sons. [free PDF ;)] – Kapitel 2.6 und 3
  • Kaltenecker, C., Grebhahn, A., Siegmund, N., & Apel, S. (2020). The interplay of sampling and machine learning for software performance prediction. IEEE Software37(4), 58-66.
  • Siegmund, N., Kolesnikov, S. S., Kästner, C., Apel, S., Batory, D., Rosenmüller, M., & Saake, G. (2012, June). Predicting performance via automated feature-interaction detection. In 2012 34th International Conference on Software Engineering (ICSE) (pp. 167-177). IEEE.
  • Kurze Illustration

Ansprechpartner: Stefan Mühlbauer

Kontext: Heutzutage sind die meisten Softwaresysteme konfigurierbar. Diese Systeme besitzen Optionen, mit denen Nutzer die Funktionalität steuern können. Welche Optionen gleichzeitig aktiv sein können, wird typischerweise mit einem Variabilitätsmodell beschrieben. Zusätzlich beeinflussen Optionen und Interaktionen zwischen Optionen aber auch nicht-funktionale Eigenschaften (NFP), wie etwa den Energieverbrauch. Um die Optionen eines Systems so zu wählen, dass es möglichst wenig Energie verbraucht, muss man die Auswirkung von Optionen und deren Interaktionen auf den Energieverbrauch verstehen. Mittels Machine Learning lässt sich mit weniger Energiemessungen ein Attributiertes Variabilitätsmodell (AVM) erstellen, welches ausgewählten Optionen und Interaktionen einen Einfluss auf NFPs zuordnet. Zum Zeitpunkt der Modellierung ist jedoch meist nicht klar, welche Optionen und Interaktionen tatsächlich einen Einfluss haben und Teil des Modells sein sollten. Aktuelle Ansätze treffen automatisch eine intransparente Auswahl oder überlassen die sogenannte Feature Selection den Modellierenden ganz. Diese Auswahl ist immer mit Unsicherheit verbunden, da sie nur mit begrenzten Daten getroffen werden kann.

Ziel der Arbeit: Ziel ist es, einen Ansatz zu entwickeln und zu evaluieren, der die Unsicherheit der Modellstruktur von AVMs explizit macht. Somit soll ein Modell Auskunft darüber geben können, welche Interaktionen mit den gegebenen Daten wahrscheinlich sind, und welchen Einfluss sie haben können. Das schätzen des Einflusses kann mit Estimation-of-Distribution-Algorithmen (EDAs) erreicht werden, während die Schätzung der Modellstruktur mithilfe von Grammatik-basierten EDAs erreicht werden kann. Da es verschiedene EDAs in der Literatur gibt, sollte zu Beginn eine Literaturstudie durchgeführt werden. In einer Evaluation des Ansatzes sollte gezeigt werden, dass einerseits akkurate Modelle gelernt werden können. Andererseits soll experimentell gezeigt werden, dass der Ansatz die möglichen Modellstrukturen mit mehr Daten immer weiter einschränkt.

Vorwissen: Grammatiken, Python, ggf. genetische Algorithmen, ggf. Modul Konfigurierbare Softwaresysteme

Quellen:

  • Pelikan, Martin, David E. Goldberg, and Erick Cantú-Paz. 1999. “BOA: The Bayesian Optimization Algorithm.” In Proceedings of the 1st Annual Conference on Genetic and Evolutionary Computation – Volume 1, 525–32. GECCO’99. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.8131.
  • Shan, Y., R. I. McKay, R. Baxter, H. Abbass, D. Essam, and H. X. Nguyen. 2004. “Grammar Model-Based Program Evolution.” In Proceedings of the 2004 Congress on Evolutionary Computation (IEEE Cat. No.04TH8753), 1:478-485 Vol.1. https://doi.org/10.1109/CEC.2004.1330895.
  • Sotto, Léo Françoso Dal Piccol, and Vinícius Veloso de Melo. 2017. “A Probabilistic Linear Genetic Programming with Stochastic Context-Free Grammar for Solving Symbolic Regression Problems.” ArXiv:1704.00828 [Cs, Math, Stat], April. http://arxiv.org/abs/1704.00828.
  • J. Dorn, S. Apel, and N. Siegmund. Mastering Uncertainty in Performance Estimations of Configurable Software Systems. In Proceedings of Automated Software Engineering (ASE), 2020. Acceptance rate (full papers): 22.5% (93 / 408).
  • Poli, Riccardo, William B. Langdon, Nicholas F. McPhee, and John R. Koza. 2008. A Field Guide to Genetic Programming. [Morrisville, NC: Lulu Press]. http://www.gp-field-guide.org.uk. (Chapter 1 – 8)

Ansprechpartner: Johannes Dorn

Kontext: Aktuellen Trends in der Digitalisierung und Virtualisierung führen dazu, dass der Energiebedarf von IT-Systemen stetig steigt. Verschiedene Prognosen schätzen, dass sich der Energieverbrauch bis 2030 verdoppeln wird. Im Hinblick auf die Erderwärmung und die Klimaziele der Bundesrepublik ist es notwendig, diesem Energiebedarf entgegen zu wirken.

Konfigurierbare Softwaresystemen bieten eine Vielzahl von Konfigurationsoptionen, die die Funktionalität der Systeme an das Nutzungsszenario anzupassen. Durch das konfigurieren werden aber auch Nicht-Funktionale Eigenschaften wie Ausführungszeit und Energieverbrauch beeinflusst. Fast immer existiert im Konfigurationsraum eine Konfiguration, die besser (effizienter, schneller) ist als die aktuelle Konfiguration. Wenn solche Konfigurationen gefunden werden, kann der Energieverbrauch des Softwaresystems verringert werden ohne den Source Code der Software anzupassen.

Probleme&Motivation: Die große Anzahl an verschiedenen Kombinationsmöglichkeiten (unterschiedliche Hardware und Software) macht es unmöglich den alle Varianten zu testen. Vor allem das bestimmen des Energieverbrauchs einer Variante ist aufwändig, fehleranfällig und benötigt spezielle Energiemesssysteme.

Wir wollen uns zu nutze machen, dass es nur ein Teil der Konfigurationsoptionen einen Einfluss auf den Energieverbrauch oder die Laufzeit haben. Wir nur Konfiguration messen, die uns möglichst viel Informationen liefern. Es gibt Ansätze einflussreiche Kandidaten zu identifizieren: Wir können Konfigurationen Gruppieren (Clustering) und dann wenige Konfigurationen messen oder wir können Wissen über die Ausführzeit nutzen (Transfer Learning) und vielversprechende Konfigurationen identifizieren.

Ziel der Arbeit: Ziel dieser Arbeit ist es, verschiedene Ansätze für Transfer Learning und Clustering miteinander zu kombinieren um effizient die nächsten zu messenden Konfigurationen zu identifizieren.

Quellen:

  • Pooyan Jamshidi, Miguel Velez, Christian Kästner, and Norbert Siegmund. Learning to Sample: Exploiting Similarities Across Environments to Learn Performance Models for Configurable Systems. In Proceedings of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on the Foundations of Software Engineering (ESEC/FSE), pages 71-82, ACM Press, 2018.
  • Pooyan Jamshidi, Norbert Siegmund, Miguel Velez, Christian Kästner, Akshay Patel, and Yuvraj Agarwal. Transfer Learning for Performance Modeling of Configurable Systems: An Exploratory Analysis. In Proceedings of the International Conference on Automated Software Engineering (ASE), pages 497-508, ACM Press, November 2017.
  • Pooyan Jamshidi, Miguel Velez, Christian Kästner, Norbert Siegmund, and Prassad Kawthekar.Transfer Learning for Improving Model Predictions in Highly Configurable Software. In Proceedings of the 12th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS), pages 31-41, IEEE, May 2017.

Ansprechpartner: Max Weber

Kontext: Heutzutage sind die meisten Softwaresysteme konfigurierbar. Diese Systeme besitzen Optionen, mit denen Nutzer die Funktionalität steuern können. Gleichzeitig beeinflussen Optionen aber auch nicht-funktionale Eigenschaften (NFP), wie etwa den Energieverbrauch. Wenn man die funktional benötigten Optionen gewählt hat, ist es erstrebenswert, die verbleibenden Optionen so zu wählen, dass die NFP optimiert werden. Der Optimierungsprozess ist allerdings nicht trivial, da es zwischen Optionen Beschränkungen (Constraints) gibt, sodass nicht alle Optionen miteinander kombiniert werden können. Optionen und deren Constraints werden typischerweise in Variabilitätsmodellen (VM) erfasst. Um die Optimierung effizienter zu gestalten, lassen sich die Einflüsse der einzelnen Optionen mit Machine Learning ermitteln und in einem Attributierten Variabilitätsmodell (AVM) erfassen.

Ziel der Arbeit:

Es soll ein Ansatz entwickelt werden, welcher den Vergleich verschiedener Optimierungs-Ansätze für beliebig komplexe Systeme ermöglicht. Somit kann die Evaluierung von bestehenden und zukünftigen Optimierungs-Ansätzen maßgeblich optimiert werden. Mit einem gegebenen AVM soll der Ansatz ein größeres und ggf. komplexeres AVM generieren, welches weiterhin realistische Eigenschaften besitzt. Hierfür eignen sich insbesondere Genetische Algorithmen. Der Entwickelte Ansatz wird schließlich validiert und zur Evaluation von State-of-the-Art Optimierungs-Ansätzen genutzt.

Vorwissen: Grundlagen in Python, Genetische Algorithmen, ggf. Konfigurierbare Softwaresysteme

Quellen:

  • Siegmund, Norbert, Stefan Sobernig, and Sven Apel. “Attributed Variability Models: Outside the Comfort Zone.” In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, 268–78. ESEC/FSE 2017. New York, NY, USA: ACM, 2017. https://doi.org/10.1145/3106237.3106251.
  • Dorn, Johannes, Sven Apel, and Norbert Siegmund. “Generating Attributed Variability Models for Transfer Learning.” In Proceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems, 1–8. Magdeburg Germany: ACM, 2020. https://doi.org/10.1145/3377024.3377040.

Ansprechpartner: Johannes Dorn

Kontext: Die meisten Softwaresysteme in der heutigen Zeit bieten eine Vielzahl an  Konfigurationsoptionen um ihre Funktionalität, aber auch Performance, auf Nutzerbedürfnisse anzupassen. Dabei lassen sich viele Konfigurationsoptionen unabhängig voneinander wählen, jedoch existieren unter diesen auch Beschränkungen (feature oder option constraints), welche den Raum der möglichen Konfigurationen einschränken. Die Dokumentation eines konfigurierbaren Softwaresystems bietet zwar häufig einen Überblick darüber, in welcher Form eine Software konfiguriert werden kann, jedoch spiegeln diese Artefakte nicht immer den Stand der Wirklichkeit wieder bzw. das Softwaresystem beinhaltet Constraints, welche nicht dokumentiert wurden (hidden constraints). Die Kenntnis und akkurate Dokumentation der Konfigurierbarkeit ist Voraussetzung dafür, den optimalen Einsatz eines Softwaresystems zu gewährleisten und Konfigurationsfehler zu vermeiden. In der Forschung wie auch in der Praxis (z.B. beim Linux-Kernel mit KConfig) werden die Bedingungen für eine gültige Konfiguration in einem Feature-Modell, z.B. als Formel in Aussagenlogik, zusammengefasst.

Ziel der Arbeit: Ziel der Arbeit ist es, ein Tool zu entwickeln, welches ein Feature-Modell durch systematisches Testen (Konfigurieren) von Softwaresystemen erstellt. Startet ein Softwaresystem mit einer ungültigen Konfiguration, resultiert dies oft in entsprechenden Fehlern, aus welchen Rückschlüsse über die korrekten (aber nicht immer vollständig bekannten) Richtlinien gemacht werden kann. Mit Hilfe eines SAT- bzw. CSP-Solvers kann aus einer Serie von Experimenten ein minimaler logischer Ausdruck gefunden werden, welcher ein gültiges Feature-Modell beschreibt. Bei der Arbeit geht es in erster Linie um die Reproduktion bestehender Ansätze (siehe Literatur), aber auch um die Steigerung der Effizienz der Suche nach versteckten Constraints: Wie kann die Anzahl der benötigten Tests durch eine systematische Suche gesteigert werden? Darüber hinaus ist eine visuelle Aufbereitung des Feature-Modells als Feature-Diagramm (Baumstruktur) zur einfachen Lesbarkeit wünschenswert, oder eine Analyse der Evolution des Feature-Modells über die Entwicklungsgeschichte des Softwaresystems denkbar. Im Gegensatz zu bestehenden Arbeiten ist angedacht, die Experimente mittels Konfiguration zur Laufzeit von Java-Systemen umzusetzen. Der Umfang der Arbeit variiert je nach Bachelor- oder Masterarbeit.

Vorwissen: Die Bearbeitung erfordert Programmierkenntnisse in Java und/oder Python, ein Grundverständnis von Aussagenlogik, sowie die Bereitschaft, sich in einen SAT/CSP-Solver der Wahl (z.B. z3 von Microsoft) einzuarbeiten.

Quellen:

  • Feature-Modelle und Feature-Diagramme:
    • Don Batory. 2005. Feature models, grammars, and propositional formulas. In Proceedings of the SPLC 2005. Springer-Verlag, Berlin, Heidelberg, pp. 7–20.
    • Sven Apel, Don Batory, Christian Kstner, and Gunter Saake. 2013. Feature-Oriented Software Product Lines: Concepts and Implementation. Springer Publishing Company, Incorporated. 
    • Tianyin Xu, Long Jin, Xuepeng Fan, Yuanyuan Zhou, Shankar Pasupathy, and Rukma Talwadker. 2015. Hey, you have given me too many knobs!: understanding and dealing with over-designed configuration in system software. In Proceedings of ESEC/FSE 2015. ACM, pp. 307–319.
  • Feature Model Synthesis:
    • Nadi, S., Berger, T., Kästner, C., and Czarnecki, K. (2014). Mining configuration constraints: Static analyses and empirical results. In Proceedings of the ICSE 2014, pages 140–151. ACM.
    • Nadi, S., Berger, T., Kästner, C., and Czarnecki, K. (2015). Where do configuration constraints stem from? an extraction approach and an empirical study. IEEE Transactions on Software Engineering, 41(8):820–841.
    • Nele Andersen, Krzysztof Czarnecki, Steven She, and Andrzej Wąsowski. 2012. Efficient synthesis of feature models. In Proceedings of the SPLC 2012. ACM, pp. 106–115.
    • Steven She, Rafael Lotufo, Thorsten Berger, Andrzej Wąsowski, and Krzysztof Czarnecki. 2011. Reverse engineering feature models. In Proceedings of the ICSE 2011. ACM, pp. 461–470.

Ansprechpartner: Stefan Mühlbauer

Kontext: Moderne Softwaresysteme setzen oft verschiedene Technologien ein, wie z.B. Cloud Computing, Containerisierung, CI/CD Pipelines oder Build Tools. Jedes Tool oder Technologie kommt dabei mit ihren eigenen Abhängigkeiten und Konfigurationsmöglichkeiten und muss für entsprechende Plattformen und Anwendungsfälle konfiguriert werden. Diese Konfigurationen (z.B. in Dockerfiles, docker-compose.yaml, pom.xml, .travis.yml, etc.) sind also miteinander verknüpft ohne, dass deren Verknüpfung explizit ist. Änderungen bergen daher das Risiko, dass weitere nicht-triviale Änderungen verschiedener Konfigurationsdateien oder Code-Artefakt erforderlich sind .Dies führt zu einer Situation, in der all diese Tools und Technologien, die ursprünglich den Entwicklungs- und Auslieferungsprozess vereinfachen sollten, ein komplexes Problem bilden.

Ziel der Arbeit: Das Ziel dieser Arbeit ist es bestehende Open-Source Softwaresysteme zu untersuchen und speziell in Commits nach gleichzeitigen Änderungen von Konfigurationsdateien zu suchen, um daraus Regeln oder Wahrscheinlichkeiten für zusammenhängende Konfigurationen zu ermitteln. Dazu können regel-baserite oder maschinelle Lernverfahren, wie z.B Association Rule Learning, eingesetzt werden.

Vorwissen: Vorwissen in Machine Learning oder regel-basierten Verfahren ist hilfreich. Ansonsten sollte man sich etwas Einarbeitungszeit einplanen.

Quellen:

  • Tianyin Xu and Yuanyuan Zhou. 2015. Systems Approaches to Tackling Configuration Errors: A Survey.
  • Tianyin Xu, Long Jin, Xuepeng Fan, Yuanyuan Zhou, Shankar Pasupathy, and Rukma Talwadker. 2015. Hey, You Have Given Me Too Many Knobs!: Understanding and Dealing with Over-designed Configuration in System Software.
  • Zuoning Yin, Xiao Ma, Jing Zheng, Yuanyuan Zhou, Lakshmi N. Bairavasundaram, and Shankar Pasupathy. 2011. An Empirical Study on Configuration Errors in Commercial and Open Source Systems.
  • Mark Santolucito, Ennan Zhai, and Ruzica Piskac. 2016. Probabilistic Automated Language Learning for Configuration Files.
  • Mark Santolucito, Ennan Zhai, Rahul Dhodapkar, Aaron Shim, and Ruzica Piskac. 2017. Synthesizing Configuration File Specifications with Association Rule Learning.

Ansprechpartner: Sebastian Simon

Probleme&Motivation: Informationen über das Entwicklerverhalten, z.B. Starten von Test- und Debuggingsessions, haben vielfältige Nutzen wie zum Beispiel die Vorhersage von Fehlerwahrscheinlichkeiten oder die Analyse der Auswirkungen verschiedener Software-Entwicklungsmethodiken auf den Entwickler*innenalltag.

Ziel der Arbeit: Im Rahmen dieser Abschlussarbeit soll eine IDE-Erweiterung entworfen und entwickelt werden, um Interaktionen von Entwickler*innen mit der IDE zu protokollieren und damit Einblicke in deren Verhalten zu geben.

Die Abschlussarbeit wird bei der XITASO GmbH betreut und durchgeführt. Mehr Informationen unter der Beschreibung.

Sie können Themenvorschläge machen oder basierend auf Vorlesungen von uns heran treten, falls eines der obigen Themen nicht passend ist. Weiterhin stehen wir offen für eine Betreuung von Themen in Firmen, sofern es thematisch passt. Eine NDA wird aber ausgeschlossen! Wir haben ebenfalls Kontakt zu renommierten Firmen und können dabei helfen Abschlussarbeiten zu vermitteln.


Laufende Arbeiten:

Kontext: Softwarekonfiguration dient dazu, das Verhalten eines Systems an die Anforderungen des Benutzers, wie z. B. Funktionalität, Leistung und Zuverlässigkeit, aber auch die Umgebung und die Infrastruktur einer Software anzupassen. Moderne Softwareprojekte bieten Hunderte von Konfigurationsoptionen. So verfügt beispielsweise die MySQL-Datenbank über 400 und der Apache HTTP Server über 500 verschiedene Konfigurationsoptionen in verschiedenen Konfigurationsartefakten. Die meisten Konfigurationsoptionen entsprechen konzeptionell einem Key-Value Pair, wobei der Key den Namen einer Konfigurationsoption darstellt und der Value eine Einstellung des Softwareprojekts definiert. In der Regel werden diese Optionen in Textdateien gespeichert, die auf Formaten wie INI, XML oder JSON basieren, oder in Konfigurationsdateien, die sich in Bezug auf Komplexität und Struktur unterscheiden, domänenspezifische Konfigurationssprachen benutzen und ihre eigene Syntax und semantischen Dimensionen spezifizieren. Konfigurationsoptionen werden jedoch auch im Source Code verwendet, indem Option neu definiert oder z.B. aus den zuvor genannten Konfigurationsdateien spezifiziert werden.
Jedoch reicht hier eine Key-Value Betrachtung allein nicht aus, da es verschiede Möglichkeiten gibt wie Konfigurationsoptionen gelesen werden können. Ein verbreiteter Ansatz ist z.B. das Aufrufen von Methoden um Konfigurationsoptionen zu lesen. In der Praxis nutzen solche Methoden jedoch oftmals Variablen als Parameter, sodass mehrere Methoden und Klassen betrachten werden müssen um Optionen und deren Werte eindeutig zu bestimmen. Aufgrund der verschiedenen Möglichkeiten wie Konfigurationsoptionen im Source Code implementiert werden, ist das zuverlässige Tracken solcher Optionen problematisch.

Ziel der Arbeit: Ziel dieser Arbeit ist es echte Konfigurationsoptionen zuverlässig innerhalb des Source Codes zu lokalisieren und zu extrahieren. Das Tracken von Konfigurationsoptionen soll in Source Code Plugins implementiert werden, welche Source Code Dateien parsen und die entsprechenden Konfigurationsoptionen extrahieren.

Vorwissen: Programmiererfahrung in Python ist vorteilhaft. Ansonsten sollte man sich etwas Einarbeitungszeit einplanen.

Quellen:

  • Rabkin, Ariel and Katz, Randy. 2011. Static extraction of program configuration options.
  • Dong, Zhen and Andrzejak, Artur and Lo, David and Costa, Diego. 2016. Orplocator: Identifying read points of configuration options via static analysis.
  • Lillack, Max and Kästner, Christian and Bodden, Eric. 2017. Tracking load-time configuration options.

Kontext: Aktuellen Trends in der Digitalisierung und Virtualisierung führen dazu, dass der Energiebedarf von IT-Systemen stetig steigt. Verschiedene Prognosen schätzen, dass sich der Energieverbrauch bin 2030 verdoppeln wird. Im Hinblick auf die Erderwärmung und die Klimaziele der Bundesrepublik ist es notwendig, diesem Energiebedarf entgegen zu wirken.

Probleme&Motivation: Ein Weg, um den Energieverbrauch von IT-Systemen zu reduzieren, ist Quelltext-Optimierung. Für Entwickler ist allerdings gerade bei großen Projekten nicht ersichtlich, wo Energie eingespart werden kann. Für Ausführzeit-Optimierungen gibt es bereits Profiler, die Zeit messen und damit langsame Funktionen ermitteln; für Energieverbrauch-Optimierung bietet sich ein ähnlicher Ansatz an, doch lösen aktuell verfügbare Messgeräte zeitlich viel zu grob auf um Rückschlüsse auf einzelne Methoden zuzulassen.
Ziel der Arbeit: Um Energieverbrauch auf Methodenebene zu messen, wird ein Messsystem benötigt, welches im Nanosekunden-Bereich Energie messen kann. Es kann auf ein bestehendes System mit Energie-Messpunkten (INA226), einem Mikrocontroller-DevBoard (Teensy 4.0) und Raspberry Pi zurückgegriffen werden. Eine Besondere Herausforderung stellt die Verabrietung der Daten in Echtzeit dar.
Das resultierende System soll von anderen Forschenden leicht reimplementiert werden können um weitere Forschung an Energieverbrauchs-Optimierung zu begünstigen. Dementsprechen sollten verfügbare und erschwingliche Materialien verwendet und entwickelter Quelltext dokumentiert und veröffentlicht werden.
Quellen:

Kontext: KI-basierte Softwaresysteme durchdringen immer mehr unser tägliches Leben. Es werden weitreichende Entscheidungen getätigt, die teilweise hochgradig ethisch sind. So werden z.B. automatisiert Bewerbungen gefiltert, Kreditwürdigkeiten bewertet, Chat Systeme ausgeliefert oder sogar Rückfallwahrscheinlichkeiten von Kriminellen berechnet. All diese Entscheidungen sind hochgradig anfällig für Bias (systematische Fehler, Befangenheit, etc.).

Probleme&Motivation: Die Forschung und Industrie hat zahlreiche Ansätze und Vorschläge unterbreitet, um dem Problem des Bias oder der Fairness zu begegnen. Jedoch ist es unklar, wie diese Ansätze systematisch eingeordnet und in einen Zusammenhang gebracht werden können. Was ist kombinierbar oder welcher Ansatz ersetzt welche Handlungsanweisung? Was ist überhaupt vergleichbar oder sogar besser? Welche Fallstudien gibt es, um Ansätze zu testen? Gibt es Unterschiede von Ansätzen in der Industrie und Forschung?

Ziel der Arbeit: Das Ziel der Arbeit ist ein ganzheitliches Bild zum derzeitigen Stand von Fairness Testing in der Forschung und Praxis zu erstellen, um dadurch Lücken und Schwachpunkte zu identifizieren, Alternativen für bestimmte Anwendungsfelder aufzuzeigen und eine generelle Bewertung zu schaffen. So kann ein Resultat der Arbeit ein klarer Anweisungsleitfaden sein inkl. von Werkzeugen und Techniken, um faire, unbefangende Softwaresysteme realisieren zu können.

Quellen: TBA

Kontext: KI-basierte Softwaresysteme durchdringen immer mehr unser tägliches Leben. Es werden weitreichende Entscheidungen getätigt, die teilweise hochgradig ethisch sind. So werden z.B. automatisiert Bewerbungen gefiltert, Kreditwürdigkeiten bewertet, Chat Systeme ausgeliefert oder sogar Rückfallwahrscheinlichkeiten von Kriminellen berechnet. All diese Entscheidungen sind hochgradig anfällig für Bias (systematische Fehler, Befangenheit, etc.).

Probleme&Motivation: Wie kann ein Ansatz aussehen, der nicht nur den KI-Algorithmus und statistische Wahrscheinlichkeiten berechnet, um Fairness Probleme zu identifizieren oder zu verhindern, sondern der maßgeschneidert auf unterschiedliche Moralvorgaben reagiert werden kann.

Ziel der Arbeit: Das Ziel ist es ein Tool zu entwickeln, welches in der Lage ist, alle Eingaben und Verarbeitungen, die zu ethisch relevanten Entscheidungen oder Ausgaben in einem Softwaresystem führen zu identifizieren und (optional) konfigurierbar zu machen. Dabei sollen Techniken der statischen Programmanalyse (z.B. Taint-Analyse, Program Slicing) angewendet werden.

Quellen: TBA

Kontext: Heutige IDEs haben eine sehr gute Unterstützung von Code Suggestions — vorgeschlagene Code snippets oder API Aufrufe. Gleichzeitig wird intensiv daran geforscht, diese Vorschläge intelligenter und weitreichender zu machen, um eventuell nicht nur einzelne Statements, sondern ganze Code Blöcke vorzuschlagen.

Probleme&Motivation: Wir wollen die Produktivität heutiger IDEs steigern, indem wir die Intention des Programmierers erkennen und entsprechend Vorschläge zur Vervollständigung des Codes anbieten.

Ziel der Arbeit: Ziel der Arbeit ist es, Code Suggestions basierten auf einem gelernten Modell (Deep Learning Language Model) mit Hilfe zusätzlicher Kontextinformationen zu verbessern. Dabei soll auf die Informationen in IntellJ Idea zurück gegriffen und hierfür ein Plug-In entwickelt werden, um eine vollständige Lösung zu präsentieren. Fragen in der Arbeit sind dabei: Was sind hilfreiche Kontextinformationen zur Code Generierung? Welches Language Model bietet die beste Akkuratheit? Ist das Tool praxistauglich? Welche Vorverarbeitungsschritte sind notwendig? Ist eventuell ein Retrieval-Ansatz (statt Generierung von Code, Suche nach ähnlichem Code in Repositories oder StackOverflow) besser geeignet?

Quellen: TBA

Kontext: Software Engineering ist ein breites Feld mit vielen Themenschwerpunkten. Obwohl das Feld sehr Praxis-orientiert ausgerichtet ist, werden in der Forschung und Industrie unterschiedliche Themenschwerpunkte gesetzt. Dies ist verständlich, da die Forschung möglichst frühzeitig Lösungen zu Problemen anbieten muss, die eventuell noch nicht relevant sind, oder Grundlagenforschung betreiben soll, um Fern ab vom Alltagsgeschäft neuartige Ansätze zur Softwareentwicklung zu bieten. Im Gegensatz dazu muss die Industrie darauf bedacht sein Lösungen zu erarbeiten, die einen ökonomischen Vorteil bieten und derzeitige aktuelle Probleme lösen. Dabei ist es erstaunlich, dass sowohl die Akademie als auch Industrie große Konferenzen und Tagungen hat, um Wissen zu verbreiten, es jedoch kaum Schnittstellen hierfür gibt.

Probleme&Motivation: Warum gibt es keine oder nur kaum gemeinsame Konferenzen und Meetings zwischen Wissenschaft und Praxis? Gibt es unterschiedliche Interessen beider Gruppen? Sind die Ausgangslagen so unterschiedlich, dass es schwierig ist für Forscher an relevanten Themen zu arbeiten oder bleibt einfach keine Zeit in der Praxis, um relevante Forschungsansätze umzusetzen? Was sind die Themen in beiden Bereichen? Gibt es Überlappungen oder Zeitverzögerungen? Gibt es Hypes, die einander beeinflussen?

Ziel der Arbeit: Die Arbeit soll sich genau im Spannungsfeld zwischen Wissenschaft und Praxis im Software Engineering bewegen und obige Fragen durch Interviews, Analysen von Vortragsthemen auf Konferenzen, in Meetups, und Veranstaltungen, und Surveys beantworten. Dabei sollen thematische Schwerpunkte und deren zeitlicher Verlauf in beiden Bereichen erkannt und modelliert sowie mögliche Brücken identifiziert werden. So können vielleicht einzelne Personen, die die Bereiche überqueren, Firmen, die sowohl Forschen als auch Entwicklen, oder relevante Themengebiete für einen Austausch und eine Zusammenarbeit der Disziplinen erkannt werden. Ein Ziel der Arbeit wäre dann möglichst solche Potentiale aufzuzeigen und Vorschläge für eine bessere Zusammenarbeit treffen zu können. Was kann die Wissenschaft von der Praxis lernen und wie können die Firmen das Wissen in der Forschung nutzbar machen?

Quellen: TBA

Kontext: Aktuellen Trends in der Digitalisierung und Virtualisierung führen dazu, dass der Energiebedarf von IT-Systemen stetig steigt. Verschiedene Prognosen schätzen, dass sich der Energieverbrauch bin 2030 verdoppeln wird. Im Hinblick auf die Erderwärmung und die Klimaziele der Bundesrepublik ist es notwendig, diesem Energiebedarf entgegen zu wirken.

Die Analyse des Energieverbrauchs von IT-Systemen ist ein nicht triviales Feld in der Forschung. Sowohl Hardawre als auch Software hat einen Einfluss auf den Energirverbrauch. Die große Anzahl an verschiedenen Kombinationsmöglichkeiten (unterschiedliche Hardware und Software) macht es schwer eine optimale Konfiguration zu finden.

Probleme&Motivation: Um dieses Problem anzugehen haben wir ein Energiemesssystem für Office PCs entwickelt, mit dem wir sowohl den Energieverbrauch wie auch die Performance aller aktiven Anwendungen messen können. Wir haben im Rahmen von einer 2-monatigen Studie Daten alle Daten erhoben [1]. Dieser Datensatz soll die Grundlage für die Arbeit sein.

Ziel der Arbeit: Ziel der Arbeit ist es, die gesammelten Daten auszuwerten und den Einfluss von Hardware und Softwarekonfigurationen auf Performance und Energieverbrauch zu modellieren und zu vergleichen. Anschließend können konkrete Handlungsweisen abgeleitet und geteste werden.

Quellen:

Kontext: Aktuellen Trends in der Digitalisierung und Virtualisierung führen dazu, dass der Energiebedarf von IT-Systemen stetig steigt. Verschiedene Prognosen schätzen, dass sich der Energieverbrauch bin 2030 verdoppeln wird. Im Hinblick auf die Erderwärmung und die Klimaziele der Bundesrepublik ist es notwendig, diesem Energiebedarf entgegen zu wirken.

In letzter Zeit gewinnt das Thema Energieeffizienz von Software immer mehr an Bedeutung. Hardware ist das physische Medium, welches Energie verbraucht, Software jedoch steuert die Hardware. Software ist also einer der wichtigsten Bestandteile wenn es um die Reduzierung von Energieverbrauch geht. Uns interessiert im Rahmen dieser Arbeit nicht nur, wie wir Software konfigurieren können um Energie zu sparen, sonder auch, warum bestimmte Konfigurationen einen höheren Verbrauch haben.

Probleme&Motivation: Um sparsame und schnelle Konfigurationen von Softwaresystemen zu finden, werden Performance/Energie-Einfluss Modelle gelernt. Mithilfe dieser Modelle kann der Konfigurationsraum nach besseren Konfigurationen durchsucht werden. Solche so genannten Black-Box Modelle können Konfigurationsoptionen und Interaktionen identifizieren, die einen großen Einfluss auf das Verhalten haben. Sie können jedoch keinen Aufschluss darüber geben, warum Konfigurationen schneller oder sparsamer sind als Andere.

Deshalb wollen wir Energie-Einfluss Modelle auf Methodenebene lernen. Energiemessung sind, im Vergleich zu Performancemessungen, jedoch gröber aufgelöst, weniger genau und benötigen spezielle Messgeräte. Wir wollen also Wissen aus Methoden-Level Performance-Influence Modellen transferieren um das Lernen der Energie-Modelle zu unterstützen.

Ziel der Arbeit: Entwickeln und Evaluieren eines Ansatzes zur Erstellung von Energie-Influence Modellen auf Methodenebene.

Kontext: Aktuellen Trends in der Digitalisierung und Virtualisierung führen dazu, dass der Energiebedarf von IT-Systemen stetig steigt. Verschiedene Prognosen schätzen, dass sich der Energieverbrauch bin 2030 verdoppeln wird. Im Hinblick auf die Erderwärmung und die Klimaziele der Bundesrepublik ist es notwendig, diesem Energiebedarf entgegen zu wirken.

Probleme&Motivation: In der Literatur befassen sich einige Arbeiten mit der Sicht der Developer, andere beleuchten die Einstellung von Unternehmen im Generellen zum Energieverbrauch von Soft- und Hardware. Es ist jedoch vor allem auf Seiten der Entscheidungsträger (Hardare- und Softwarebeschaffung, Verwaltung und Administration, …) nicht klar, welche akuten Probleme existieren.

Ziel der Arbeit: Durch eine Literaturanalyse soll der ‚Ist-Zustand‘ in der Forschung erfasst werden. Daraus resultierend sollen dann, mithilfe von Fragebögen, Interviews, Surveys, u.s.w., Perspektiven verschiedener Akteure (Entscheidungsträger, Developer, Forscher, Anwender, …) erfasst und gegenüber gestellt werden um aktuelle Probleme und Aufgaben zu identifizieren.

Quellen:

  • Pang, Candy, et al. „What do programmers know about software energy consumption?.“ IEEE Software 33.3 (2015): 83-89.
  • Jagroep, Erik, et al. „Energy efficiency on the product roadmap: An empirical study across releases of a software product.“ Journal of Software: Evolution and process 29.2 (2017): e1852.

Kontext: Active Learning beschreibt ein Machine Learning Szenario, bei dem das Modell Stück für Stück selbst entscheidet, welche Daten es für das Training benötigt. Da die Zahl der möglichen Konfigurationen exponentiell mit der Anzahl der Optionen eines konfigurierbaren Softwaresystems wächst, ist Active Learning in diesem Feld besonders vielversprechnd um bspw. den Energieverbrauch bei relativ wenig Messungen gut vorhersagen zu können.

Probleme&Motivation: Aktuelle Ansätze wählen oft Pool-Based-Active-Learning, welches dem Modell einen alle Konfigurationen umfassenden Pool zur Auswahl für die nächst Messung gibt. Für größere Systeme ist das nicht machbar, da es zu viele Konfigurationen gibt.

Ziel der Arbeit: Als Alternative zum Pool-Based-Sampling soll ein Active-Learning-Ansatz entwickelt werden, der anhand der Modell-Parameter und die damit verbundenen Unsicherheiten entscheidet, welche Konfigurationen als nächstes gemessen werden sollen. Hierfür können bestehende Probabilistic-Programming-Ansätze als Grundlage für Modelle, die eine Unsicherheitsinschätzung bieten, genutzt werden, Ziel ist es somit auch, sich Kenntnisse zu Probabilistic Programming anzueignen.

Quellen:

  • Burr Settles. “Active Learning Literature Survey.” Computer Sciences Technical Report. University of Wisconsin-Madison, 2009.
  • TBA

Kontext: Die Komplexität aktueller Softwaresysteme ist groß. Durch eine Vielzahl von Konfigurationsoptionen sollen die Systeme an die verschiedene Bedürfnisse der Nutzer angepasst werden. Verschiedene Eigenschaften von Sorftwaresystemen wie Performance und Energieverbrauch müssen otimiert werden.

Probleme&Motivation: Die Konfigurationsbedingte Komplexität der Systeme erschwert Analysen mit herkömmlichen Hilfsmittel. Um Softwaresysteme besser verstehen zu können wurden eine Vielzahl von Tools entwickelt [1, 2, 3]. Diese Tools betrachten jeweils einzelne wichtige Aspekte der Systeme, wie Performance, Energieverbrauch, Konfigurierbarkeit, Feature Influence Tracing, u.s.w., sind aber immer auf den 2D-Raum von PC monitoren beschränkt. Dadurch wird es schwer Zusammenhänge innerhalb der Systeme zu erkennen. Wir wollen die ein Tool entwickeln, welches die Möglichkeiten der existierendne Tool vereinigt und in der Virtuellen Umgebung mehr Raum und natülichere Interaktionsmöglichkeiten bietet.

Ziel der Arbeit: Ziel der Arbeit soll es sein, das bestehende Framework zu erweitern um das Verstehen von Zusammenhängen zischen Features, Softwareeigenschaften und Source Code zu ermöglichen.

Quellen: [1] FeatureIDE: https://featureide.github.io/ [2] Flame Graphs: http://www.brendangregg.com/flamegraphs.html [3] Code City: https://wettel.github.io/codecity.html

Kontext: Software Testing ist eines der wichtigsten Disziplinen im Software Engineering und in der Softwareentwicklung generell. Aufgrund der hohen Kosten zum Finden und Beheben von Fehlern im Code werden ständig neue Ansätze entwickelt, um schneller, genauer und automatisiert Softwarefehlern zu finden und zu fixen.

Probleme&Motivation: Die große und ständig wachsende Anzahl von Tools und Papern im Bereich des Software Testing macht es schwer zu ermitteln, welcher Ansatz überlegen oder überhaupt einsetzbar ist in der Praxis. Weiterhin ist unklar, welche Systeme getestet werden und ob die Resultate vergleichbar oder reproduzierbar sind.

Ziel der Arbeit: Das Ziel der Arbeit ist durch eine tiefgreifende Analyse der Literatur zum Thema Software Testing festzustellen, ob die Forschung an der Praxis vorbei geht und die Resultate überhaupt reproduzierbar sind. Dabei sollen wissenschaftliche Artikel bzgl. der vorgebrachten Ansätze auf ihrer Vergleichbarkeit und Reproduzierbarkeit hin untersucht werden. Ein Augenmerk liegt dabei, ob Vergleich selbst gemacht werden mit anderen Ansätzen, ob es gemeinsame Standards gibt, um Software Testing Ansätze zu evaluieren und zu bewerten und wie dabei die wissenschaftlichen Artikel sich referenzieren und verlinken.

Quellen: TBA

Context:Many software systems exhibit a large variety of configuration options. Non-functional properties, such as performance or energy consumption, often depend on configuration choices. Several approaches in literature use machine learning techniques to (1) be able to estimate the performance of arbitrary configurations, and (2) isolate influential configuration options and determine configurations with optimal performance. The number of possible configrations over even a relatively small number of configurations is usually infeasible due to the prohibitively combinatiorial complexity (too many possible combinations). At the same time, software systems exhibit constraints among configuration options, such as mutual exclusion of option groups or implications among options (variability modeling). Thus, a key ingredient to learn machine learning models is to select a sample of configurations that is both valid in the set of constraints as well as representative enough of the whole population of configurations so that one can accurately learn machine learning models. Existing sampling techniques for software configurations either aim at covering the influence of individual options and interactions, increase representativeness by increasing coverage of the configuration space, or aim at identifying influential options in order to find optimal configurations.

Problem:Group sampling is an experimental design, where, in theory, one could identify influential options (independent variables in a machine learning setting) and estimate their effect even with less observations than independent variables. For such an underdetermined set of equations, repeated grouping of independent variables into virtual variables and superimposition of regression coefficients allow for training effective models with minimal sampling effort. In literature, however, the presence of constraints among independent variables is not considered. Configuration constraints, such as groups of mutually exclusive options limit the number of „virtual options“ that configuration options can be assigned to.

Scope:The scope of this topic comprises (1) the implementation a group sampling strategy in the presence of configuration constraints, (2) an exploration of solutions on how one can mitigate the limitations posed by variability constraints, and (3) an evaluation of whether group sampling is superior to established sampling strategies withr espect to measurement effort and prediction accuracy.

Quellen:

  • Saltelli, Andrea, et al. Global sensitivity analysis: the primer. John Wiley & Sons, 2008. (free e-book available, chapter 2.5)
  • Christian Kaltenecker, Alexander Grebhahn, Norbert Siegmund, and Sven Apel. The Interplay of Sampling and Machine Learning for Software Performance Prediction. IEEE Software, 37(4): pp. 58–66, 2020
  • Don Batory. 2005. Feature models, grammars, and propositional formulas. In Proceedings of the 9th international conference on Software Product Lines (SPLC’05). Springer-Verlag, Berlin, Heidelberg, 7–20
  • Jeho Oh, Don Batory, Margaret Myers, and Norbert Siegmund. Finding Near-Optimal Configurations in Product Lines by Random Sampling. In Proceedings of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on the Foundations of Software Engineering (ESEC/FSE), pp. 61 –71, ACM Press, September 2017

Useful tools: SPLConqueror (reference implementation for obtaining sampe sets of configurations with established sampling strategies), also useful for constructing variability models a constraint-satisfaction-problem (CSP) or satisfiability (SAT) solver, such as z3 or picosat, for finding solutions to configuration constraints


Abgeschlossene Arbeiten

Software Engineering 4 AI in der Praxis (Bachelor)

Abdeckungsanalyse von konfigurierbaren Performance-Benchmarks und Softwaresystemen (Bachelor/Master)

Energy Consumption in Practice (Bachelor)

Studie über Konfigurationsfehler (Bachelor)

Automatisiertes Beheben von Konfigurationsfehlern (Bachelor/Master)