Software Product Lines

Ähnliche Dokumente
Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme

Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme

State-of-the-Art in Software Product Line Testing and Lessons learned

Featuremodellbasiertes und kombinatorisches Testen von Software-Produktlinien

ES-Projektseminar (SS 2012)

ES-Projektseminar (SS 2011)

Projektseminar Echtzeitsysteme 2011

ES-Projektseminar (SS 2012)

Projektseminar Modellbasierte Softwareentwicklung SoSe2014

Versionsverwaltung. Seminar Softwareentwicklung in der Wissenschaft Robert Wiesner

ES-Projektseminar (SS 2010)

Software-Engineering Einführung

Tool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" Sebastian Meyer und Kai Stapel

Einführung in die Softwaretechnik 10. Konfigurationsmanagement

Continuous Everything

Software Product Lines

Comparing Software Factories and Software Product Lines

Entwicklungswerkzeuge

So#ware Engineering Konfigura0onsmanagement

Softwareproduktlinien Teil 12: Analyse von Produktlinien. Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg)

Software-Engineering Einführung

Software(technik)praktikum: SVN-Tutorial

Software Product Lines

Apache - Maven. Java-Erstellung auf Plugin-Basis. Martin Hoffmann

Einführung in Subversion

Testen von sicherheitskritischer Embedded Software mit frei verfügbaren Tools. - ein Erfahrungsbericht

Professionelles Deployment

Application Requirements Engineering

Was ist Wartung und welche vier Arten der Wartung unterscheidet die Norm ISO/IEC 12207? Wie lautet die Regel von Boehm? (ein Beispiel ausrechnen)

Versionsverwaltung mit git

Versionskontrolle: Subversion und Git

Start Up Factory. Pilotvorhaben zur Gründerförderung. Prof.Dr.-Ing. Ralf Steinmetz

Software Engineering. 13. Configuration Management. Franz-Josef Elmer, Universität Basel, HS 2012

Software build (-erstellung), deployment(-verteilung) und execution(-ausführung)

Revisionskontrollsystem GIT

Artem Eger. Build-Systeme in java Maven & ANT

Iterativ. Inkrementell

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Git in großen Projekten

Abschlussbericht. Erstellung eines automatisierten Build-Prozesses für Eclipse-RCP- Anwendungen am Fallbeispiel Control System Studio.

C/C++-Programmierung


IT-Projekt-Management

Konfigurationsmanagement

Versionsverwaltung mit Subversion

Prof. Dr. Marko Boger. Prof. Dr. Christian Johner. Versionsmanagement

Versionierung und Bugtracking mit Git(Hub)

Software Engineering. 14. Build und Deployment. Franz-Josef Elmer, Universität Basel, WS 2006/07

Von Continuous Integration zu Continuous Deployment

Software Product Lines

Welche Testautomatisierungen sind möglich und sinnvoll?

Moodle aktuell halten mit Git

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Boost your Forms Development with GIT and Forms API Master Presentation title

Semesterprojekt Entwicklung einer Suchmaschine für Alternativmethoden zu Tierversuchen. Versionierung und Bugtracking mit GitHub

Dominik Helleberg inovex GmbH. Auf Augenhöhe mit Android Studio und Gradle

Kennenlernen. Tutorium 7 iloveswt.de Fabian I. Miltenberger INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD)

Linux Prinzipien und Programmierung

Enterprise PHP Tools

Thomas Rau (mit Material von Peter Brichzin) Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Projektseminar Softwaresysteme

MDRE die nächste Generation des Requirements Engineerings

Framework zur Unterstützung von Unit-Tests

Einführung in Versions- und Konfigurationsmanagementsysteme

Continuous Integration mit Jenkins

Einführung in Subversion

Entwicklungsmethoden

Transkript:

Software Product Lines Concepts, Analysis and Implementation Programmier-Paradigmen für Software-Produktlinien (3/3) ES Real-Time Systems Lab Prof. Dr. rer. nat. Andy Schürr Dept. of Electrical Engineering and Information Technology Dept. of Computer Science (adjunct Professor) Dr. rer. nat. Malte Lochau malte.lochau@es.tu-darmstadt.de www.es.tu-darmstadt.de author(s) of these slides 2008 including research results of the research network ES and TU Darmstadt otherwise as specified at the respective slide 24.06.2014

Inhalt I. Einführung Motivation und Grundlagen Feature-orientierte Produktlinien II. Produktlinien-Engineering Feature-Modelle und Produktkonfiguration Variabilitätsmodellierung im Lösungsraum Programmierparadigmen für Produktlinien III. Produktlinien-Analyse Feature-Interaktion Testen von Produktlinien Verifikation von Produktlinien Präprozessoren, Komponenten/Frameworks FOP, AOP, DOP Build-Systeme IV. Fallbeispiele und aktuelle Forschungsthemen 2 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Application Eng. Domain Eng. Software-Product-Line Engineering Feature-Modell Wiederverwendbare Implementierungsartefakte Feature-Auswahl Generator Fertiges Program 3 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Variabilität zur Compile-Zeit p1 Compile-Zeit.c Compiler.obj.obj.obj p2 pn p Feature-Parameter als Compiler-Parameter Konfiguration Nur der für die Programmvariante benötigte Quelltext wird übersetzt Quelltext wird vor der Übersetzung passend ausgewählt (CPP), zusammengebaut (FOP), Ziel: Konfigurationsspezifische, optimierte Programmvarianten 4 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation 4

Branching Versionsverwaltungssysteme Merging Revision t Versionierung von Quelltextdateien als Teil des Konfigurationsmanagements Archivierung alter Quelltextversionen mit Historie Zeitstempel und Benutzerkennung Änderungen werden als Delta gespeichert Prozess: Checkout Change Commit Update Change Commit - Beispielsysteme: CVS, SVN, Visual SourceSafe, Perforce, SCCS, Git, Mercurial. 5 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Beispiel: Versionierung der Graph-SPL Varianten Variante 3 ohne Gewichte und ohne Farben Schnellere Suche Variante 2 ohne Gewichte Basis-Variante (mit Farben und Gewichten) Versionen NullPointer- Exception abgefangen 6 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Verwaltung von SPL Artefakten Eine SPL umfasst sämtliche Feature-Artefakte als Ergebnis des Domain-Engineering: Java Code Dokumentation Modelle Build-Skripte: Ant / Makefile, Lizenzen Grammatiken Kompilierte Dateien HTML, JavaScript, CSS Testfälle => Zu beachten: Merging und Konfliktbehandlung von Binärdateien schwierig 7 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Versionen einer Produktlinie Artefakt-Revisionen V1.0 V1.1 V2.0 V3.0 Varianten Sensor-DB (Auto) Sensor-DB (Habitat Monitoring) Sensor-DB (Erdbeben) SmartCard-DB GPS-DB X X X X X X X X X X X X X X Version einer Produktlinie: aktuelle Version aller Artefakte Version einer Produktvariante: Version der verwendeten Artefakte zum Zeitpunkt der Produktgenerierung 8 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Application Eng. Domain Eng. Produktlinien mit Versionsverwaltung Entwicklung von Varianten in Branches Mergen von Änderungen zwischen Branches Mapping von Variante zu Branch Varianten-Liste Sensor-DB (Auto) Sensor-DB (Habitat Monitoring) Sensor-DB (Erdbeben) SmartCard-DB GPS-DB Versionsverwaltung mit Branches Sensor-DB (Auto) Sensor-DB (Habitat Monitoring) Sensor-DB (Erdbeben) SmartCard-DB GPS-DB Variante als Eingabe Varianten-Auswahl Checkout des passenden Branches Fertiges Program 9 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Diskussion: Produktlinien mit Versionsverwaltung Vorteile Etablierte, stabile Systeme Wohldefinierter Prozess Gute Werkzeugintegration Nachteile Vermischen von Revisionen und Varianten Bei Major Release möglicherweise Reimplementierung der minor Releases Entwicklung von Varianten, nicht Features: flexible Komposition von Feature-Artefakten nicht direkt unterstützt Keine strukturierte Wiederverwendung (meistens Copy & Edit) Hoher Wartungsaufwand ( manuelles Merging) 10 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Produktlinien mit Build-Systemen Build-Systeme Automatisierung des Build-Prozesses Kopiert Dateien, ruft Compiler auf, startet weitere Tools Basis-Projekt build.xml Mehrere Schritte mit Abhängigkeiten / Bedingungen Werkzeuge: make, ant, maven, Produktlinien mit Build-Systemen Pro Variante eine Konfigurationsdatei / ein Build-Skript src.java.java Variable Artefakte (Dateien) beim Übersetzen einbeziehen / ausschließen Basis-Dateien mit produktspezifischen Varianten überschreiben 11 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Beispiel: Graph-Bibliothek Basis- Implementierung src build.xml Graph.java class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; } void print() { a.print(); b.print(); } } Edge.java Variante mit Gewichten src build.xml Edge.java class Edge { Node a, b; Weight weight; Edge(Node _a, Node _b) { a = _a; b = _b; } void print() { a.print(); b.print(); weight.print(); } } 12 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Beispiel: Graph-Bibliothek Basis- Implementierung src build.xml Graph.java class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; } void print() { a.print(); b.print(); } } Edge.java Variante mit Gewichten src build.xml WEdge.java class WEdge extends Edge { Weight weight; void print() { super.print(); weight.print(); } } und alle new-aufrufe anpassen; ggf. Factory Pattern verwenden 13 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Application Eng. Domain Eng. Produktlinien mit Build-Systemen Feature-Modell Basis-Implementierung Sensor-DB (Auto) Sensor-DB (Habitat Monitoring) Sensor-DB (Erdbeben) SmartCard-DB GPS-DB Build Skript pro Variante + spezifische Dateien Standard Build (make, ant, ) Fertiges Program 14 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Diskussion: Produktlinien mit Build- Systemen Vorteile: Relativ einfacher Mechanismus Hohe Flexibilität beliebige Änderungen für Varianten Wenig Vorplanung notwendig Nachteile Entwicklung für jede Variante getrennt, ggf. hoher Aufwand Änderungen nur auf Dateiebene (überschreiben ganzer Dateien) Änderungen an der Basisimplementierung schwierig 15 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation

Referenzen M Staples, D Hill: Experiences adopting software product line development without a product line architecture. Proceedings APSEC, pp.176-183, 2004 (Artikel zu Erfahrungen in der Industrie beim Einsatz von Build-Systemen und Versionsverwaltung) 16 24.06.2014 Software Product Lines - Concepts, Analysis and Implementation