35
Structural Feature Interaction Patterns - Case Studies and Guidelines VaMoS 2014, January 22–24, Nice, France Sven Schuster, Sandro Schulze, Ina Schaefer, January 23, 2014

Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Structural Feature Interaction Patterns -Case Studies and GuidelinesVaMoS 2014, January 22–24, Nice, FranceSven Schuster, Sandro Schulze, Ina Schaefer, January 23, 2014

Page 2: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Feature Interactions

Behavioral Feature InteractionsFire & Flood Control

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 2Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 3: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Feature Interactions

Structural Feature InteractionsDatabase Locks & Statistics

Database

Locks Statistics

Locks (blue), Statistics (red)Overlapping (violet)

Locking the calculation of StatisticsStatistics of Locking

Optional Feature Problem

1 class Database {2 List locks;3 void lock() { /*...*/ }4 void unlock() { /*...*/ }5 void put(Object key, Object data) {6 lock();7 /*...*/8 unlock();9 }

10 Object get(Object key) {11 lock();12 /*...*/13 unlock();14 }15 int getOpenLocks() {16 return locks.size();17 }18 int getDbSize() {19 return calculateDbSize();20 }21 static int calculateDbSize() {22 lock();23 /*...*/24 unlock();25 }26 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 3Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 4: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Problem Statement

Categorization by Apel et al.Which FIs exist?How do they manifest?

FeatureInteractions

Order Visibility

External Internal

What about…Why do they exist?Are they intentional?

Focussing on…Internal Interactions

Structural Interactions

⇒ Structural Feature Interaction Patterns

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 4Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 5: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Problem Statement

Categorization by Apel et al.Which FIs exist?How do they manifest?

FeatureInteractions

Order Visibility

External Internal

What about…Why do they exist?Are they intentional?

Focussing on…Internal Interactions

Structural Interactions

⇒ Structural Feature Interaction Patterns

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 4Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 6: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Problem Statement

Categorization by Apel et al.Which FIs exist?How do they manifest?

FeatureInteractions

Order Visibility

External Internal

What about…Why do they exist?Are they intentional?

Focussing on…Internal Interactions

Structural Interactions

⇒ Structural Feature Interaction Patterns

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 4Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 7: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

SPLs & FOP

Stack

Base Undo Peek Implementation

ArrayList LinkedList

Legend:

MandatoryOptional

Or

Abstract

Concrete

class Stack { /* ... */

int backupPush;

int pop() { /*...*/ }

void undo() { /*...*/ }

void push(int v) {

backupPush=v;

/* original push */

}

}

Superimposition

class Stack

void push(int v)

{ /* ... */ }

int pop() { /* ... */ }

}

Feature Base

class Stack { /* ... */

int backupPush;

void undo() { /* ... */ }

void push(int v) {

backupPush=v;

original(v);

}

}

Feature Undo

⇒ FeatureHouse / Fuji

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 5Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 8: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

SPLs & FOP

Stack

Base Undo Peek Implementation

ArrayList LinkedList

Legend:

MandatoryOptional

Or

Abstract

Concrete

class Stack { /* ... */

int backupPush;

int pop() { /*...*/ }

void undo() { /*...*/ }

void push(int v) {

backupPush=v;

/* original push */

}

}

Superimposition

class Stack

void push(int v)

{ /* ... */ }

int pop() { /* ... */ }

}

Feature Base

class Stack { /* ... */

int backupPush;

void undo() { /* ... */ }

void push(int v) {

backupPush=v;

original(v);

}

}

Feature Undo

⇒ FeatureHouse / Fuji

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 5Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 9: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Patterns

Client«interface»Visitor

+ visit(ConcreteElement)

ConcreteVisitor

+ visit(ConcreteElement)

Element

+ accept(Visitor)

ConcreteElement

+ accept(Visitor)

visitors

elements

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 6Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 10: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Patterns

Client«interface»Visitor

+ visit(ConcreteElement)

ConcreteVisitor

+ visit(ConcreteElement)

Element

+ accept(Visitor)

ConcreteElement

+ accept(Visitor)

visitors

elements

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 6Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 11: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Feature-Oriented Design Patterns

SomeGraphTool

Graph SearchAlgo

BFS DFS

Graph

+ setSearch(Search)

Search+ search(Graph)

BFS+ search(Graph)

DFS+ search(Graph)

⇒ One-to-one mapping between Features & Strategies1

1Sven Schuster, Sandro Schulze, Object-Oriented Design in Feature-OrientedProgramming, FOSD’12

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 7Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 12: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Feature Template Method

Feature DirectedOnlyVertices1 public class Graph {2 public void run(Vertex s) {3 /*empty */4 }5 }

Feature TestProg1 class Main {2 public static void main( String[] args ) {3 Graph g = new Graph();4 /* ... */5 g.run(g.getVertices().next());6 }7 }

Feature Number1 public class Graph {2 public void run(Vertex s) {3 System.out.println("Number");4 NumberVertices();5 original(s);6 }7 public void NumberVertices() {8 /* ... */9 }

10 }

⇒ Implicit constraint to fill/refine template method in later features2

2Sven Schuster, Sandro Schulze, Object-Oriented Design in Feature-OrientedProgramming, FOSD’12

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 8Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 13: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Feature Template Method

Feature DirectedOnlyVertices1 public class Graph {2 public void run(Vertex s) {3 /*empty */4 }5 }

Feature TestProg1 class Main {2 public static void main( String[] args ) {3 Graph g = new Graph();4 /* ... */5 g.run(g.getVertices().next());6 }7 }

Feature Number1 public class Graph {2 public void run(Vertex s) {3 System.out.println("Number");4 NumberVertices();5 original(s);6 }7 public void NumberVertices() {8 /* ... */9 }

10 }

⇒ Implicit constraint to fill/refine template method in later features2

2Sven Schuster, Sandro Schulze, Object-Oriented Design in Feature-OrientedProgramming, FOSD’12

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 8Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 14: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Feature Template Method

Feature DirectedOnlyVertices1 public class Graph {2 public void run(Vertex s) {3 /*empty */4 }5 }

Feature TestProg1 class Main {2 public static void main( String[] args ) {3 Graph g = new Graph();4 /* ... */5 g.run(g.getVertices().next());6 }7 }

Feature Number1 public class Graph {2 public void run(Vertex s) {3 System.out.println("Number");4 NumberVertices();5 original(s);6 }7 public void NumberVertices() {8 /* ... */9 }

10 }

⇒ Implicit constraint to fill/refine template method in later features2

2Sven Schuster, Sandro Schulze, Object-Oriented Design in Feature-OrientedProgramming, FOSD’12

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 8Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 15: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Research Questions

⇒ RQ1: To what extent do design patternsexist in feature-oriented SPLs?

⇒ RQ2: Do feature interactions occur in thecontext of design patterns and if so, how do thefeatures interact?

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 9Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 16: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Setup & Methodology

StudyAutomated pattern detectiontechnique

SPLs of different sizes anddomainsCommon design patterns

SPLsAheadBerkeleyDBGameOfLifeGPLGUIDSLTankWarViolet

PatternsVisitorObserverStrategyFTM

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 10Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 17: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Setup & Methodology

StudyAutomated pattern detectiontechniqueSPLs of different sizes anddomains

Common design patterns

SPLsAheadBerkeleyDBGameOfLifeGPLGUIDSLTankWarViolet

PatternsVisitorObserverStrategyFTM

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 10Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 18: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Setup & Methodology

StudyAutomated pattern detectiontechniqueSPLs of different sizes anddomainsCommon design patterns

SPLsAheadBerkeleyDBGameOfLifeGPLGUIDSLTankWarViolet

PatternsVisitorObserverStrategyFTM

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 10Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 19: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Pattern Detection for FOP

Automated detection approachAdapted from Heuzeroth et al.Family-based ⇒ static analysis

Searching for tuples of elements using Fuji ASTManual elimination of false positives

Visitor Pattern

VisitorCandidate = {Visitor.visit(ConcreteElement),ConcreteVisitor.visit(ConcreteElement),Element.accept(Visitor),ConcreteElement.accept(Visitor)

}

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 11Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 20: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Pattern Detection for FOP

Automated detection approachAdapted from Heuzeroth et al.Family-based ⇒ static analysisSearching for tuples of elements using Fuji AST

Manual elimination of false positives

Visitor PatternVisitorCandidate = {

Visitor.visit(ConcreteElement),ConcreteVisitor.visit(ConcreteElement),Element.accept(Visitor),ConcreteElement.accept(Visitor)

}

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 11Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 21: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Pattern Detection for FOP

Automated detection approachAdapted from Heuzeroth et al.Family-based ⇒ static analysisSearching for tuples of elements using Fuji ASTManual elimination of false positives

Visitor PatternVisitorCandidate = {

Visitor.visit(ConcreteElement),ConcreteVisitor.visit(ConcreteElement),Element.accept(Visitor),ConcreteElement.accept(Visitor)

}

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 11Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 22: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Pattern Detection - Visitor in GPL

Feature DFS1 public class WorkSpace {2 public void preVisitAction(Vertex v) {}3 }45 public class Vertex {6 public void nodeSearch(WorkSpace w) {7 /*...*/8 w.preVisitAction(this);9 /*...*/

10 }11 }

Feature Number1 public class NumberWorkSpace extends WorkSpace {2 int vertexCounter;3 public NumberWorkSpace() {4 vertexCounter = 0;5 }6 public void preVisitAction(Vertex v) {7 if (v.visited != true) {8 v.VertexNumber = vertexCounter++;9 }

10 }11 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 12Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 23: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Pattern Detection - Visitor in GPL

Visitor.visit(ConcreteElement)

Feature DFS1 public class WorkSpace {2 public void preVisitAction(Vertex v) {}3 }45 public class Vertex {6 public void nodeSearch(WorkSpace w) {7 /*...*/8 w.preVisitAction(this);9 /*...*/

10 }11 }

Feature Number1 public class NumberWorkSpace extends WorkSpace {2 int vertexCounter;3 public NumberWorkSpace() {4 vertexCounter = 0;5 }6 public void preVisitAction(Vertex v) {7 if (v.visited != true) {8 v.VertexNumber = vertexCounter++;9 }

10 }11 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 12Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 24: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Pattern Detection - Visitor in GPL

Element.accept(Visitor)

Feature DFS1 public class WorkSpace {2 public void preVisitAction(Vertex v) {}3 }45 public class Vertex {6 public void nodeSearch(WorkSpace w) {7 /*...*/8 w.preVisitAction(this);9 /*...*/

10 }11 }

Feature Number1 public class NumberWorkSpace extends WorkSpace {2 int vertexCounter;3 public NumberWorkSpace() {4 vertexCounter = 0;5 }6 public void preVisitAction(Vertex v) {7 if (v.visited != true) {8 v.VertexNumber = vertexCounter++;9 }

10 }11 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 12Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 25: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Pattern Detection - Visitor in GPL

ConcreteVisitor.visit(ConcreteElement)

Feature DFS1 public class WorkSpace {2 public void preVisitAction(Vertex v) {}3 }45 public class Vertex {6 public void nodeSearch(WorkSpace w) {7 /*...*/8 w.preVisitAction(this);9 /*...*/

10 }11 }

Feature Number1 public class NumberWorkSpace extends WorkSpace {2 int vertexCounter;3 public NumberWorkSpace() {4 vertexCounter = 0;5 }6 public void preVisitAction(Vertex v) {7 if (v.visited != true) {8 v.VertexNumber = vertexCounter++;9 }

10 }11 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 12Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 26: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Design Pattern Detection - Visitor in GPL

ConcreteElement.accept(Visitor)

Feature DFS1 public class WorkSpace {2 public void preVisitAction(Vertex v) {}3 }45 public class Vertex {6 public void nodeSearch(WorkSpace w) {7 /*...*/8 w.preVisitAction(this);9 /*...*/

10 }11 }

Feature Number1 public class NumberWorkSpace extends WorkSpace {2 int vertexCounter;3 public NumberWorkSpace() {4 vertexCounter = 0;5 }6 public void preVisitAction(Vertex v) {7 if (v.visited != true) {8 v.VertexNumber = vertexCounter++;9 }

10 }11 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 12Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 27: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Results - Complete Number of Patterns

Ahea

dBe

rkele

yDB

Game

OfLif

e

GPL

GUID

SL

Tank

War

Viole

t

05

1015202530

Num

bero

fpat

tern

s

Visitor Strategy Observer FTM

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 13Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 28: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Results - Number of decomposed Patterns

Ahea

dBe

rkele

yDB

Game

OfLif

e

GPL

GUID

SL

Tank

War

Viole

t

05

1015202530

Num

bero

fpat

tern

s

Visitor Strategy Observer FTM

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 13Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 29: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Results - Decomposition of Visitor

Feature Number1 public class NumberWorkSpace extends WorkSpace {2 int vertexCounter;3 public NumberWorkSpace() {4 vertexCounter = 0;5 }6 public void preVisitAction(Vertex v) {7 if (v.visited != true) {8 v.VertexNumber = vertexCounter++;9 }

10 }11 }

Feature Cycle1 public class CycleWorkSpace extends WorkSpace {2 public void preVisitAction(Vertex v) {3 /* ... */4 }5 }

GPL

Alg

Number Connected StrongC

StronglyConnected Transpose

Cycle

Feature Connected1 public class ConnectedWorkSpace extends WorkSpace {2 public void preVisitAction(Vertex v) {3 /* ... */4 }5 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 14Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 30: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Results - Feature Template MethodFeature DFS

1 public class WorkSpace {2 public void preVisitAction}(Vertex v) {}3 }4 public class Vertex {5 public void nodeSearch(WorkSpace w) {6 /*...*/7 }8 }9 public class Graph {

10 public void GraphSearch(WorkSpace w) {11 /*...*/12 v.nodeSearch(w);13 /*...*/14 }15 }

Feature DirectedOnlyVertices1 public class Graph {2 public void run(Vertex s) {3 /*empty */4 }5 }

Feature Number1 public class NumberWorkSpace extends WorkSpace {2 int vertexCounter;3 public NumberWorkSpace() {4 vertexCounter = 0;5 }6 public void preVisitAction(Vertex v) {7 if (v.visited != true) {8 v.VertexNumber = vertexCounter++;9 }

10 }11 }1213 public class Graph {14 public void run(Vertex s) {15 System.out.println("Number");16 NumberVertices();17 original(s);18 }19 public void NumberVertices() {20 GraphSearch(new NumberWorkSpace());21 }22 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 15Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 31: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Results - Feature Template MethodFeature DFS

1 public class WorkSpace {2 public void preVisitAction}(Vertex v) {}3 }4 public class Vertex {5 public void nodeSearch(WorkSpace w) {6 /*...*/7 }8 }9 public class Graph {

10 public void GraphSearch(WorkSpace w) {11 /*...*/12 v.nodeSearch(w);13 /*...*/14 }15 }

Feature DirectedOnlyVertices1 public class Graph {2 public void run(Vertex s) {3 /*empty */4 }5 }

Feature Number1 public class NumberWorkSpace extends WorkSpace {2 int vertexCounter;3 public NumberWorkSpace() {4 vertexCounter = 0;5 }6 public void preVisitAction(Vertex v) {7 if (v.visited != true) {8 v.VertexNumber = vertexCounter++;9 }

10 }11 }1213 public class Graph {14 public void run(Vertex s) {15 System.out.println("Number");16 NumberVertices();17 original(s);18 }19 public void NumberVertices() {20 GraphSearch(new NumberWorkSpace());21 }22 }

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 15Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 32: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Results - Summary

Design Patterns in SPLsDesign Patterns do occur in feature-oriented SPLs…… frequently.… across several features.

Feature Interactions within Design PatternsAddition of concrete pattern classes in sibling featuresNo refinements of the actual pattern implementationFeature Template Method to register/call new objects

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 16Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 33: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Towards Guidelines

Application ScenariosSimilar to design patterns in OOP

Visitor to traverse through grammarObserver to realize MVCStrategy to interchange similar algorithms

Feature StructureConcrete classes of decomposed patterns introduced by siblingfeaturesDesign patterns are encapsulated by feature group

⇒ Reflection of design pattern in feature model⇒ Synergy of modularity of variability model and Implementation

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 17Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 34: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Conclusion & Future Work

We have…… introduced the idea of structural feature interaction patterns… proposed a detection technique for design patterns in FOP… conducted a case study detecting structural feature interaction

within design patterns… introduced ideas for guidelines

We should…… improve and extend the detection technique… conduct more studies do derive more detailed guidelines… reason about how to apply such guidelines (automatically)?

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 18Structural Feature Interaction Patterns -Case Studies and Guidelines

Page 35: Structural Feature Interaction Patterns - Case Studies and ...vamos2014.unice.fr/wp-content/uploads/2013/08/... · Structural Feature Interaction Patterns - Case Studies and Guidelines

Motivation Background Reasoning Case Study Conclusion

Conclusion & Future Work

We have…… introduced the idea of structural feature interaction patterns… proposed a detection technique for design patterns in FOP… conducted a case study detecting structural feature interaction

within design patterns… introduced ideas for guidelines

We should…… improve and extend the detection technique… conduct more studies do derive more detailed guidelines… reason about how to apply such guidelines (automatically)?

January 23, 2014 Sven Schuster, Sandro Schulze, Ina Schaefer Page 18Structural Feature Interaction Patterns -Case Studies and Guidelines