softwareproduktlinien - ain't nobody got time for that? · softwareproduktlinien ain’tnobody...
TRANSCRIPT
SoftwareproduktlinienAin’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
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
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
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
• … 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
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
Produktlinie
Kern FeatureVariabilitäts-management
Erzeugung verschiedener Varianten
Softwareproduktlinie
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 8
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
PRODUKTLINIENKONSOLIDIERUNG
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 10
Kopie 1
Kopie 2
OriginalProduktlinie
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
DIFFERENZANALYSE
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 12
Differenz -analyse
1
Differenzen
Kopie 1
Kopie 2
Original
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();
}
VARIABILITÄTSANALYSEN
Variabilitäts-analyse
2
Beziehungen
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 14
Wozu Variabilitätsanalyse?
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That?
= geänderter Quelltext
15
Wozu Variabilitätsanalyse?
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That?
= geänderter Quelltext
= in Beziehung stehende Änderungen
16
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]
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 18
Live-DEMO
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
VARIABILITÄTSDESIGN
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 25
Variabilitäts -design
3
Beziehungen
0
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 26
REFACTORING
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 27
Variabilitäts -design
3
Refactoring
4
0
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
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]
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]
Stephan Seifermann: Softwareproduktlinien - Ain’t Nobody Got Time For That? 31
Live-DEMO
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
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
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
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