Praxis der Softwareentwicklung (PSE)
Wintersemester 2012/2013
Prof. Dr. Bernhard Beckert, Thorsten Bormer, Daniel Bruns
Typ: | Praktikum |
Ort: | Raum 211, Geb. 50.34 |
Zeit: | n.V. |
SWS: | 4 |
LVNr.: | 24034 |
Aktuelles
18.01.13: Restliche Termine
22.11.12: Aufgabenstellung Entwurfsphase ist online.
30.10.12: Folien zum Vortrag "Pflichtenheft und Logik" sind online.
25.10.12: Allgemeine Aufgabenbeschreibung und Aufgabenstellung Pflichtenheft sind online.
25.10.12: Folien der Einführungsveranstaltung sind online. [PDF (KIT intern)]
15.10.12: Termin des ersten Gruppentreffens: Mittwoch, 24.10. um 11:30 Uhr in SR -109 (Geb. 50.34). Der Raum wird noch bekannt gegeben.
15.10.12: Website online
Beschreibung:
Erstellung des Pflichtenheftes inkl. Verwendungsszenarien - Objektorientierter Entwurf nebst Feinspezifikation - Implementierung in einer objektorierten Sprache - Funktionale Tests und Überdeckungstests - Einsatz von Werkzeugen (z. B. Eclipse, UML, Java, Junit, Jcov) - Präsentation des fertigen Systems.
Allgemeines
In "Praxis der Softwareentwicklung" (PSE) lernen die Teilnehmer, ein vollständiges Softwareprojekt nach dem Stand der Softwaretechnik in einem Team mit 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.
Aufgabenstellung
Automatisches Prüfen von Programmeigenschaften
Ziel des Projekts ist es, ein mächtiges Analysewerkzeug für eine einfache imperative Programmiersprache zu erstellen. Dabei sollen sowohl klassische Techniken zur Programmanalyse zum Einsatz kommen (wie interaktives Debugging), als auch moderne, logikbasierte Methoden zur Analyse und Prüfung der Programmeigenschaften.
Eine wichtige Programmeigenschaft ist die Gewährleistung der Vertraulichkeit von Daten. So muss sichergestellt sein, dass vertrauliche Daten (etwa das Passwort eines Benutzers) nicht an öffentlich einsehbare Kanäle weitergegeben werden (z. B. in einer Fehlermeldung des Systems), bzw. nur in einem für die Funktion des Programms notwendigen Umfang nach außen gelangen.
Solche unbeabsichtigten Informationsflüsse sind in der Praxis mitunter schwer zu finden. Klassische Hilfsmittel aus der Softwaretechnik zur Sicherstellung der Softwarequalität, wie etwa Software-Testen, sind hierbei nicht ausreichend, da sie nicht die Abwesenheit von unerwünschten Informationsflüssen für alle möglichen Programmabläufe sicherstellen können. Im PSE wird dazu ein Werkzeug implementiert, das formale Beweise liefern kann, aus denen folgt, dass ein Programm nur die genau durch den Entwickler des Programms angegebenen, erlaubten Informationsflüsse aufweist.
Um Methoden der Softwareverifikation implementieren zu können, die dem aktuellen Stand der Technik entsprechen, beschränken wir uns auf eine einfache Zielsprache, sowie auf eine einfache Spezifikationssprache, in der die gewünschten Eigenschaften des Programms angegeben werden.
Die einzelnen Module des zu erstellenden Systems sind:
- Parser für Programme, sowie Spezifikationen
- Interpreter
- Debugger
- Run-time checker
- Programmverifikation (unter Verwendung eines existierenden Beweistools); dies ist das Kernstück des Analysewerkzeugs
Als Implementierungssprache für dieses System kommt Java zum Einsatz.
Die Steuerung der Komponenten des Analysewerkzeugs und dessen Rückmeldungen sollen dabei mit Hilfe einer grafischen Benutzeroberfläche erfolgen.
Dokumente
- Allgemeine Aufgabenbeschreibung: [PDF]
- Phase 1: Aufgabe Pflichtenheft: [PDF]
- Phase 2: Aufgabe Entwurf: [PDF]
- Phase 3: Aufgabe Implementierung: [PDF]
- Phase 4: Aufgabe Validierung: [PDF]
- Phase 5: Aufgabe Interne Abnahme: [PDF]
Ablauf
Zeitpunkt | Termin | Hinweise |
---|---|---|
15.10.2012, 15:45 Uhr | Auftaktveranstaltung | Vorstellung des Projekts |
24.10.2012, 11:30 Uhr | Erstes Gruppentreffen | Beginn der Einarbeitungsphase |
29.10.2012, 15:45 Uhr 31.10.2012, 11:30 Uhr |
Gruppentreffen | Vertiefung der Aufgabenstellung |
05.11.2012, 15:45 Uhr 07.11.2012, 11:30 Uhr |
Gruppentreffen | |
12.11.2012, 15:45 Uhr 14.11.2012, 11:30 Uhr |
Gruppentreffen | |
19.11.2012, 15:45 Uhr 21.11.2012, 11:30 Uhr |
Kolloquium Pflichtenheft | |
26.11.2012, 15:45 Uhr 28.11.2012, 11:30 Uhr |
Gruppentreffen | |
03.12.2012, 15:45 Uhr 05.12.2012, 11:30 Uhr |
Gruppentreffen | |
10.12.2012, 15:45 Uhr 12.12.2012, 11:30 Uhr |
Gruppentreffen | |
17.12.2012, 15:45 Uhr 19.12.2012, 11:30 Uhr |
Kolloquium Entwurf | |
07.01.2013, 15:45 Uhr 09.01.2013, 11:30 Uhr |
Gruppentreffen | |
14.01.2013, 15:45 Uhr 16.01.2013, 11:30 Uhr |
Gruppentreffen | |
21.01.2013, 15:45 Uhr 23.01.2013, 11:30 Uhr |
Gruppentreffen | |
28.01.2013, 15:45 Uhr 30.01.2013, 11:30 Uhr |
Kolloquium Implementierung | |
06.02.2013, 11:30 Uhr | Gruppentreffen | |
13.02.2013, 11:30 Uhr | Gruppentreffen | |
20.02.2013, 11:30 Uhr | Kolloquium Validierung | |
27.02.2013, 11:30 Uhr | Kolloquium interne Abnahme |
Weiteres Material
- 13.02.2012 Folien Testen mit JUnit [PDF]
- 25.10.2012 Folien Einführungsveranstaltung [PDF (KIT intern)]
- 30.10.2012 Folien Pflichtenheft und Logik [PDF (KIT intern)]
- 07.11.2012 Pflichtenheft [Musterdokument (PDF) (KIT intern)]