Software-Produktlinien

Heutzutage muss Software oft auf vielen Plattformen verfügbar sein und an die vielen verschiedenen Bedürfnisse von Nutzern und Kunden anpassbar sein. Sei es bei der Konfiguration des neuen Autos, eures Betriebssystems oder dem Installieren von Mods für Minecraft: Überall muss die Software flexibel und beliebig gestaltbar sein. Dabei passiert es schnell, dass es so viele Konfigurationsoptionen gibt, dass es eine unterschiedliche Softwarevariante für jeden Menschen der Erde geben kann! In unserer Vorlesung zeigen wir euch unter anderem, wie man die Konfigurierbarkeit solcher Systeme modellieren kann (z.B. Abhängigkeiten), welche Techniken es gibt Software erweiterbar und konfigurierbar zu schreiben, und mit welchen Strategien man trotz der exponentiellen Vielzahl an Varianten noch sinnvoll testen kann.

Voraussetzungen

Die Vorlesung richtet sich in erster Linie an Studierende in Master Informatik, Medieninformatik und Software Engineering. Da innerhalb der Vorlesung Programmieraufgaben (in Java) als Studienleistung erbracht werden müssen, sind gute Programmierkenntnisse notwendig und werden vorausgesetzt.

Inhalte

  • Einführung in die Problematik maßgeschneiderter Systeme
  • Modellierung und Implementierung von Software-Produktlinien
  • Einführung in Grundkonzepte (u.a. Separation of Concerns, Information Hiding, Modularisierung, Strukturierte Programmierung und Entwurf)
  • Überblick über erweiterte Programmierkonzepte, unter anderem:
    • Komponenten
    • Design Pattern 
    • Meta-Objekt-Protokolle
    • Präprozessorbasierte Variabilität
    • Aspekt-orientierte Programmierung
    • Kollaborationen und Feature-orientierte Programmierung
    • Feature-Interaktionen, Testen, Analyse

Lernziele

  • Verständnis von Grenzen traditioneller Programmierparadigmen bzgl. der Entwicklung von Informationssystemen
  • Übersicht über verschiedene Möglichkeiten zur Implementierung von Softwareproduktlinien
  • Kenntnisse über moderne, erweiterte Programmierparadigmen mit Fokus auf die Erstellung maßgeschneiderter Systeme
  • Befähigung zur Bewertung, Auswahl und Anwendung erweiterter Programmiertechniken

Literatur

Einordnung in Studiengänge

Master
Studiengang FSPO(s) Einordnung
Informatik 2014, 2017

Wahlpflicht: Praktische und Angewandte Informatik

Wahlpflicht: Software-Engineering und Compilerbau

Medieninformatik 2014, 2017

Wahlpflicht: Praktische und Angewandte Informatik

Wahlpflicht: Software-Engineering und Compilerbau

Software Engineering 2014, 2017

Wahlpflicht: Software Engineering

Wahlpflicht: Advanced Software Engineering

(Angaben ohne Gewähr)

Termine und Format

Zur Veranstaltung im Vorlesungsverzeichnis

Vorlesung: 21.04. - 07.07., wöchentlich, Donnerstag, 12:30 - 14 Uhr, Raum O27 / 123; sowie einmalig am 19.04, 10:15 - 11:45 Uhr in O28 / H21

Übung: 26.04. - 12.07., wöchentlich, Dienstag, 10:15 - 11:45 Uhr, Raum O28 / H21

Die Veranstaltung ist im Kombi-Format: Vorlesung und Übung finden in Präsenz statt, aber wir stellen alte Vorlesungs-Aufzeichnungen zur Verfügung (in OpenCast im Moodle) für all jene, die nicht vor Ort erscheinen können. Die Übung wird nicht aufgezeichnet. Wer die alten Vorlesungs-Aufzeichnungen schaut, sollte aber mit den aktuellen Folien arbeiten, die es immer vor der Vorlesung im Moodle zu finden gibt.