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
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
- Tipps & Tricks vom IPD Snelting
- Allgemeine Aufgabenbeschreibung
- Phase 1: Aufgabe Pflichtenheft: [PDF]
- Phase 2: Aufgabe Entwurf: [PDF]
- Phase 3: Aufgabe Implementierung: [PDF]
- Phase 4: Aufgabe Qualitätssicherung: [PDF]
- Phase 5: Aufgabe Abschlusspräsentation: [PDF]
Weiteres Material
- LaTeX: Kurzbeschreibung (dt., PDF)
- Typographie: typokurz - Einige wichtige typographische Regeln (dt., PDF)