Praxis der Softwareentwicklung (PSE)

  • Typ: Vorlesung (V)
  • Semester: WS 18/19
  • Dozent: Denis Lohner
    Prof. Dr.-Ing. Gregor Snelting
    Andreas Fried
  • SWS: 4
  • LVNr.: 2400065
VoraussetzungenDie Voraussetzungen werden in der Modulbeschreibung erläutert.
AnmerkungPSE und TSE müssen zusammen belegt werden.
KurzbeschreibungObjektorientierte Entwicklung eines Softwaresystems im Team.
Arbeitsbelastung

7 LP entsprichen ca 210 Arbeitsstunden pro Teilnehmer, davon

ca 30 Std Erstellung des Pflichtenheftes

ca 60 Std Erstellung des Entwurfsdokument

ca 60 Std Implementierung

ca 50 Std integrierte Qualitätssicherung

ca 10  Std Erstellung/ Vorbereitung der Abschlusspräsentation.

Der gesamte Projektaufwand ist incl. TSE für ein 5-er Team also ca. 1350 Arbeitsstunden

Ziel

Die Studierenden lernen, ein vollständiges Softwareprojekt nach dem Stand der Softwaretechnik in Teams von 4-6 Teilnehmern durchzuführen. Ziel ist es inbesondere, Verfahren des objektorientierten Software-Entwurfs und der Qualitätssicherung praktisch einzusetzen, Implementierungskompetenz umzusetzen, und arbeitsteilig im Team zu kooperieren. Die Teilnehmer erstellen ein Pflichtenheft von ca. 30 Seiten, ein Entwurfsmodell mit ca 75 Klassen, eine Entwurfsdokumentation von ca. 80 Seiten, eine validierte Implementierung mit ca. 10000 Zeilen Quelltext, eine Implementierungs-dokumentation von ca. 15 Seiten, und eine Qualitätssicherungsdokumentation von ca 25 Seiten. Die Teilnehmer stellen ihr Projekt in einer Abschlusspräsentation (ca 15 min) vor.

Dazu werden von den betreuenden Lehrstühlen Aufgabenstellungen vorbereitet, die einen ähnlichen Umfang und ein objektorientiertes Prozessmodell gemeinsam haben, jedoch inhaltlich die Forschungsinteressen des Lehrstuhls widerspiegeln („forschungsorientiertes Lernen“). Erfolgreiche Teilnehmer beherrschen die Erstellung eines Pflichtenheftes incl. GUI-Beispielen und Use Cases (Testfallszenarien), sowie Unterscheidung nach Muss- und Wunschfunktionalität. Sie beherrschen objektorientierten Entwurf mit UML, insbesondere Klassendiagramm und Sequenzdiagramm; sowie die Darstellung der Systemarchitektur, der Methoden-spezifikationen und die Umsetzung der Testfallszenarien im Entwurfsdokument. Sie beherrschen Techniken der Modularisierung (Kohäsion, Kopplung, Lokalitätsprinzip etc) sowie den Ersatz von Fallunterscheidung durch dynamische Bindung. Sie können Techniken der informellen und evtl. formalen Spezifikation anwenden und beurteilen, und Entwurf/Klassendiagramm anhand softwaretechnischer Kriterien begründen.

Erfolgreiche Teilnehmer beherrschen die arbeitsteilige Implementierung des Entwurfs durch profunde Kenntnis einer objektorientierten Sprache (vgl. Veranstaltung „Programmieren“), der dazugehörigen (aufgabenspezifischen) Werkzeuge und Bibliotheken, und durch integrierte Techniken zur Qualitätssicherung. Sie können ihr System mittels Komponententest (zB Junit), Überdeckungstests (zB JCov), Integrationstests und evtl. formalen Verifikation kritischer Komponenten validieren. Sie können Systemanforderungen bewerten und ggf. den Entwurf nachträglich anpassen. Sie kennen ggf. agile Techniken zur Implementierung (zB Pair Programming).Sie stellen Änderungen an Pflichtenheft und Entwurf im Implementierungsdokument dar, und bewerten die Systemqualität anhand von Statistiken (u.a. Testfall-Überdeckungsmaße) und Analysen gefundener Fehler im Qualitätssicherungsdokument.

Die Teilnehmer präsentieren zum Schluss ihr Projekt so, dass sowohl ein einprägsamer Gesamteindruck des erstellten Systems entsteht, als auch softwaretechnische Details nebst Erfahrungen der Teamarbeit sichtbar werden.