Beschreibung |
Softwareproduktlinien und konfigurierbare Softwaresysteme bilden eine Schlüsseltechnologie für die Massenproduktion individuell angepasster Software. Ziel ist es bei der Entwicklung maßgeschneiderter Software, die Codebasis weiterhin wartbar zu halten sowie gleichzeitig die Produktionskosten zu reduzieren. Die Veranstaltung vermittelt die wichtigsten Kenntnisse und Fähigkeiten, um dieses Ziel zu erreichen:
- Die Studierenden kennen die Vorteile und Nachteile des Produktlinienansatzes sowie klassischer und moderner Programmiermethoden wie z.B. Präprozessoren, Versionsverwaltungssysteme, Komponenten, Frameworks, Feature-Orientierung, Aspekt-Orientierung.
- Die Studierenden haben die Befähigung zur Bewertung, Auswahl und Anwendung moderner Programmierparadigmen, Techniken, Methoden und Werkzeuge erlangt, insbesondere in Hinblick auf die Entwicklung von Kompetenzen im Bereich der Softwareproduktlinien.
- Die Studierenden erwerben Urteilsvermögen über den Einsatz von Programmiermethoden für die Entwicklung von Softwareproduktlinien.
Folgender Inhalt wird bei der Lehrveranstaltung vermittelt:
- Einführung in die Problematik der Entwicklung komplexer, maßgeschneiderter Softwaresysteme am Beispiel von eingebetteten Datenbankmanagementsystemen
- Modellierung und Implementierung von Programmfamilien, Produktlinien und domänenspezifischen Generatoren
- Wiederholung von Grundkonzepten der Software-Technik (Kohäsion, Scattering und Tangling, Information Hiding, Modularisierung)
- Einführung in verschiedene klassische und moderne Sprachen und Werkzeuge zur Entwicklung von Softwareproduktlinien u.a. Präprozessoren, Frameworks, Komponenten, Feature-Module, Aspekte, Kollaborationen, Rollen, etc.
- Vergleich grundlegender Konzepte, Methoden, Techniken und Werkzeuge der vorgestellten Ansätze
- Kritische Diskussion von Vor- und Nachteilen der einzelnen Ansätze sowie ihrer Beziehung untereinander
- Weiterführende Themen: Nicht-funktionale Eigenschaften, Analyse von Produktlinien, Featureinteraktionen,
Aktuelle Forschungsergebnisse des Lehrstuhls werden in der Veranstaltung besprochen, angewendet und diskutiert |
engl. Beschreibung/ Kurzkommentar |
Software Product Line Engineering
Software product lines and configurable software systems are the main driving factor for mass customization, tailor-made products, and product diversity while keeping a maintainable code base and saving development time. The lecture will teach about central elements of product line modelling and development.
Students should understand the following techniques and theories:
- Configuration management and variability modeling
- Classic and modern programming techniques, such as preprocessors, version control systems, components, frameworks, aspect-oriented programming, and feature-oriented programming
- Feature interactions and virtual separation of concerns
Students should be able to apply the above theories and concepts to judge points in favour and against a certain technique depending on the application scenario at hand. Hence, the students will be able to decide which techniques, tools, and methods to use.
Students should master concepts and approaches such as
- The exponential complexity of variability spaces
- Modelling and implementation of program families, product lines, and domain specific generators
- Basic concepts of software engineering (e.g., cohesion, scattering, tangling, information hiding)
- Classic and modern concepts, such as preprocessors, plug-in systems, feature modules, collaborations, aspects, and roles
- Critical discussion about pros and cons of the above techniques and concepts
- Feature interactions, non-functional properties, product line analysis
Students will implement these concepts in Java.
Students should develop an understanding of the current state of research in software product lines. With appropriate supervision, students should be able to tackle new research problems, especially in the area of product line development and optimization. |
Literatur |
Script; Sven Apel, Don S. Batory, Christian Kästner, Gunter Saake: Feature-Oriented Software Product Lines - Concepts and Implementation. Springer 2013; Krysztof Czarnecki, Ulrich Eisenecker : Generative Programming. Methods, Tools and Applications. Addison Wesley 2000 |