softwareproduktlinien - ain't nobody got time for that? · softwareproduktlinien ain’tnobody...

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

Upload: phungliem

Post on 23-Aug-2019

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

SoftwareproduktlinienAin’t Nobody Got Time For That?

Stephan Seifermann (FZI Karlsruhe)

Karlsruher Entwicklertag 2016, 15.06.16

Page 2: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 3: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Profil – Stephan Seifermann

Wissenschaftlicher Mitarbeiter

• Schwerpunkte

• Modellgetriebene Software-Entwicklung

• Software-Architekturen

[email protected]

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

Page 4: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

E-Commerce Integration als Beispielprodukt

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

Kunde

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

Page 5: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Individualisierung durch Kopieren

Kunde 2 PD2 & ERP2

Kunde 3 PD3 & ERP3

Kunde 1PD1 & ERP1

Zeitdruck

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

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

Page 6: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

• … individuelle Kopien sind nicht immer vermeidbar

Unschön aber …

• Zeit- und Kosten

• Flexibilität

• Unbekannte Evolutionsszenarien

• Organisatorisches

• …

Typische Gründe …

Kopieren von Produkten

Kunde 2 PD2 & ERP2

Kunde 3 PD3 & ERP3

Kunde 1PD1 & ERP1

Zeitdruck

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

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

Page 7: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 8: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Produktlinie

Kern FeatureVariabilitäts-management

Erzeugung verschiedener Varianten

Softwareproduktlinie

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

Page 9: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Wie komme ich zu einer Produktlinie?

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

Proaktiv Extraktiv

Produktlinie

Reaktiv

Feature FeatureProduktlinie

Kopie 1

Kopie 2

OriginalProduktlinie

Page 10: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

PRODUKTLINIENKONSOLIDIERUNG

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

Kopie 1

Kopie 2

OriginalProduktlinie

Page 11: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Schritte bei der Produktlinienkonsolidierung

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

Differenz -analyse

1

Variabilitäts -analyse

2

Variabilitäts -design

3

Refactoring

4

Beziehungen

Differenzen

0

Kopie 1

Kopie 2

Original

Produktlinie

5

Page 12: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

DIFFERENZANALYSE

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

Differenz -analyse

1

Differenzen

Kopie 1

Kopie 2

Original

Page 13: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Unterschiede Erkennen - Zielgerichtet

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

: Method

: Statement

: Statement

: Statement

: Method

: Statement

: Statement

: Statement

: VPM

: VariationPoint

: VariationPoint

: VariationPoint

public String sqrt(String value1){

FloatingPoint x = FloatingPoint.valueOf(value1);

FloatingPoint sqrt = x.sqrt();

return sqrt.toString();

}

public String sqrt(String value1){

Double x = Double.valueOf(value1);

Double sqrt = Math.sqrt(x);

return sqrt.toString();

}

Page 14: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

VARIABILITÄTSANALYSEN

Variabilitäts-analyse

2

Beziehungen

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

Page 15: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Wozu Variabilitätsanalyse?

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

= geänderter Quelltext

15

Page 16: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Wozu Variabilitätsanalyse?

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

= geänderter Quelltext

= in Beziehung stehende Änderungen

16

Page 17: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Analysen auf dem Variationspunktmodell

• Programmabhängigkeit

• Datenabhängigkeit

• …

Abhängigkeit

• Ähnliches Vokabular

• Ähnlicher Ort

• …

Ähnlichkeit

• Gleicher Zeitpunkt

• Gleiches Ticket

• …

Gleichheit

restriktiv

suggestiv

int n = 10;

calcFibonacci(n);

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

void parseFibonacciCommand() {}

int calcFibonacci(int n) {}

17

[Klatt 2014]

Page 18: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Live-DEMO

Page 19: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Verfügbare Variabilitätsanalysen

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

Page 20: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Einstellungen für Ähnlichkeit nach Begriffen

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

Page 21: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 22: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 23: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 24: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 25: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

VARIABILITÄTSDESIGN

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

Variabilitäts -design

3

Beziehungen

0

Page 26: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 27: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

REFACTORING

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

Variabilitäts -design

3

Refactoring

4

0

Page 28: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Vorgehen beim Refactoring

• Varianten in ausgewähltes Basisprodukt integrieren

Generell

• im Unternehmen akzeptiert ist

• zu definierter Charakteristik passt

• auf Code-Element anwendbar ist

Variabilitätsmechanismus nutzen, der

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

Kopie 1

Kopie 2 Kopie 3

Variabilitätsmechanismus

Page 29: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Mechanismen aus der Literatur

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

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

Navigationsgerät

navigiereZu(ziel)

<<interface>>RoutingAlgorithmus

berechneRoute(start, ziel)

1

Bellmann-Ford

berechneRoute(start, ziel)

Dijkstra

berechneRoute(start, ziel)

HOST_LOCALEDEF_CONF_OPT += \

--prefix=/usr \

--with-glibc=./eglibc

[Clements et al. 2001]

Page 30: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Mechanismen aus der Literatur

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

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

//#if defined(LOGGING)

import org.apache.log4j.Logger;

//#endif

Konstantenklasse

Build-Flags

Konfigurationsdateien

Startparameter

Lizenzmechanismen

Nutzereinstellungen

KonfigurationBasiert auf Feature-Modell

[Clements et al. 2001]

Page 31: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Live-DEMO

Page 32: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 33: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 34: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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

Page 35: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Zusammenfassung

Produktkopien nicht immer vermeidbar

Konsolidierungstechnologie

• Unternehmensweiten Katalog fürVariabilitätsmechanismen erstellen

• Aus allgemeinen Technikenspezifische Mechanismen ableiten

• Passend nach Charakteristik wählen

Refactorings

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

Kunde 2 PD2 & ERP2

Kunde 3 PD3 & ERP3

Kunde 1PD1 & ERP1

Zeitdruck

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

Online-Shop

Suchen

Produkt-datenbank

Daten laden

Enterprise Resource Planing (ERP)

- Warenbestand- Preise- …

KoPL WerkzeugketteKopie 1

Kopie 2

Original

Produktlinie

5

Refaktori-sierung

4

Variabilitäts- design

3

0

Variabilitäts-analyse

2

Beziehungen

Differenz-analyse

1

Differenzen

Page 36: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

Projektinformationen Code / Doku

KoPL Werkzeug zur Produktlinienkonsolidierung

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

www.kopl-project.org github.com/kopl/SPLevo/wiki

Page 37: Softwareproduktlinien - Ain't Nobody Got Time for That? · Softwareproduktlinien Ain’tNobody Got Time For That? Stephan Seifermann (FZI Karlsruhe) Karlsruher Entwicklertag 2016,

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 ProductLines. Dissertation, Karlsruher Insititut für Technology (KIT), Karlsruhe, Deutschland, Oktober 2014

GrafikenDie 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