university of toronto department of computer science lifting transformations to product lines rick...
TRANSCRIPT
University of TorontoDepartment of Computer Science
Lifting Transformations to Product Lines
Rick Salay, Michalis Famelis, Julia Rubin, Alessio Di Sandro, Marsha Chechik
Product lines
+Dry +Dry/Delay
+Delay+Heat
…
Manage a large number of similar but different artifact variants (products)
Washing Machine Co.
2 Lifting Transformations to Product Lines
Product line structure
+Dry +Dry/Delay
+Delay+Heat
…
Product line (annotative) represented by Domain Model – combined parts from all products Feature Model – shows possible features and restrictions
for products
Washing Machine Co.
Feature Model
Wash
Heat
Dry
Delay
excludes
Domain Model
3 Lifting Transformations to Product Lines
Product line configuration – example 1
+Dry +Dry/Delay
+Delay+Heat
…
+Heat product Feature configuration: {Wash, Heat}
Washing Machine Co.Feature Model
Wash
Heat
Dry
Delay
excludes
+Heat
4 Lifting Transformations to Product Lines
Product line configuration – example 2
+Dry +Dry/Delay
+Delay+Heat
…
+Dry/Delay product Feature configuration: {Wash, Dry, Delay}
Washing Machine Co.Feature Model
Wash
Heat
Dry
Delay
excludes
+Dry/
Delay
5 Lifting Transformations to Product Lines
Domain Model
Model product line:washing machine state machine
Locking Waiting
Washing
entry/TempCheck()
Drying
Unlocking
[heatEnabled;delayEnabled]/ HeaterOn()
/ HeaterOff(); wash.Start();
/ QuickCool()
/ QuickCool()
[not heatEnabled;not delayEnabled]/ wash.Start();
Presence Conditions
Feature Model
Wash
Heat
Dry
Delay
excludes
6 Lifting Transformations to Product Lines
Heat Delay
Heat
Heat
Heat
Heat
DryDry
DryDry
Heat Delay
Domain Model
Feature Model
Configuring a model (product)
Locking Waiting
Washing
entry/TempCheck()
Drying
Unlocking
[heatEnabled;delayEnabled]/ HeaterOn()
/ HeaterOff(); wash.Start();
/ QuickCool()
/ QuickCool()
[not heatEnabled;not delayEnabled]/ wash.Start();
Wash
Heat
Dry
Delay
excludes
Heat Delay
Heat
Heat
Heat
Heat
DryDry
DryDry
7 Lifting Transformations to Product Lines
Heat Delay
+Dry/Delay Variant
+Dry/Delay state machine
Locking Waiting
Washing
Drying
Unlocking
[ delayEnabled]
/ wash.Start();
/ QuickCool()
8 Lifting Transformations to Product Lines
[ not delayEnabled]/ wash.Start();
+Dry/Delay Variant
+Dry/Delay state machine
Locking Waiting
Washing
Drying
Unlocking
[delayEnabled]
/wash.Start();
/ QuickCool()
9 Lifting Transformations to Product Lines
[not delayEnabled]/ wash.Start();
Outline Product lines Transformations Why lift transformations to product lines? Sketch of lifting algorithm Evaluation Summary and next steps
10 Lifting Transformations to Product Lines
Use to convert one artifact into another
For refinement, generating implementations, refactoring, optimization, translation, etc.
Automates mundane tasks and ensures quality Enables raising level of abstraction in software
development
Transformations in Model Driven Engineering (MDE)
WideYellow
11 Lifting Transformations to Product Lines
Key problem: Transformations written for models cannot be used directly with product lines of models
Ideally we should lift them to product lines - but how?
ModelModel
Our goal
?
Model ModelModel
Model Product
Line
configure
configure
12 Lifting Transformations to Product Lines
+Dry +Dry
Idea 1 – Avoid lifting transformation
Wash
Heat
Dry
Delay
excludes
WideYellow
configure
Problems: Must keep track of transformations to apply Can’t do analysis of transformation’s effect on product
line 13 Lifting Transformations to Product
Lines
+Dry
+Dela
y
Idea 2: Configure all products and merge
Wash
Heat
Dry
Delay
excludes
Wash
Heat
Dry
Delay
excludes
configure
merge
+Dela
y
+Dry
WideYellow
WideYellow
WideYellow
Problems: Expensive: may be many products! Merge is non-trivial
14 Lifting Transformations to Product Lines
WideYellow
ManualLift
Idea 3: Manually lift by re-developing transformation
Wash
Heat
Dry
Delay
excludes
Wash
Heat
Dry
Delay
excludes
Problems: Requires extensive effort Error-prone
15 Lifting Transformations to Product Lines
Automated
Lift
Our contribution: Automate the lift
Wash
Heat
Dry
Delay
excludes
WideYellow
Wash
Heat
Dry
Delay
excludes
16 Lifting Transformations to Product Lines
Benefits Low cost Eliminates manual effort Guarantees correctness
Outline Product lines Transformations Why lift transformations to product lines? Sketch of lifting algorithm Evaluation Summary and next steps
17 Lifting Transformations to Product Lines
Example: State machine refactoring transformation
NAC
Applicability Condition: Apply the rule if the LHS matches and no NAC matches
18 Lifting Transformations to Product Lines
Negative Application Condition
Applying FoldEntry – example 1
FoldEntry
NAC
+Dry/Delay Variant
Locking Waiting
Washing
/wash.Start();
Drying
Unlocking
[delayEnabled]
/ QuickCool()
19 Lifting Transformations to Product Lines
[not delayEnabled]/ wash.Start();
Matching Site
No NAC matches – applicability condition passes Apply rule
Applying FoldEntry – example 1
FoldEntry
NAC
+Dry/Delay Variant
Locking Waiting
Washing
entry/ wash.Start();
Drying
Unlocking
[delayEnabled]
/ QuickCool()
20 Lifting Transformations to Product Lines
[not delayEnabled]
Applying FoldEntry – example 2
FoldEntry
NAC
+Heat Variant
Locking Waiting
Washing
entry/TempCheck()
Unlocking
[heatEnabled]/ HeaterOn()
/ HeaterOff(); wash.Start();
/ QuickCool()
21 Lifting Transformations to Product Lines
[not heatEnabled]/ wash.Start();
NAC Matches – applicability condition fails Do not apply rule
Matching Site
Domain Model
Feature ModelHow to apply FoldEntry to a Product Line?
Locking Waiting
Washing
entry/TempCheck()
Drying
Unlocking
[heatEnabled;delayEnabled]/ HeaterOn()
/ HeaterOff(); wash.Start();
/ QuickCool()
/ QuickCool()
Wash
Heat
Dry
Delay
excludes
Heat Delay
Heat
Heat
Heat
Heat
DryDry
DryDry
22 Lifting Transformations to Product Lines
Heat Delay[not heatEnabled;not
delayEnabled]/ wash.Start();
Lifting algorithm sketch
1. Find matching sites in the domain model
2. Reinterpret rule applicability condition Rule must be applicable in at least
one product requires SAT check
3. Reinterpret how to apply the rule Modify domain model and presence
conditions so rule effect only occurs in applicable products
24 Lifting Transformations to Product Lines
Lifting Transformations to Product Lines
25
Domain Model
Locking Waiting
Washing
entry/TempCheck()
Drying
Unlocking
[heatEnabled;delayEnabled]/ HeaterOn()
/ HeaterOff(); wash.Start();
/ QuickCool()
/ QuickCool()
Feature Model
Wash
Heat
Dry
Delay
excludes
Heat
+Dry/Delay Variant
Locking
Waiting
Washing
/wash.Start();
Drying
Unlocking
[delayEnabled]
/ QuickCool()
/ wash.Start();
+Dry/Delay Variant
+Heat VariantLocki
ngWaiti
ng
Washing
entry/TempCheck()
Unlocking
[heatEnabled]/ HeaterOn()
/ HeaterOff(); wash.Start();/
QuickCool()
/ wash.Start(); +Heat Variant
Heat
Dry
Heat
Heat Delay
Heat
DryDry
Dry
Heat Delay[not heatEnabled;not
delayEnabled] /wash.Start();
1) Matching Site
2) Lifted rule applicability condition passes Apply rule
2) Rule applicable in at least one product?
26 Lifting Transformations to Product Lines
Domain Model
Locking Waiting
Washing
entry/TempCheck();
wash.Start();Drying
Unlocking
[heatEnabled;delayEnabled]/ HeaterOn()
/ HeaterOff(); wash.Start();
/ QuickCool()
/ QuickCool()
Heat3) Apply rule domain model and update presence conditions
Delay
Feature Model
Wash
Heat
Dry
Delay
excludes
+Dry/Delay Variant
Locking
Waiting
Washing
/wash.Start();
Drying
Unlocking
[delayEnabled]
/ QuickCool()
/ wash.Start();
+Dry/Delay Variant
+Heat VariantLocki
ngWaiti
ng
Washing
entry/TempCheck()
Unlocking
[heatEnabled]/ HeaterOn()
/ HeaterOff(); wash.Start();/
QuickCool()
/ wash.Start(); +Heat Variant
[not heatEnabled;not delayEnabled]
/wash.Start();
Properties of lifting algorithm
Correct Lifting satisfies the correctness
condition
Termination Lifting preserves rule set termination
Confluence Lifting preserves rule set confluence
up to product line equivalence
27 Lifting Transformations to Product Lines
Outline Product lines Transformations Why lift transformations to product lines? Sketch of lifting algorithm Evaluation Summary and next steps
29 Lifting Transformations to Product Lines
Prototype Implementation
Modified the Henshin [Arendt et al.] graph transformation engine to Use the lifting semantics for rule execution Use Z3 [Microsoft] for SAT checks via MMTF [U of T]
Henshin Graph Transformation Engine (modified)
Henshin Graph Transformation Engine (modified)
Eclipse WorkbenchEclipse Workbench Z3 SMT SolverZ3 SMT Solver
Model Management Tool Framework(MMTF)
Model Management Tool Framework(MMTF)
30 Lifting Transformations to Product Lines
Application: Car Crash Management Product Line
Benchmark used in modeling studies 15,360 products (class diagram variants) 444 elements, 118 presence conditions
Applied to two transformations (AddGet) Class Diagram to Class
Diagram adds getters to public data members (1
rule)
(C2R) Class Diagram to Relational Database schema Translates a class diagram to equivalent
schema (9 rules)
31 Lifting Transformations to Product Lines
Objective: Illustrate lifting on a more realistic scenario
Application: Car Crash Management Product Line Objective: Illustrate lifting on a
more realistic scenario Benchmark used in modeling
studies 15,360 class diagram variants
Applied to two transformations (C2R) Class Diagram to Relational
Database schema Translates a class diagram to
equivalent schema (9 rules) (AddGet) Class Diagram to Class
Diagram Refactoring that adds getters to public
data members (1 rule)
Results
Class to Relational
Time/App(msec)
Classical 2.6
Lifted 288.6
Slowdown 128.5
AddGet Time/App (msec)
Classical 0.5
Lifted 12.5
Slowdown 27.7
Some slowdown but much better
than applying to all 15,360
products!
32 Lifting Transformations to Product Lines
Scalability Study (RQ) How does lifted rule execution time scale with:
1. Size of product line (# of features)2. Size of transformation rule (# of elements)
Method Varying product lines: use the S.P.L.O.T. feature model
repository 359 real feature models from 9 to 290 features
Varying rules: use 7 rules of varying sizes from the literature
Problem: domain models/presence conditions hard to find!
Solution: simulate using random rule matching Tuned various parameters using the Car Crash Product Line
example Details available online
33 Lifting Transformations to Product Lines
Results – time vs. features
# of matchelements
34 Lifting Transformations to Product Lines
4
12
1339
2025
37
Time seems to increase with rule size and then suddenly drops!
Time increase close to linear with # of features
Results - # UNSAT vs. features
35 Lifting Transformations to Product Lines
# of matchelements
4
1239
20
25
37
13
Reason: larger rules have more fast UNSAT results
Summary Product lines and transformations help manage
software development But, using existing transformations with product lines is a
challenge Possible solutions
Always apply transformation after configuration extra maintenance, lose analysis capability
Apply transformation to all products and merge expensive
Manually redevelop transformation for product line high effort and error prone
Our solution: automated lifting of transformation to product line lifting reinterprets transformation execution semantics
36 Lifting Transformations to Product Lines
Summary Cont’d
Lifting Transformations to Product Lines
37
Preliminary evaluation shows a clear benefit Automation eliminates effort and
potential for error Lifted transformations are slower but
orders of magnitude faster than applying to all products
Scales well with increasing feature model size
Next Steps
More extensive evaluation Extending the approach
To richer transformation languageswith control flowpragmatic transformation languages
(e.g., ATL) To richer product line languages
E.g., Common Variability Language
38 Lifting Transformations to Product Lines
Thank you
Lifting Transformations to Product Lines
39