Softwareproduktlinien Ain t Nobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Ähnliche Dokumente
Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Modellierung CORBA-basierter Anwendungssysteme mit der UML

Software-Engineering im Sommersemester 2014

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Motivation Grundlagen Technologien Manipulation Ecore Genmodell Demo Persistenz Notification Ausblick GMF Fazit / Quellen

Eclipse Modeling Framework Modellgetriebene Softwareentwicklung Prof. Andreas Schmidt

Software-Refactoring. 29. Mai 2013

Indigo vs. Juno. Was ist neu für Eclipse 4.x RCP Entwickler? Hauptseminar 2012

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

Codegenerierung mit Xtend. 21. Januar 2015

Comparing Software Factories and Software Product Lines

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2006

Formale Spezifikation mit Java Modeling Language

Einführung in die Modelltransformation mit Xtend

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric

Verteidigung Großer Beleg

Dynamisches EMF und Codegenerierung mit JET. 14. November 2012

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Objektorientierte Programmierung Studiengang Medieninformatik

Softwareproduktlinien Teil 12: Analyse von Produktlinien

Programmierwerkstatt. Objektorientierung und Korrektheit von Programmen

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Head First Design Patterns. FALLBEISPIEL: SimUDuck

Programmieren II. Exkurs: Apache Maven. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Feature Modelle. und ihre Anwendung. Feature Modelle und ihre Anwendungen. Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn

Integration von Java Legacy Code in die Fusion Middleware 11 mittels des SOA Suite Spring Components

Verbesserung der Architektur der DPP- Software Saros (Vortrag 2) Slawa Belousow Institut für Informatik FU Berlin

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Arten von Klassen-Beziehungen

Vorkurs Informatik WiSe 16/17

Informatik II Übung 05. Benjamin Hepp 3 April 2017

Refactoring Transformationen. Martin Freund Januar 2003 Seminar Refactoring in extreme Programming AG Kastens Universität Paderborn

Das Kommunikations-Problem Architekten, Entwickler und die Code-Basis Zusammenfassung

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2007

Softwaretechnik. Prof. Dr. Rainer Koschke. Sommersemester Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Feature-Komposition auf Bytecode-Ebene

Erstellung eines mockbasierten Testframeworks für Saros. Philipp Cordes Masterarbeit

Praxisbuch Objektorientierung

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

Software Entwicklung 1

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2006

Strategy & Decorator Pattern

Refactoring. Uschi Beck

ETL-Industrialisierung mit dem OWB Mapping Generator. Irina Gotlibovych Senior System Beraterin

Objektorientierte Programmierung Studiengang Medieninformatik

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

10. OLAPLINE-Anwendertreffen

Programmverstehen 3: Detailliertes Verständnis. Dr. Thorsten Arendt Marburg, 10. Dezember 2015

Aspektorientierte Programmierung mit.net

Datenstrukturen und Algorithmen

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

7. Zusammenfassung (1)

Automatisierter Java EE Entwicklungs-Lifecycle mit WebLogic Server 12c. Robin Müller-Bady Systemberater, Oracle Deutschland

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Programmieren in Java

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Vorkurs Informatik WiSe 17/18

Thema 3 Das UML- Metamodell

Vorlesung Programmieren

Model Driven Development im Überblick

Model Querys zur Überprüfung von sicherheitsrelevanten Eigenschaften

Vorkurs Informatik WiSe 15/16

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

Vorkurs Informatik WiSe 16/17

Automatisierte Architekturanalyse unter Einsatz von UML 2.0 Modellen

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

Kleine Refactoring-Muster

Einstieg in die Informatik mit Java

SensIDL Modellgetriebene Entwicklung von Sensorschnittstellen mit SensIDL

Javakurs für Anfänger

Modellgetriebene Softwareentwicklung. Gabriele Taentzer WS 2012/2013 Philipps-Universität Marburg

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Software Product Lines

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Code Beispiel: /* path element */ var el = rc.path("m l 0-50 l l 0-50 l l 0 50 l l 0 50 z");

Beispiel: die Klasse Brüche

Vorkurs Informatik WiSe 17/18

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Werkzeugunterstützung für UML Profiles. Verteidigung des Großen Belegs Andreas Pleuß

Visual Studio 2010 Jetzt auch für Architekten

Olaf Seng Thomas Genßler Benedikt Schulz. Forschungszentrum Informatik, Karlsruhe

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 11. Februar 2015

Liste MI / Liste I Programmieren in C++

SIMATIC PCS 7 V8.2 SIMIT V9. Clever kombiniert: Testen und Trainieren von Automatisierungsprojekten

Java und Eclipse Installation, erstes Beispielprogramm

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Universität Hamburg, Fachbereich Informatik Übungsblatt 11 zum Praktikum. E. Betke, N. Hübbe, M. Kuhn, J. Lüttgau, J. Squar im WiSe 2018/2019

ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Arten von Klassen-Beziehungen

Transkript:

Softwareproduktlinien Ain t Nobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016, 15.06.16

Agenda Kundenspezifische Anpassung von Produkten Konsolidierung von Produktkopien Konsolidierungsschritte Ansätze Live-Demo Zusammenfassung Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 2

Profil Stephan Seifermann Wissenschaftlicher Mitarbeiter Schwerpunkte Modellgetriebene Software-Entwicklung Software-Architekturen seifermann@fzi.de FZI Forschungszentrum Informatik Anwendungsforschung Informatik Forschungstransfer für KMUs Trainings/Schulungen Enge Partnerschaft mit KIT Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 3

E-Commerce Integration als Beispielprodukt Kunde Online-Shop Produktdatenbank Daten laden Suchen Enterprise Resource Planing (ERP) - Warenbestand - Preise - Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 4

Individualisierung durch Kopieren Kunde 2 PD2 & ERP2 Online-Shop Kunde 1 PD1 & ERP1 Produktdatenbank Daten laden Suchen Produktdatenbank Daten laden Online-Shop Suchen Zeitdruck Enterprise Resource Planing (ERP) - Warenbestand - Preise - Enterprise Resource Planing (ERP) - Warenbestand - Preise - Kunde 3 PD3 & ERP3 Online-Shop Produktdatenbank Daten laden Suchen Enterprise Resource Planing (ERP) - Warenbestand - Preise - Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 5

Kopieren von Produkten Unschön aber individuelle Kopien sind nicht immer vermeidbar Produktdatenbank Kunde 1 PD1 & ERP1 Daten laden Enterprise Resource Planing (ERP) - Warenbestand - Preise - Online-Shop Suchen Zeitdruck Produktdatenbank Kunde 2 PD2 & ERP2 Daten laden Enterprise Resource Planing (ERP) - Warenbestand - Preise - Kunde 3 PD3 & ERP3 Online-Shop Suchen Online-Shop Produktdatenbank Daten laden Suchen Enterprise Resource Planing (ERP) - Warenbestand - Preise - Typische Gründe Zeit- und Kosten Flexibilität Unbekannte Evolutionsszenarien Organisatorisches Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 6

Vor- und Nachteile durch Kopieren Vorteilhaft, wenn kundenspezifische Anpassungen schnell und kostengünstig vorgenommen werden müssen Nachteilig, wenn Wartungsaufwand mehrfach entsteht kundenspezifische Anpassungen zunehmen Anpassungen kombiniert werden sollen Synergieeffekte nicht ausgenutzt werden Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 7

Softwareproduktlinie Produktlinie Kern Feature Variabilitätsmanagement Erzeugung verschiedener Varianten Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 8

Wie komme ich zu einer Produktlinie? Reaktiv Produktlinie Feature Feature Proaktiv Extraktiv Kopie 1 Produktlinie Original Produktlinie Kopie 2 Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 9

Kopie 1 Original Produktlinie Kopie 2 PRODUKTLINIENKONSOLIDIERUNG Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 10

Schritte bei der Produktlinienkonsolidierung Kopie 1 Differenz - analyse 1 Variabilitäts - analyse 2 Original Kopie 2 Differenzen Beziehungen 5 Refactoring 4 0 Variabilitäts - design 3 Produktlinie Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 11

Kopie 1 Differenz - analyse 1 Original Kopie 2 Differenzen DIFFERENZANALYSE Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 12

Unterschiede Erkennen - Zielgerichtet : Method : VPM : Method : Statement : VariationPoint : Statement : Statement : VariationPoint : Statement : Statement : VariationPoint : Statement public String sqrt(string value1){ Double x = Double.valueOf(value1); Double sqrt = Math.sqrt(x); return sqrt.tostring(); } public String sqrt(string value1){ FloatingPoint x = FloatingPoint.valueOf(value1); FloatingPoint sqrt = x.sqrt(); return sqrt.tostring(); } Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 13

Variabilitätsanalyse 2 Beziehungen VARIABILITÄTSANALYSEN Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 14

Wozu Variabilitätsanalyse? = geänderter Quelltext Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 15

Wozu Variabilitätsanalyse? = in Beziehung stehende Änderungen = geänderter Quelltext Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 16

Analysen auf dem Variationspunktmodell restriktiv Abhängigkeit Programmabhängigkeit Datenabhängigkeit int n = 10; calcfibonacci(n); Ähnlichkeit Ähnliches Vokabular Ähnlicher Ort void parsefibonaccicommand() {} int calcfibonacci(int n) {} Gleichheit suggestiv Gleicher Zeitpunkt Gleiches Ticket [Klatt 2014] Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 17

Live-DEMO Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 18

Verfügbare Variabilitätsanalysen Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 19

Einstellungen für Ähnlichkeit nach Begriffen Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 20

Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 21

Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 22

Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 23

Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 24

Beziehungen 0 Variabilitäts - design 3 VARIABILITÄTSDESIGN Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 25

Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 26

Refactoring 4 0 Variabilitäts - design 3 REFACTORING Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 27

Vorgehen beim Refactoring Generell Varianten in ausgewähltes Basisprodukt integrieren Kopie 2 Kopie 3 Variabilitätsmechanismus nutzen, der Variabilitätsmechanismus im Unternehmen akzeptiert ist zu definierter Charakteristik passt auf Code-Element anwendbar ist Kopie 1 Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 28

Mechanismen aus der Literatur [Clements et al. 2001] Parameterisierung Delegation in Strategie- Muster Dependency Injection Bedingte Ausführung Konfiguration Modulzusammensetzung Austausch von Bibliotheken Konfiguration von Produkten in Eclipse Generierung Konfigurationen aus DSL-Artefakt generieren Glue-Code aus DSL- Artefakt generieren Navigationsgerät navigierezu(ziel) 1 <<interface>> RoutingAlgorithmus berechneroute(start, ziel) Dijkstra berechneroute(start, ziel) Bellmann-Ford berechneroute(start, ziel) HOST_LOCALEDEF_CONF_OPT += \ --prefix=/usr \ --with-glibc=./eglibc Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 29

Mechanismen aus der Literatur [Clements et al. 2001] Erweiterungen Eclipse Extension Points Java Service Provider Spezifikation Auswahl während Übersetzung Präprozessor- Anweisungen Bedingte Ausführung mit statischer Konfiguration Vererbung Überladen, Überschreiben, Attribute, Bestandteil anderer Mechanismen //#if defined(logging) import org.apache.log4j.logger; //#endif Konfiguration Basiert auf Feature-Modell Startparameter Lizenzmechanismen Nutzereinstellungen Konstantenklasse Build-Flags Konfigurationsdateien Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 30

Live-DEMO Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 31

Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 32

Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 33

Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 34

Zusammenfassung Produktkopien nicht immer vermeidbar Kunde 2 PD2 & ERP2 Online-Shop Kunde 1 PD1 & ERP1 Produktdatenbank Daten laden Suchen Produktdatenbank Daten laden Enterprise Resource Planing (ERP) - Warenbestand - Preise - Online-Shop Suchen Zeitdruck Enterprise Resource Planing (ERP) - Warenbestand - Preise - Kunde 3 PD3 & ERP3 Online-Shop Produktdatenbank Daten laden Suchen Enterprise Resource Planing (ERP) - Warenbestand - Preise - Konsolidierungstechnologie Refactorings Original Kopie 1 Kopie 2 2 Variabilitätsanalyse Differenzen Beziehungen Differenzanalyse 1 KoPL Werkzeugkette Unternehmensweiten Katalog für Variabilitätsmechanismen erstellen Aus allgemeinen Techniken spezifische Mechanismen ableiten Passend nach Charakteristik wählen 5 Refaktorisierung 4 0 Variabilitätsdesign 3 Produktlinie Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 35

KoPL Werkzeug zur Produktlinienkonsolidierung Projektinformationen Code / Doku www.kopl-project.org github.com/kopl/splevo/wiki Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 36

Referenzen Literatur [Clements et al. 2002] Paul Clements, Linda Northrop. Software Product Lines Practices and Patterns. Addison-Wesley, 2002. [Klatt 2014] Benjamin Klatt. Consolidation of Customized Product Copies into Software Product Lines. Dissertation, Karlsruher Insititut für Technology (KIT), Karlsruhe, Deutschland, Oktober 2014 Grafiken Die Grafiken sind aus Einzelgrafiken zusammengesetzt und bestehen aus Grafik-Sammlung des KoPL-Projekts Font Awesome (Dave Gandy, SIL OFL 1.1, http://scripts.sil.org/ofl) Stephan Seifermann: Softwareproduktlinien - Ain t Nobody Got Time For That? 37