Wintersemester 2017/18

Praxis der Softwareentwicklung (PSE)

Entwicklung eines relationalen Debuggers

Prof. Dr. Bernhard Beckert
Mihai Herda, Michael Kirsten

Allgemeines

In "Praxis der Softwareentwicklung" (PSE) lernen die Teilnehmer, ein vollständiges Softwareprojekt nach dem Stand der Softwaretechnik in einem Team mit etwa 5 bis 6 Teilnehmern durchzuführen. Ziel ist es insbesondere, Verfahren des Software-Entwurfs und der Qualitätssicherung praktisch einzusetzen, Implementierungskompetenz umzusetzen, und arbeitsteilig im Team zu kooperieren.

Allgemeine Informationen zum Bachelor-Modul inklusive formaler Voraussetzungen und Prüfungsmodalitäten sind auf den Seiten des Lehrstuhls für Programmierparadigmen am IPD zu finden.

Projektinhalt

Hintergrund

Eines der Hauptforschungsthemen an unserem Lehrstuhl ist die Verifikation relationaler Eigenschaften von Programmen. Relationale Eigenschaften sind solche Eigenschaften, die sich auf mindestens zwei Programmausführungen beziehen. Ein Beispiel dafür ist die Programmäquivalenz: Liefern zwei Programme bei gleicher Eingabe immer die gleiche Ausgabe? Ein anderes wichtiges Beispiel für relationale Eigenschaften stellen Informationsflusseigenschaften dar: Haben gewisse Eingaben Einfluss auf gewisse Ausgaben? Eine besondere Rolle spielt hier die Nichtinterferenz-Eigenschaft (engl. noninterference). Diese besagt, dass als geheim eingestufte Eingaben (z. B. ein Passwort) keine öffentlichen Ausgaben beeinflussen können. Für den Nachweis solcher Informationsflusseigenschaften wird eine Technik namens Selbstkomposition verwendet, wobei zwei Ausführungen desselben Programms mit verschiedenen geheimen Eingaben miteinander verglichen werden.

Aufgabenbeschreibung

Unser Lehrstuhl hat bereits verschiedene Ansätze entwickelt und Tools (z. B. llrêve, llrêve for noninterference oder KeY) implementiert, um relationale Eigenschaften formal beweisen zu können. Da es sich hierbei allerdings um ein unentscheidbares Problem handelt und folglich ein Beweis nicht immer gelingen kann, möchten wir im Rahmen dieses PSE-Projekts ein Werkzeug entwickeln, das dem Benutzer die Möglichkeit gibt, mehrere Programausführungen interaktiv zu analysieren und zu vergleichen. Hierzu soll ein sogenannter relationaler Debugger entwickelt werden, der im Unterschied zu einem herkömmlichen Debugger mehrere Programmläufe nebeneinanderlegen und vergleichen kann.

Anforderungen

Das zu entwickelnde Tool soll das gleichzeitige Debuggen von mindestens zwei Programmausführungen erlauben. Übliche Debugger-Konzepte (break-points, stepping, etc.) sollen auf die relationale Ebene übertragen werden. Die Zielsprache soll eine vereinfachte While-Sprache (z. B. eine sinnvolle Teilmenge von Java) sein. Der Debugger soll über eine benutzerfreundliche graphische Oberfläche verfügen, die die Analyse zweier Programmläufe ermöglicht. Die Implementierung soll in der Programmiersprache Java erfolgen.

Termine

Abgabe der Artefakte: Jeweils 11:30 Uhr am Freitag vor dem Kolloquium im SVN-Depot.1

Termin Zeit Inhalt Ort
23.10.2017 15:45 Uhr Auftaktveranstaltung -- Projektvorstellung Engelbert-Arnold-Hörsaal (Geb. 11.10)
02.11.2017 13:00 Uhr Erstes Gruppentreffen -- Aufgabenbeschreibung, Pflichtenheftaufgabe Raum 211, Gebäude 50.34
06.11.2017 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
13.11.2017 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
20.11.2017 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
27.11.2017 15:45 Uhr Kolloquium Pflichtenheft (Abgabe am 24.11.2017) -- Entwurfsaufgabe Raum 211, Gebäude 50.34
04.12.2017 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
11.12.2017 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
18.12.2017 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
24.12.2017  –  07.01.2018 Weihnachtspause
08.01.2018 15:45 Uhr Kolloquium Entwurf (Abgabe am 22.12.2017)
-- Implementierungsaufgabe
Raum 211, Gebäude 50.34
15.01.2018 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
22.01.2018 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
29.01.2018 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
05.02.2018 15:45 Uhr Kolloquium Implementierung (Abgabe am 02.02.2018)
-- Qualitätssicherungsaufgabe
Raum 201, Gebäude 50.34
05.02.2018  –  18.02.2018 Klausurenpause
26.02.2018 15:45 Uhr Gruppentreffen Raum 201, Gebäude 50.34
05.03.2018 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
12.03.2018 15:45 Uhr Kolloquium Qualitätssicherung (Abgabe am 09.03.2018) Raum 211, Gebäude 50.34
19.03.2018 15:45 Uhr Interne Abnahme (Abgabe am 16.03.2018)
-- Abschlusspräsentation
Raum 211, Gebäude 50.34
26.03.2018 15:45 Uhr Gruppentreffen Raum 211, Gebäude 50.34
28.03.2018 14:00 Uhr Abschlusspräsentation Raum 131, Gebäude 50.34

Dokumente

Weiteres Material



1. Bitte erst hier registrieren.