Einführung und Überblick Christian Kästner, Marko Rosenmüller, Norbert Siegmund, Gunter Saake
Agenda Überblick Softwareproduktlinien Organisatorisches Was sind Produktlinien? Entwicklung von Softwareproduktlinien Organisatorisches Anforderungen Termine Themen
Zwei Entwicklungen... Moderne Anwendungssoftwaresysteme Eier-legende Wollmilchsäu Bsp.: Windows Vista, Open Office, Oracle, SAP myERP, iTunes Nicht so bei eingebetteten Systemen Maßgeschneiderte Lösungen Bsp.: PDA, Handy, Sensoren, Toaster, Mikrowelle, Fernseher, Wetterstation, Taschenrechner, Chipkarten, Bordcomputer, Router, Ubiquitious Computing Vista kommt auf DVD braucht mehrere GB fuer installation SAP myERP braucht 18h fuer einfache Installation iTunes spielt nicht nur mp3s, Bibliothek, Shop integriert, Fernsehen, Musikverteilen, CDs brennen und rippen uvm. Wer hat schonmal einen Serienbrief geschrieben? Welche Hardware braucht man heute um einen Brief mit Word auf Vista zu schreiben? Hardwareanforderung SAP, Oracle (32gb ram, 4-16 prozessoren, ...) Selbst SAP zielt auf Massengeschaeft, moeglichst viele Betriebe abdecken koennen. Grosse Software die man anschliessend auf die Ansprueche konfigurieren kann Selbst Linux hat noch fast homogene Vorraussetztungen, unterstuetzung nur von PC Architekturen und wenigen anderen...
Softwareproduktlinien Techniken für die Entwicklung maßgeschneiderte Software, die genau die benötigte Funktionalität enthält Varianten für verschiedene Anwendungsfälle Neue Varianten können leicht hinzugefügt werden, schnelle Entwicklung, Wiederverwendung bewährter Funktionalität Kunden-individuelle Fertigung, Spezialisierung Anpassung an verfügbare Ressourcen Software-Produktlinien: Konfiguration durch Auswahl von Features (deutsch: Merkmale)
Auto-Produktlinie
Schuh-Produktlinie
PC-Produktlinie
Features in MS Office
Softwareproduktlinien Eine Menge von Programmvarianten (Software- Produkten), ...die auf ein gemeinsames Marktsegment (Domäne) zugeschnitten sind ...mit dem Ziel der Wiederverwendung von gemeinsamen Software-Artefakten z. B. Tetris Produktlinie 2D / 3D Unterstützte Hardware (PC, Handys, etc.) Multiplayer
Domäne Die Programme einer Produktlinie sind zugeschnitten auf ein Anwendungsgebiet Dieses Anwendungsgebiet wird als Domäne bezeichnet Beispiele: Datenbanken Eingebettete Systeme (z.B. Automobilbau) Lagerverwaltung Netzwerkkommunikation (Netzwerkstack) Fuers naechste Jahr: domaene und anwendungsgebiet erklaeren sich gegenseitig. Horizontal vs. Vertikal ist voellig unwichtig für die vorlesung.
Features (deutsch Merkmale) “first-class domain abstractions” … repräsentieren Anforderungen, Gemeinsamkeiten bzw. Unterschiede von Programmvarianten … sind Mittel zur Kommunikation zwischen Stakeholdern … dienen zur Spezifikation von Varianten Feature-Auswahl als Eingabe für die Programmgenerierung
Features – Beispiele Computerspiele: Ein- / Mehrspielermodus, Netzwerkmodus, Grafik-Details, Physik Engine PIM: Mail Unterstützung, Adressverwaltung, Kalender Funktion, Geburtstage, Notizen, Aufgaben Allgemein: Unterstützte Betriebssysteme (Windows, Linux, etc.), unterstützte Hardware (PC, Spielekonsole, Handy, eingebettetes System)
Entwicklung einer Produktlinie Entwicklung einer Programmfamilie statt einzelner Anwendung Programmfamilie erfüllt Anforderungen einer ganzen Domäne Abweichung vom klassischen Entwicklungsprozess und Lebenszyklus Unterscheidung in Domain Engineering Application Engineering
Application and Domain Engineering Domain design und Design-analysis spielten bei uns relativ wenig eine rolle, da wir uns auf features beschraenken.
Application and Domain Engineering Domain design und Design-analysis spielten bei uns relativ wenig eine rolle, da wir uns auf features beschraenken.
Feature-Modellierung Darstellung der Features einer Domäne Zur Visualisierung und Kommunikation Ein Feature-Modell beschreibt die elementaren Abstraktionen einer Domäne und deren Beziehungen die Menge der Programme einer Produktlinie Ein Feature-Diagramm visualisiert Features und deren Beziehungen
Beispiel: Graph-Bibliothek Bibliothek von Graph-Datenstrukturen und – Algorithmen Gewichtete/ungewichtete Kanten Gerichtete/ungerichtete Kanten Gefärbte Knoten Algorithmen: kürzester Pfad, Minimale Spannbäume, Transitive Hülle, …
Graph-Feature-Modell
Entwurf und Implementierung von Features Nach der Feature-Modellierung folgt der Entwurf und die Implementierung... Feature-Modell Wiederverwendbare Implementierungs- artefakte Domain Eng. Application Eng. Feature-Auswahl Generator Fertiges Program
Entwurf und Implementierung von Features Nach der Feature-Modellierung folgt der Entwurf und die Implementierung... Feature-Modell Wiederverwendbare Implementierungs- artefakte Domain Eng. Application Eng. Feature-Auswahl Generator Fertiges Program
SPL Implementierung Verschiedene Wege SPLs zu implementieren Beispiele: Komponenten Frameworks/Plugins Präprozessoren (z.B. C/C++ #ifdef) Feature-Orientierte Programmierung (Kollaborationen, Mixins) Aspekte-Orientierte Programmierung
Agenda Überblick Softwareproduktlinien Organisatorisches Was sind Produktlinien? Entwicklung von Softwareproduktlinien Organisatorisches Anforderungen Termine Themen
Vorträge / Ausarbeitungen 20 min Vortrag (siehe Infos auf Webseite) 10 min Diskussion Ausarbeitungen 3-6 Seiten (Format siehe Webseite) Inhalte: Motivation / Einleitung in das Thema Analyse / Aufarbeitung des Themas Je nach Themengebiet: Vor- / Nachteile, offene Fragen, Vergleich analysierter Ansätze Zusammenfassung / Schlussfolgerung
Bewertung Anmeldung heute, Abmeldung bis max. 2 Wochen später Vortrag Gewichtung 50 % Ausgabe von Bewertungsbögen Ausarbeitung
Presentation Know your audience Talk to the audience Talk loud and slow Don’t hide Eye contact Don’t read
Structure Introduce yourself (and your background/affiliation if necessary) State target/aim of presentation early Motivate your work, why should I listen Cohesion! Summarize main points, take-away message Emphasize conclusion/consequences References if used in the slides
Technical Hints 20 min, about 7 to 15 slides Fontsize >= 18, sans-serife fonts Name, title and affiliation on every slide Slides number on every slide At most one topic per slide Visualization, colors where necessary Avoid overfull slides (> 7 objects or > 36 words) Avoid writing full sencences, instead summarize the content using only headwords.
Termine 05.11.2008 Details zur Ausarbeitung 19.11.2008 bis 07.01.2009 Je 2 - 3 Vorträge + Diskussion Genaue Termine siehe Webseite Abgabe der Ausarbeitungen max. 4 Wochen nach Präsentation Mails an nsiegmun@ovgu.de UND rosenmue@ovgu.de
1 Überblick SPL Engineering Überblick nach SEI Core assets Produktentwicklung Etc. Einstiegspunkte http://www.sei.cmu.edu/productlines/index.html Buch: Clements & Northrop (Part I)
2 Requirementsengineering / Domänenanalyse Methoden zur Analyse von Gemeinsamkeiten / Unterschiede von Anforderungen innerhalb einer Domäne Einstiegspunkte Buch: Clements & Northrop (4.6) Buch: Pohl et al. (Kap. 10)
3 Domänenmodellierung Überblick zu existierenden Featuremodellen Einstiegspunkte Buch: Czarnecki & Eisenecker Kang et al.: Feature-Oriented Domain Analysis (FODA) Feasibility Study, 1990
4 Beispiele Softwareproduktlinien Domänenalyse und Featuremodellierung an konkreten Domänen Braucht man SPLs in dieser Domäne? Mehrere Beispiele je Domäne; Feature Diagramme Wie sehen diese aus bzw. wie könnten diese aussehen? Computerspiele Betriebssysteme Datenbanken Eingebettete Systeme im Automobil Handy Software Eigene Vorschläge
5 Metriken in SPLs Bewertung von SPLs Einstiegspunkte z.B. bzgl. Komplexität Einstiegspunkte Lopez-Herrejon & Trujillo: How Complex is my Product Line? The case for Variation Point Metrics, VAMOS 2008
6 Implementierung von SPLs 2 Studenten (Aufteilung der Themen) Themenauswahl: Frameworks, Komponenten, Präprozessoren (z.B. C/C++ Präproz.) Programmgeneratoren Einstiegspunkte Buch: Czarnecki & Eisenecker
7 Produktkonfiguration Konfigurationsprozess Staged Configuration Einstiegspunkte Buch: Czarnecki & Eisenecker Czarnecki et al.: Staged Configuration Using Feature Models, SPLC 2004
8 Visualisierung im Konfigurationsprozess Werkzeuge zur Konfiguration und deren Methoden Visualisierung Einstiegspunkte VISPLE Workshop 2007, 2008: http://www.lero.ie/visple2007/, http://www.lero.ie/visple2008/
9 Testen von SPLs Domänentests Anwendungstests Einstiegspunkte Buch: Pohl et al. (Kap. 13, 18) Intl. Workshop on Software Product Line Testing http://www.biglever.com/split2008/index.html
10 Organisatorische Aspekte Team Struktur Prozesse Einstiegspunkte Buch: Clements & Northrop (6) Buch: Pohl et al. (19)
11 Wirtschaftliche Aspekte von SPLs SPL pricing Kosten (Entwicklung, Softwaretests, etc.) Risiken Einstiegspunkte Buch: Pohl et al. (Kap. 20) Buch: Clements & Northrop (6)
12 SPL Fallstudien Überblick zu SPL Fallstudien Ergebnisse, Erfahrungen, Probleme Einstiegspunkte http://www.sei.cmu.edu/productlines/spl_case_studie s.html Buch: Pohl et al. (Kap. 21) Buch: Clements & Northrop (Part III)
13 Open Source SPLs Analyse existierender SPLs Verwendete Implementierungstechniken Domänen Etc. Einstiegspunkte Dissertation Sven Apel: http://www.infosun.fim.uni- passau.de/cl/publications/docs/Dissertation.pdf
14 SPL Adoption Aspekte zur Einführung von SPLs in Unternehmen Techn. Aspekte Wirtschaftl. Aspekte Organisatorische Aspekte Einstiegspunkte Buch: Pohl et al. (Kap. 20) Clements & Krueger: Point/Counterpoint: Being Proactive Pays Off/Eliminating the Adoption Barrier. IEEE Software, 2002
15 Domänenspezifische Sprachen Übersicht Verwendung im Kontext von SPLs Einstiegspunkte Buch: Czarnecki & Eisenecker
Literatur Czarnecki & Eisenecker: Generative Programming, 2000, Addison-Wesley Clements & Northrop: Software Product Lines: Practices and Patterns, 2002, Addison-Wesley Pohl et al.: Software Product Line Engineering, 2005, Springer (Kopien heute / morgen Vormittag)
Themen 1 Überblick SPL Engineering 2 Requirementsengineering / Domänenanalyse 3 Domänenmodellierung 4 Beispiele Softwareproduktlinien 5 Metriken in SPLs 6 Implementierung von SPLs (1-2 Stud.) 7 Produktkonfiguration 8 Visualisierung im Konfigurationsprozess 9 Testen von SPLs 10 Organisatorische Aspekte 11 Wirtschaftliche Aspekte von SPLs 12 SPL Adoption 13 Domänenspezifische Sprachen 14 SPL Fallstudien 15 Open Source SPLs
Themen 4 Beispiele Softwareproduktlinien Computerspiele Betriebssysteme Datenbanken Eingebettete Systeme im Automobil Handy Software Eigene Vorschläge