Software Engineering

Prof. Dr. M. Hastenteufel

Kurzinhalt

Vorlesung:
Die Digitalisierung schreitet in allen Bereichen unseres Lebens voran und immer mehr Funktionalität in unserem Alltag wird von softwareintensiven Systemen erbracht. Neben der eigentlichen Programmierung, dem Kern der Wertschöpfung, gehören bei der Entwicklung von größeren Softwaresystemen aber weitere Dinge wie Anforderungsanalysen, Entwurfsmethoden und Maßnahmen zur Qualitätssicherung. Kurz gefasst behandelt die Vorlesung Software Engineering alle über die Programmierung hinausgehenden Aspekte der Software-Entwicklung.

Die Vorlesung ist in drei Vorlesungsteile und einem Projekt gegliedert:

Teil 1: Anforderungsanalyse und Spezifikation
> Modellierung mit UML: Usecase-Diagramme, Aktivitätsdiagramme, Zustandsdiagramme
> Erfassung von Stakeholderanforderungen und Ableitung von Softwareanforderungen
> Unterschied zwischen Problem- und Lösungsbereich
> Strukturierte Dokumentation von Stakeholder- und Softwareanforderungen
> Definition von User Interfaces, Usability Heuristiken

Teil 2: Software-Entwurf
> Software-Entwurfsprinzipien, SOLID
> ausgewählte Design Patterns, z.B. Adapter, Fabrik, Strategy

Teil 3: Software-Qualitätssicherung
> Qualitätsmerkmale von Software
> konstruktive vs. analytische Software-Qualitätssicherung
> Whitebox vs. Blackboxtests
> Unittests und Bestimmung der Code-Coverage (Line, Branch, Path)
> Statische Codeanalyse (zyklomatische Komplexität nach McCabe)
> Spezifikation und Dokumentation von Software-Systemtests
> Software-Prozesse: V-Modell und Scrum

Labor:
> Durch Bearbeitung eines überschaubaren Projekts im Team erfahren die Studierende die erlernte Theorie in der Praxis.