Softwareproduktlinien – Konzepte und Implementierung
Organisatorisches
Dozent: Dr. Christian Kästner
Sprache: deutsch
SWS: 2 V, 2 Ü; 6 Credit Points
Ort/Zeit: Montag 14:15 - 15:45, SR V Seminarraum
05D09
Übung: Montag 16:15 - 17:45, ab 2.5, SR IV
(Vorlesungs- und Uebungstermine koennen bei Bedarf getauscht werden)
Inhalt
Variabilität und Wiederverwendung wird zunehmend wichtiger bei der Softwareentwicklung. Softwareproduktlinien sind ein Ansatz um eine ganze Familie von ähnlichen Programmen für eine Domäne zu erstellen. Dabei können aus einer gemeinsamen Implementierung verschiedene maßgeschneiderte Programme generiert werden.
Stichworte:
Variabilitaet, Produktlinien, Features, Feature-Orientierte Programmierung, Aspekt-orientierte Programmierung, Praeprozessoren, Versionsverwaltung, Komponenten, Frameworks, Feature-Modelle, Domain Engineering, Refactoring, Feature Interaktionen
Inhalte der Vorlesung:
• Einführung in die Problematik maßgeschneiderter Software und
Softwareproduktlinien
• Konzeption, Analyse und Modellierung von Variabilität
• Überblick über Implementierungskonzepte für variable und
wiederverwendbare Software u.a. Komponenten, Design Pattern, Bedingte
Kompilierung, Aspekt-orientierte und Feature-orientierte Programmierung
und generative Programmierung.
• Vertiefung von Grundkonzepten (u.a. Separation of Concerns,
Information Hiding, Modularisierung, Strukturierte Programmierung und
Entwurf)
Qualifikationsziel:
Nach der Beendigung dieser Lehrveranstaltung werden Studierende
• Konzepte von Softwareproduktlinien kennen und anwenden können
• den Nutzen und die Komplexität von maßgeschneiderter Software
verstehen und bewerten können
• befähigt sein zur Bewertung, Auswahl und Anwendung verschiedener
Implementierungsstrategien
Lehrformen
Vorlesung und vorlesungsbegleitende Übung mit Fragenkatalogen einschließlich einer Projektarbeit zu einem ausgewählten Thema der Vorlesung; selbständiges Bearbeiten der Übungsaufgaben und des ausgewählten Themas als Voraussetzung für die Prüfung. Die Projektarbeit kann in die Endnote mit einfliessen. Details werden in der ersten Vorlesung bekanntgegeben.
Voraussetzung
Erwartet werden Grundlagen der Softwaretechnik, Grundlagen der objekt-orientierten Programmierung und Modellierung, und etwas Programmiererfahrung mit Java oder C++.
Folien
- Einfuehrung (13.4.2011; Extras: Massgeschneiderte Datenhaltung)
- Entwicklungsprozess und Variabilitaetsmodellierung (Achtung Terminverlegung: 18.4.2011; 14:15!)
- Laufzeit-Variabilitaet (2.5.2011; 14:15)
- Versionsverwaltungs- und Buildsysteme (2/9.5.2011)
- Praeprozessoren (9.5.2011)
- Komponenten und Frameworks (16/23.5.2011)
- Feature-Oriented Programming (23.5.2011)
- Aspect-Oriented Programming (30.5.2011)
- Features vs. Aspekte (6.6.2011)
- Featureinteraktionen (6/20.6.2011)
- Virtuelle Trennung von Belangen (20.6.2011)
- Gastvorlesung " Delta-Oriented Programming" Ina Schaefer (27.6.2011)
- Fehlererkennung/Analyse fuer Produktlinien (4.7.2011)
- Ausblick, Fragen
Uebungsaufgaben
- Uebung 1 (2.5.2011, 16:15)
- Am 9.5. keine Uebung; wird ggf. als als Vorlesungstermin genutzt
- Uebung 2 (16.5.2011)
- Uebung 3 (23.5.2011)
- Am 30.5 keine Uebung
- Uebung 4 (6.6.2011)
- Uebung 5 (20.6.2011)
- Uebung 6 (27.6.2011)
- Am 4.7 keine Uebung
Pruefungstermine
Bisher finden Pruefungen an folgenden Tagen statt: 27.7 und 4.8. Fuer andere Termine bitte anfragen.
Weitere Informationen
- FeatureIDE
- Videoerklaerung fuer FeatureIDE
- Basisimplementierung vom Chat Beispiel
- Framework-Beispiele
- Munge.java
- AHEAD Tutorial, Jak-Sprachbeschreibung
Zur Orientierung siehe fruehere Veranstaltungen dieser Reihe: 2009, 2008, 2007

Literatur
Kleine Auswahl moeglicher Literatur, genaueres in der Vorlesung:
- [2]
- Krzysztof Czarnecki and Ulrich Eisenecker. Generative
programming: methods, tools, and applications. ACM Press, New
York, NY, USA, 2000.
[ bib | http ] - [3]
- K. Kang et al. Feature-Oriented Domain Analysis (FODA)
Feasibility Study. Technical Report CMU/SEI-90-TR-21, Software
Engineering Institute, Pittsburgh, PA, USA, November 1990.
[ bib | .pdf ] - [4]
- Don Batory. Feature models, grammars, and propositional formulas.
In Proc. Int'l Software Product Line Conference (SPLC), pages
7-20, September 2005.
[ bib | .pdf ] - [5]
- David L. Parnas. On the criteria to be used in decomposing
systems into modules. Communications of the ACM,
15(12):1053-1058, 1972.
[ bib | http ] - [6]
- Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.
Design Patterns. Addison-Wesley Publishing Company, Inc.,
Reading, Massachusetts, 1994.
[ bib | http ] - [7]
- Don Batory, Jacob Neal Sarvela, and Axel Rauschmayer. Scaling
step-wise refinement. IEEE Transaction on Software
Engineering, 30(6):355-371, 2004.
[ bib | .pdf ] - [8]
- Ramnivas Laddad. AspectJ in Action: Practical Aspect-Oriented
Programming. Manning Publications, 2003.
[ bib] - [10]
- Sven Apel, Christian Kästner, Martin Kuhlemann, and Thomas Leich.
Pointcuts, Advice, Refinements, and Collaborations: Similarities,
Differences, and Synergies. Innovations in Systems and Software
Engineering (ISSE) - A NASA Journal, 3(3-4), 2007.
[ bib | http | .pdf ] - [11]
- Sven Apel, Christian Kästner, Martin Kuhlemann, and Thomas Leich.
Modularität von Softwarebausteinen: Aspekte versus Merkmale. iX
Magazin für Professionelle Informationstechnik, (10):116-122,
October 2006.
[ bib | http ]

