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
- Semesterapparat
- Feature-Oriented Software Product Lines - Concepts and Implementation
- Mastering Software Variability with FeatureIDE
- Software Product Line Engineering: Foundations, Principles and Techniques
- Software Product Lines: Practices and Patterns - P. Clements und L. Northrop; Addison- Wesley, 2002.
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
Prof. Dr.-Ing. Thomas Thüm, M.Sc. Paul Maximilian Bittner
alter Moodle-Kurs: moodle.uni-ulm.de/course/view.php
Zur Veranstaltung im Vorlesungsverzeichnis
Vorlesung: Donnerstag, 12:00-14:00
Übung: Dienstag, 10:00-12:00
Einführung: Di., 18.04.2023, 10:00-12:00