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)

Vergangene Veranstaltungen

Termine SoSe21

Zur Veranstaltung im Vorlesungsverzeichnis

Vorlesung: wöchentlich donnerstags von 8:15 bis 9:45 Uhr (außer an den zwei Feiertagen am 13.5. und 3.6.). Die erste Vorlesung ist am 22.4.

Übung: wöchentlich mittwochs von 8:15 bis 9:45 Uhr. Die erste Übung ist am 05.05.

Die Vorlesung findet synchron online in einem Zoom-Meeting statt. Der Raum ist im Moodle-Kurs verlinkt. Außerdem wird es auch alte Aufzeichnungen der Veranstaltung geben. Die Aufzeichnung ist für alle gedacht, die Terminkonflikte haben oder auf Grund mangelnder Infrastruktur (z.B. instabile oder unzureichende Internetverbindung) nicht teilnehmen können.