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

Zeitplan (vorläufig)
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)]