Sommersemester 2018
Praxis der Softwareentwicklung (PSE)
Blockchain-basiertes E-Voting
Prof. Dr. Bernhard Beckert
Mihai Herda,
Michael Kirsten
Aktuelles
- 05.04.2018: Bekanntgabe des Themas
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 Forschungsthemen an unserem Lehrstuhl ist die Spezifikation und Verifikation von Wahlverfahren, um nachzuweisen, dass diese korrekt ablaufen. Die Entwicklung von Distributed-Ledger-Technologien (bzw. Blockchains) stellt nun eine Möglichkeit dar, die Nachverfolgbarkeit der Stimmabgabe über eine Kette von Transaktionen in der Blockchain zu gewährleisten. Neben den sehr populär gewordenen Umsetzungen öffentlicher Blockchains wie Ethereum oder Bitcoin existieren außerdem sogenannte permissioned Ledger-Technologien, die spezialisierte Blockchains für einen begrenzten Nutzerkreis inklusive einer individuellen Rechteverwaltung ermöglichen. Innerhalb dieses Projekts wollen wir diese Technologie nun auf elektronische Wahlverfahren anwenden.
Dieses PSE-Projekt ist Teil des Forschungsprojekts VeriSmart. Im Rahmen von VeriSmart (ein Software Campus-Projekt) entwickelt unsere Forschungsgruppe Wege für die Spezifikation und formale Verifikation von Smart Contracts.
Aufgabenbeschreibung
Innerhalb dieses Projekts sollen Sie ein Blockchain-basiertes E-Voting-System entwerfen und implementieren. Vorerst soll die Stimmabgabe öffentlich sein und für kleine Wahlen (bspw. für Vereinswahlen o.Ä.) funktionieren. Optional können verschiedene Abstimmungstypen (Mehrheitswahlen, Zustimmungswahlen, Präferenzwahlen, etc.) ergänzt sowie zusätzliche Konzepte wie etwa eine Stimmendelegation unterstützt werden. Hierbei erwarten wir, dass Sie sich selbstständig in das Blockchain-Framework einarbeiten. Wenn Sie gut mit dem Framework zurechtkommen, sind auch Erweiterungen auf (teil-)private Wahlen denkbar.
Anforderungen
- Funktionalität für Wähler und Wahlleiter
- Stimmen im Ledger gespeichert
- Automatische Überprüfung und Auszählung mit Smart Contracts
- Zwei graphische Benutzeroberflächen (eine für Wähler, eine für Wahlleiter)
Technischer Rahmen
- Hyperledger Fabric (quelloffen) als Blockchain-Framework
- Implementierung der Clients in Java
- Smart Contracts in Java oder Go
Hinweise und Erwartungen
- Aktives Source Code Management mittels eines Versionsverwaltungssystems
- Automatische Softwaretests
- Kontinuierliche Integration
- Anwendung bzw. Einhaltung von Design Patterns, Best Practices, und Style-Konventionen
- Kommentierter Quellcode, sowie Dokumentation und Testprotokolle
Termine
Termin | Zeit | Inhalt | Ort |
---|---|---|---|
24.04.2018 | 15:45 Uhr | Auftaktveranstaltung -- Projektvorstellung | Gaede-Hörsaal (Geb. 30.22) |
04.05.2018 | 15:45 Uhr | Erstes Gruppentreffen -- KickOff-Folien | Raum 211, Gebäude 50.34 |
11.05.2018 | 15:45 Uhr | Gruppentreffen -- Aufgabenbeschreibung, Pflichtenheftaufgabe | Raum 211, Gebäude 50.34 |
18.05.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
25.05.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
01.06.2018 | 15:45 Uhr | Kolloquium Pflichtenheft (Abgabe am 30.05.2018) -- Entwurfsaufgabe | Raum 211, Gebäude 50.34 |
08.06.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
15.06.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
22.06.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
29.06.2018 | 16:15 Uhr | Kolloquium Entwurf (Abgabe am 27.06.2018) -- Implementierungsaufgabe | Raum 211, Gebäude 50.34 |
06.07.2018 | 15:00 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
13.07.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
20.07.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
30.07.2018 | 10:00 Uhr | Kolloquium Implementierung (Abgabe am 25.07.2018) -- Qualitätssicherungsaufgabe | Raum 211, Gebäude 50.34 |
30.07.2018 – 10.08.2018 | Klausurenpause | ||
17.08.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
24.08.2018 | 15:45 Uhr | Gruppentreffen | Raum 211, Gebäude 50.34 |
31.08.2018 | 09:45 Uhr | Kolloquium Qualitätssicherung (Abgabe am 29.08.2018) | Raum 211, Gebäude 50.34 |
07.09.2018 | 15:45 Uhr | Interne Abnahme -- Abschlusspräsentationsaufgabe | Raum 211, Gebäude 50.34 |
21.09.2018 | 15:00 Uhr | Abschlusspräsentation | Raum 301, 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)