Implementierungstechniken für Software-Produktlinien

Moderne Software muss häufig auf vielen Plattformen verfügbar sein und an viele verschiedene Bedürfnisse von Nutzern und Kunden angepasst sein. Dies trifft auf Systemsoftware (z.B. Betriebssysteme), Anwendungssoftware (z.B. Textverarbeitung und Spiele) und auf komplexe Cyber-Physische Systeme (z.B. Automobile) zu. Die dadurch entstehende Konfigurationsvielfalt bringt Herausforderungen für die Entwicklung, das Testen und die Wartung solcher Systeme. Die Vorlesung Software-Produktlinien vermittelt unter anderem, wie die Konfigurierbarkeit von Systemen modelliert werden kann, welche Implementierungstechniken es erlauben erweiterbare und konfigurierbare Software zu entwickeln, und mit welchen Strategien trotz einer exponentiellen Anzahl an Varianten noch sinnvoll getestet werden kann.

Inhalte

Die Veranstaltung umfasst folgende Inhalte:

  • Einführung zu Software-Variabilität und inhärenter Herausforderungen
  • Modellierung und Analyse der angestrebten Variabilität
  • Implementierung von Variabilität zur Laufzeit (z.B. Konfigurationsoptionen) und zur Compilezeit (z.B. Clone-and-Own)
  • Implementierung von Software-Produktlinien:
    • Implementierung von Features mit Hilfe von Conditional Compilation (z.B. Präprozessoren und Build-Systemen)
    • Modulare Implementierung von Features (z.B. Komponenten, Services und Plug-Ins)
    • Grenzen der Objektorientierung und Erweiterungen der Objektorientierung (z.B. Feature-Module, Aspekte)
  • Entwurfsmuster für Software-Variabilität
  • Vorgehensmodelle für den Einsatz und zur Entwicklung von Software-Produktlinien
  • Probleme und der Umgang mit Feature-Interaktionen
  • Methoden zur statischen und dynamischen Qualitätssicherung von Software-Produktlinien
  • Evolution und Wartung von Software-Produktlinien
  • Aktuelle Themen aus Forschung und Praxis

Lernergebnisse und Kompetenzen

Studierende sind in der Lage ...

  • Grenzen traditioneller Programmiertechniken bzgl. der Entwicklung von variabler Software zu benennen.
  • Modellierung, Analyse und Konfiguration von Variabilität in Software-Produktlinien zu beschreiben.
  • verschiedene Implementierungstechniken für die Entwicklung von Software-Produktlinien anzuwenden.
  • die Eignung von vorgestellten Programmiertechniken für unterschiedliche Entwicklungsszenarien zu bewerten.
  • Techniken zur Qualitätssicherung für Software-Produktlinien und damit einhergehenden Herausforderungen zu erklären.

Methodische Umsetzung

In der Vorlesung wird ein theoretischer Überblick über Techniken zur Modellierung, Implementierung und Analyse von konfigurierbaren Systemen vermittelt. In der Übung wird dieses Wissen durch Anwendungsaufgaben weiter vertieft und das praktische Verständnis durch die Entwicklung eigener Software-Produktlinien unter Zuhilfenahme unterschiedlicher Programmiertechniken gefördert. Die zu entwickelnden Software-Produktlinien können dabei zum Teil individuell gewählt werden, so dass Studierende die Möglichkeit haben in einer für sie interessanten Domäne Programmiererfahrung zu sammeln.

Empfohlene Vorkenntnisse

Grundlegende Kenntnisse in Logik (insb. Aussagenlogik) und Softwaretechnik (insb. Vorgehensmodelle, UML Klassendiagramme, Entwurfsmuster) sowie Programmiererfahrung (z.B. in Java) werden vorausgesetzt.

Literatur

Zum Nachlesen und Vertiefen empfehlen wir euch die folgenden (englischsprachigen) Bücher. Downloads sind verfügbar im Uninetz oder nach Anmeldung mit URZ-Account.

Organisatorisches

Die Vorlesung richtet sic an Bachelor- (5CP) und Masterstudierende (6CP) an der FIN (Wahlpflichtfach in den Studiengängen INF, CV, WIF, INGIF und DE).

  • Vorlesung und Übung (2+2 SWS, 5 oder 6 CP je nach Studiengang)
  • Prüfungszulassung mit Votierungssystem (siehe Moodle, für Masterstudierende gibt es zusätzliche Aufgaben)
  • Die Prüfung ist mündlich, unbenotete Leistung (Schein) im Bachelor möglich
  • Termine und Material in der rechten Randspalte

Letzte Änderung: 15.10.2024 - Ansprechpartner: