Praxis der Softwareentwicklung

Wintersemester 2011/2012

Prof. Dr. Bernhard Beckert, Thorsten Bormer, Daniel Bruns



Typ: Praktikum
Zeit: n.V.
SWS: 4
LVNr.: 24034

Aktuelles

02.02.12: Aufgabenstellung für die letzten beiden Phasen und Folien zum Thema Testen
27.01.12: Termine aktualisiert
17.11.11: Aufgabenstellung zur Entwurfsphase online
02.11.11: Beispiel zum Pflichtenheft aktualisiert
27.10.11: Folien der Einführungsveranstaltung und Dokumente zum Pflichtenheft online
19.10.11: Termin des ersten Gruppentreffens: Dienstag, 25.10. um 15:45 Uhr in Raum 211 (Geb. 50.34)
30.09.11: 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 der Korrektheit von Programmen

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 und run-time checking), als auch moderne, logikbasierte Methoden zur Prüfung der Korrektheit von Programmen (Softwareverifikation).

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, die es z. B. erlaubt, im Falle des Interpreters die einzelnen Programmzustände des interpretierten Programms anzuzeigen.


Aufgabenbeschreibungen zu den einzelnen Phasen

  • Phase 1: Pflichtenheft [PDF]
  • Phase 2: Entwurf [PDF]
  • Phase 3: Implementierung [PDF]
  • Phase 4: Validierung [PDF]
  • Phase 5: Abschluss [PDF]

Ablauf

Zeitplan (vorläufig)
Zeitpunkt Termin Hinweise
17.10.2011, 15:45 Uhr Auftaktveranstaltung Vorstellung des Projekts (im HSaF)
25.10.2011, 15:45 Uhr
(Raum 211, Geb. 50.34)
Erstes Gruppentreffen Beginn der Einarbeitungsphase
02.11.2011 (Gruppe 1+2) Gruppentreffen
07.11.2011 (Gruppe 2) Gruppentreffen
10.11.2011 (Gruppe 1)
14.11.2011 (Gruppe 2)
Zwischenbericht Pflichtenheft
17.11.2011 (Gruppe 1)
21.11.2011 (Gruppe 2)
Kolloquium Pflichtenheft
01.12.2011 (Gruppe 1)
05.12.2011 (Gruppe 2)
Zwischenbericht Entwurf
22.12.2011 (Gruppe 1)
19.12.2011 (Gruppe 2)
Kolloquium Entwurf
19.01.2012 (Gruppe 1)
16.01.2012 (Gruppe 2)
Zwischenbericht Implementierung
02.02.2012 (Gruppe 1)
30.01.2012 (Gruppe 2)
Kolloquium Implementierung
24.02.2012 (Gruppe 1)
20.02.2012 (Gruppe 2)
Zwischenbericht Validierung
08.03.2012 (Gruppe 1)
05.03.2012 (Gruppe 2)
Kolloquium Validierung
15.03.2012 (Gruppe 1)
12.03.2012 (Gruppe 2)
Kolloquium interne Abnahme
28.03.2012 Abschlussveranstaltung Gemeinsam mit allen Gruppen des ITI

Materialien

  • 27.10.2011 Folien Einführungsveranstaltung [PDF (KIT intern)]
  • 27.10.2011 Pflichtenheft [Inhalt (PDF)] [Musterdokument (PDF) (KIT intern)]
  • 02.02.2012 Folien Testen mit JUnit [PDF (KIT intern)]