Theses

Invarianten bei der Ausführung von Java-Code überprüfen

Bachelor- oder Masterarbeit in der Abteilung Softwaretechnik



Motivation

Im Rahmen der Programmier- und Modellierungsausbildung hat das Selbststudium einen hohen Stellenwert. Programmier- und Modellierfähigkeiten können nicht durch passives Lernen erworben werden, sondern benötigen ein aktives Auseinandersetzen mit der Materie. Dafür soll den Studierenden eine Plattform zum Selbststudium zur Verfügung gestellt werden, auf der sie zeitnah Rückmeldungen zu Fehlern und Problemen ihrer Programmier- und Modellierungslösungen erhalten.

Um die Funktionsweise von Java-Code zu überprüfen, können JUnit-Testfälle automatisiert gegen den eingereichten Java-Code ausgeführt werden. Im Fall eines Sortierverfahrens kann damit aber nur die Sortierung an sich überprüft werden, aber nicht ohne Weiteres, ob das in der Aufgabenstellung geforderte konkrete Sortierverfahren oder doch ein anderes realisiert wurde (z.B. BubbleSort vs MergeSort). Verschiedene Sortierverfahren unterscheiden sich hauptsächlich hinsichtlich ihrer Invarianten, die den sortierten Bereich vom unsortierten Bereich abgrenzen und unterschiedliche Aussagen zum unsortierten Bereich treffen.


Aufgabenstellung

Ziel dieser programmierlastigen Abschlussarbeit ist es daher, ein Verfahren für die dynamische Überprüfung von Invarianten während der Ausführung von Java-Code zu entwickeln, prototypisch zu realisieren und zu evaluieren. Dabei soll das entwickelte Verfahren die Definition und Überprüfung beliebiger Invarianten ermöglichen, sodass auch andere Algorithmen neben Sortierern unterstützt werden können.


Betreuer
Prof. Dr. Andreas Winter ()
Dr. Christian Schönberg ()

Related Projects
Logo Innovation plus

In der Programmier- und Softwaretechnikausbildung ist neben der Vermittlung theoretischer Grundlagen ein wichtiger Aspekt die praktische Anwendung und Umsetzung der gelernten Konzepte durch die Studierenden. Dabei geht es um Programmierung und Modellierung von einfachen bis zu komplexen Aufgaben als Aspekte der Softwareentwicklung. Primärziel des Projektes ist es, den Studierenden eine Plattform zum Selbststudium bereitzustellen, auf der sie zeitnah Rückmeldungen zu Fehlern und Problemen ihrer Programmier- und Modellierungslösungen erhalten, die aber gleichzeitig durch Automatisierung für bis zu 500 Studierende einer Veranstaltung skaliert. Die Plattform soll sowohl für Einzelarbeit als auch für Team-basierte Entwicklungsmethoden wie Pair-Programming oder kollaborative Modellierung ausgelegt sein.

 
Software Quality and Testing
The Quality is an important aspect of software and has high impact on the evolution of software and the possibilities of their modernization. Testing is an important technique to improve the quality of software. This research area targets approaches, techniques, and tools to detect, measure, and improve the quality of software among the whole software life cycle.
 


(Changed: 2021-04-30)