Implementierungstechniken für 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 sowohl an Bachelor- (5CP) und Masterstudierende (6CP) an der FIN (Wahlpflichtfach in den Studiengängen INF, CV, WIF, INGIF und DE). Da innerhalb der Vorlesung Programmieraufgaben (in Java) für die Prüfungszulassung erbracht werden müssen, setzen wir gute Programmierkenntnisse voraus. Wir empfehlen euch außerdem den vorherigen Besuch der Lehrveranstaltungen Software Engineering und Logik.

Inhalte

  • Einführung in maßgeschneiderte Systeme
  • Modellierung und Implementierung von Variabilität
  • Separation of Concerns, Information Hiding, Modularisierung
  • Übersicht über verschiedene Möglichkeiten zur Implementierung von Software-Produktlinien, unter anderem:
    • Komponenten, Frameworks, Design Patterns
    • Präprozessoren, Build-Systeme
    • Aspektorientierte und Feature-orientierte Programmierung
  • Feature-Interaktionen, Testen, Analysen mit (#)SAT-Solvern
  • Evolution, Wartung

Lernziele

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

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

  • Vorlesung und Übung (2+2 SWS, 5 oder 6 CP je nach Studiengang)
  • Prüfungszulassung mit Votierungssystem (siehe Moodle)
    • theoretische Aufgaben (für Masterstudierende gibt es zusätzliche Aufgaben)
    • praktische Aufgaben (diese dürfen in Teams bearbeitet werden)
  • Die Prüfung ist i.d.R. mündlich, unbenotete Leistung (Schein) im Bachelor möglich
  • Details zu Terminen in der rechten Randspalte

Für praktisch Veranlagte bieten wir begleitend zu dieser Veranstaltung im Sommersemester ein Softwareprojekt an, in dem ihr das Framework FeatureIDE weiterentwickelt und dabei die Grundlagen der Plug-In-Entwicklung in Eclipse erlernt.

Letzte Änderung: 13.09.2022 - Ansprechpartner:

Sie können eine Nachricht versenden an: M.Sc. Elias Kuiter
Sicherheitsabfrage:
Captcha
 
Lösung: