SlideShare a Scribd company logo
1 of 121
Download to read offline
An Overview of Techniques for
Detecting SoftwareVariability
Concepts in Source Code
Angela Lozano
1/30
Variability
• Customized and Affordable	
• Maximize reuse of common features	
• e.g. reuse hw. customize with sw.	
• e.g. sw families = { similar apps with shared
provenance }	
• e.g. context-aware, fault tolerant and intelligent
apps
2/30
Variability
2/30
Why mining for variability?
• To recuperate from architectural degradation
• To expand a successful single product to new markets
!	
• Cost-benefit assessment of variation ⚖	
• Effect of a variation in the development of the
product!
3/30
Variability
Feature
Feature Diagram
Mandatory vs. Optional features
Feature dependencies
Variants
Variation points
Binding
Domain instances
Optional vs. Alternative variants
Single vs. Multiple features
4/30
Variable features
Variability
Feature
Feature Diagram
Mandatory vs. Optional features
Feature dependencies
Variants
Variation points
Binding
Domain instances
Optional vs. Alternative variants
Single vs. Multiple features
4/30
Variable features
5/30
some products of the same domain
Feature: unit/increment of functionality
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
5/30
some products of the same domain
Feature: unit/increment of functionality
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
5/30
some products of the same domain
Feature: unit/increment of functionality
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
5/30
some products of the same domain
Feature: unit/increment of functionality
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
5/30
some products of the same domain
Feature: unit/increment of functionality
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
[Snelting TOSEM 96] ⚖!
6/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
[Snelting TOSEM 96] ⚖!
6/30
Code that
varies
Variables
that trigger
changes
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
[Snelting TOSEM 96]
UNIX DOS X_win BSD !BSD
I X
II X X
III X X
IV X X
V X
#ifdef	 UNIX
...I ...
#endif
#if defined(X_win)
&& !defined(BSD)
...II...
#endif
#ifdef DOS
	 #ifdef X_win
	 ...III...
	 #endif
	 #ifdef BSD
	 ...IV...
	 #endif
...V...
#endif
⚖!
6/30
Code that
varies
Variables
that trigger
changes
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
[Snelting TOSEM 96]
UNIX DOS X_win BSD !BSD
I X
II X X
III X X
IV X X
V X
#ifdef	 UNIX
...I ...
#endif
#if defined(X_win)
&& !defined(BSD)
...II...
#endif
#ifdef DOS
	 #ifdef X_win
	 ...III...
	 #endif
	 #ifdef BSD
	 ...IV...
	 #endif
...V...
#endif
⚖!
6/30
Code that
varies
Variables
that trigger
changes
Which parts of
code are chosen
by which triggers:
selection of
variants
Which trigers
are subsumed by
other triggers:
dependencies
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
[Snelting TOSEM 96]
UNIX DOS X_win BSD !BSD
I X
II X X
III X X
IV X X
V X
X: No relation with features	
X: Need a specific syntax for the configuration of the products	
X:A trigger does not necessarily store the selection of a variant
#ifdef	 UNIX
...I ...
#endif
#if defined(X_win)
&& !defined(BSD)
...II...
#endif
#ifdef DOS
	 #ifdef X_win
	 ...III...
	 #endif
	 #ifdef BSD
	 ...IV...
	 #endif
...V...
#endif
⚖!
6/30
Code that
varies
Variables
that trigger
changes
Which parts of
code are chosen
by which triggers:
selection of
variants
Which trigers
are subsumed by
other triggers:
dependencies
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
7/30
[Hummel RSSE 10] !
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
7/30
Name of a
Class
Database
of classes
& their
methods	
(OSS)
[Hummel RSSE 10] !
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
7/30
Name of a
Class
Database
of classes
& their
methods	
(OSS)
[Hummel RSSE 10] !
signatures amongst the first 100 results, as delivered by the
search engine for various example queries. A reasonable
threshold for accepting a signature as common enough for
the design prompter seemed to require it to appear at least
20 times amongst the 100 considered results. In cases where
there were fewer than six signatures above this value we
added the following results in gray color to the table.
Table 1: Exemplary interface recommendations.
Search Term(s) Averaged Interface #
Matrix add Matrix
≈ 90 msec transpose():Matrix; 45
8, 844 results add(Matrix):Matrix; 39
732 methods toString():String; 39
multiply(Matrix):Matrix; 35
add(Matrix):void; 27
swapRows():Matrix; 24
BinaryTree BinaryTree
≈ 50 msec isEmpty():boolean; 35
1, 273 results main(String[]):void; 27
387 methods toString():String; 24
size():int; 21
height():int; 14
makeEmpty():void; 12
Stack Stack
≈ 40 msec push(Object):void; 48
68, 718 results pop():Object; 47
113 methods isEmpty():boolean; 34
toString():String; 22
pop():int; 20
push(int):void; 20
Deck Deck
≈ 50 msec shuffle():void; 55
3, 238 results dealCard():Card; 23
323 methods toString():String; 19
getCard():Card; 17
cardsLeft():int; 16
main(String[]):void; 10
delivered results. Besides a number of further ideas
proving the intersection algorithm we discuss in 5, it
clear that hiding common signatures such as the ones
ming from main methods or methods inherited from
Object might further improve the user experience as
for example offering the possibility to retrieve the fol
most frequent signatures that are initially not show
more.
It should be obvious that common abstractions s
”stack” deliver far better results than a search for
mon programming term such as ”public”, but that is
in the nature of things. Hence, identifying situations
this technology can become helpful in practice in the
should also be on the research agenda as performin
meaningful evaluations that give a clear indication how
ful it is in terms of an increased development velocity
facilitating early completeness of software designs. In
tion, the following section discusses some technical re
directions we have identified so far in more detail.
5. ONGOING & FUTURE WORK
In the previous sections we have given an insight i
cent findings derived from preliminary experiments w
approach. Although we have presented a prototype
mentation which adds additional value to the Eclips
this is still closely tied to the coding phase of softw
velopment. Nevertheless, there is still potential for
enhancements of the approach and broadening the fu
ality from solely the implementation phase to the
phase as well has the potential to significantly boos
in the context of the early software life cycle. It sho
feasible to generate useful hints for class or objects va
(i.e. attributes) with similar techniques and it is eve
ceivable to recognize specific idioms in the source c
operations and to derive corresponding hints for d
Table 1: Exemplary interface recommendations.
Search Term(s) Averaged Interface #
Matrix add Matrix
≈ 90 msec transpose():Matrix; 45
8, 844 results add(Matrix):Matrix; 39
732 methods toString():String; 39
multiply(Matrix):Matrix; 35
add(Matrix):void; 27
swapRows():Matrix; 24
BinaryTree BinaryTree
≈ 50 msec isEmpty():boolean; 35
1, 273 results main(String[]):void; 27
387 methods toString():String; 24
size():int; 21
height():int; 14
makeEmpty():void; 12
Stack Stack
≈ 40 msec push(Object):void; 48
68, 718 results pop():Object; 47
113 methods isEmpty():boolean; 34
toString():String; 22
pop():int; 20
push(int):void; 20
Deck Deck
≈ 50 msec shuffle():void; 55
3, 238 results dealCard():Card; 23
323 methods toString():String; 19
getCard():Card; 17
cardsLeft():int; 16
main(String[]):void; 10
CreditCard CreditCard
≈ 40 msec getNumber():String; 30
1, 148 results getCardNumber():String; 22
229 methods toString():String; 20
setCardNumber(String):void; 13
getCardType():String; 13
setNumber(String):void; 12
In addition to that, the table shows in the right row how
often each signature appeared, while the left row includes
the information how much time the calculation of the inter-
face intersections required and how many unique signatures
respectively how many results were found for each query.
Our test system contained a dual core processor with 2.8
GHz and 6 GB RAM on which this algorithm works reason-
ably fast. In other words, its response time of far less than
a second is clearly sufficient to create recommendations for
a proactive design prompter on the fly.
4.2 Discussion
”stack” deliver far better results than a search for
mon programming term such as ”public”, but that is
in the nature of things. Hence, identifying situations
this technology can become helpful in practice in the
should also be on the research agenda as performin
meaningful evaluations that give a clear indication how
ful it is in terms of an increased development velocity
facilitating early completeness of software designs. In
tion, the following section discusses some technical re
directions we have identified so far in more detail.
5. ONGOING & FUTURE WORK
In the previous sections we have given an insight i
cent findings derived from preliminary experiments w
approach. Although we have presented a prototype
mentation which adds additional value to the Eclips
this is still closely tied to the coding phase of softw
velopment. Nevertheless, there is still potential for
enhancements of the approach and broadening the fu
ality from solely the implementation phase to the
phase as well has the potential to significantly boos
in the context of the early software life cycle. It sho
feasible to generate useful hints for class or objects va
(i.e. attributes) with similar techniques and it is eve
ceivable to recognize specific idioms in the source c
operations and to derive corresponding hints for d
ers such as ”other developers used two nested for lo
implement a bubblesort operation”. Since code-level
are only the smallest group in the common pattern c
cation by Buschmann et al. [5] it also seems feasible
the abstraction level and to recognize and recomme
sign or even architectural patterns that are common
together with a given concept in the future. As sh
another publication [14], Code Conjurer supports reu
ommendations based upon UML class diagrams draw
the help of appropriate Eclipse plug-ins. This featu
also be used in conjunction with our prototypical imp
tation of the design prompter. However, there is sp
further enhancements, such as the presentation of the
recommendations which is currently limited to ind
classes. Therefore, a future release of the plug-in will
UML representation of component design recommend
as well as automatically create diagrams showing m
classes and their relations. This will give developers a
of an architectural design, derived from components
Count same signatures for classes
with similar names
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
7/30
Name of a
Class
Database
of classes
& their
methods	
(OSS)
Missing methods
in the class:
common
functionality
[Hummel RSSE 10] !
signatures amongst the first 100 results, as delivered by the
search engine for various example queries. A reasonable
threshold for accepting a signature as common enough for
the design prompter seemed to require it to appear at least
20 times amongst the 100 considered results. In cases where
there were fewer than six signatures above this value we
added the following results in gray color to the table.
Table 1: Exemplary interface recommendations.
Search Term(s) Averaged Interface #
Matrix add Matrix
≈ 90 msec transpose():Matrix; 45
8, 844 results add(Matrix):Matrix; 39
732 methods toString():String; 39
multiply(Matrix):Matrix; 35
add(Matrix):void; 27
swapRows():Matrix; 24
BinaryTree BinaryTree
≈ 50 msec isEmpty():boolean; 35
1, 273 results main(String[]):void; 27
387 methods toString():String; 24
size():int; 21
height():int; 14
makeEmpty():void; 12
Stack Stack
≈ 40 msec push(Object):void; 48
68, 718 results pop():Object; 47
113 methods isEmpty():boolean; 34
toString():String; 22
pop():int; 20
push(int):void; 20
Deck Deck
≈ 50 msec shuffle():void; 55
3, 238 results dealCard():Card; 23
323 methods toString():String; 19
getCard():Card; 17
cardsLeft():int; 16
main(String[]):void; 10
delivered results. Besides a number of further ideas
proving the intersection algorithm we discuss in 5, it
clear that hiding common signatures such as the ones
ming from main methods or methods inherited from
Object might further improve the user experience as
for example offering the possibility to retrieve the fol
most frequent signatures that are initially not show
more.
It should be obvious that common abstractions s
”stack” deliver far better results than a search for
mon programming term such as ”public”, but that is
in the nature of things. Hence, identifying situations
this technology can become helpful in practice in the
should also be on the research agenda as performin
meaningful evaluations that give a clear indication how
ful it is in terms of an increased development velocity
facilitating early completeness of software designs. In
tion, the following section discusses some technical re
directions we have identified so far in more detail.
5. ONGOING & FUTURE WORK
In the previous sections we have given an insight i
cent findings derived from preliminary experiments w
approach. Although we have presented a prototype
mentation which adds additional value to the Eclips
this is still closely tied to the coding phase of softw
velopment. Nevertheless, there is still potential for
enhancements of the approach and broadening the fu
ality from solely the implementation phase to the
phase as well has the potential to significantly boos
in the context of the early software life cycle. It sho
feasible to generate useful hints for class or objects va
(i.e. attributes) with similar techniques and it is eve
ceivable to recognize specific idioms in the source c
operations and to derive corresponding hints for d
Table 1: Exemplary interface recommendations.
Search Term(s) Averaged Interface #
Matrix add Matrix
≈ 90 msec transpose():Matrix; 45
8, 844 results add(Matrix):Matrix; 39
732 methods toString():String; 39
multiply(Matrix):Matrix; 35
add(Matrix):void; 27
swapRows():Matrix; 24
BinaryTree BinaryTree
≈ 50 msec isEmpty():boolean; 35
1, 273 results main(String[]):void; 27
387 methods toString():String; 24
size():int; 21
height():int; 14
makeEmpty():void; 12
Stack Stack
≈ 40 msec push(Object):void; 48
68, 718 results pop():Object; 47
113 methods isEmpty():boolean; 34
toString():String; 22
pop():int; 20
push(int):void; 20
Deck Deck
≈ 50 msec shuffle():void; 55
3, 238 results dealCard():Card; 23
323 methods toString():String; 19
getCard():Card; 17
cardsLeft():int; 16
main(String[]):void; 10
CreditCard CreditCard
≈ 40 msec getNumber():String; 30
1, 148 results getCardNumber():String; 22
229 methods toString():String; 20
setCardNumber(String):void; 13
getCardType():String; 13
setNumber(String):void; 12
In addition to that, the table shows in the right row how
often each signature appeared, while the left row includes
the information how much time the calculation of the inter-
face intersections required and how many unique signatures
respectively how many results were found for each query.
Our test system contained a dual core processor with 2.8
GHz and 6 GB RAM on which this algorithm works reason-
ably fast. In other words, its response time of far less than
a second is clearly sufficient to create recommendations for
a proactive design prompter on the fly.
4.2 Discussion
”stack” deliver far better results than a search for
mon programming term such as ”public”, but that is
in the nature of things. Hence, identifying situations
this technology can become helpful in practice in the
should also be on the research agenda as performin
meaningful evaluations that give a clear indication how
ful it is in terms of an increased development velocity
facilitating early completeness of software designs. In
tion, the following section discusses some technical re
directions we have identified so far in more detail.
5. ONGOING & FUTURE WORK
In the previous sections we have given an insight i
cent findings derived from preliminary experiments w
approach. Although we have presented a prototype
mentation which adds additional value to the Eclips
this is still closely tied to the coding phase of softw
velopment. Nevertheless, there is still potential for
enhancements of the approach and broadening the fu
ality from solely the implementation phase to the
phase as well has the potential to significantly boos
in the context of the early software life cycle. It sho
feasible to generate useful hints for class or objects va
(i.e. attributes) with similar techniques and it is eve
ceivable to recognize specific idioms in the source c
operations and to derive corresponding hints for d
ers such as ”other developers used two nested for lo
implement a bubblesort operation”. Since code-level
are only the smallest group in the common pattern c
cation by Buschmann et al. [5] it also seems feasible
the abstraction level and to recognize and recomme
sign or even architectural patterns that are common
together with a given concept in the future. As sh
another publication [14], Code Conjurer supports reu
ommendations based upon UML class diagrams draw
the help of appropriate Eclipse plug-ins. This featu
also be used in conjunction with our prototypical imp
tation of the design prompter. However, there is sp
further enhancements, such as the presentation of the
recommendations which is currently limited to ind
classes. Therefore, a future release of the plug-in will
UML representation of component design recommend
as well as automatically create diagrams showing m
classes and their relations. This will give developers a
of an architectural design, derived from components
Some occasional
methods:
variants?
Count same signatures for classes
with similar names
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Car
Horsepow
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
Mining products of
the same domain
X: Business-specific concepts are likely to be missing in the database.
7/30
Name of a
Class
Database
of classes
& their
methods	
(OSS)
Missing methods
in the class:
common
functionality
[Hummel RSSE 10] !
signatures amongst the first 100 results, as delivered by the
search engine for various example queries. A reasonable
threshold for accepting a signature as common enough for
the design prompter seemed to require it to appear at least
20 times amongst the 100 considered results. In cases where
there were fewer than six signatures above this value we
added the following results in gray color to the table.
Table 1: Exemplary interface recommendations.
Search Term(s) Averaged Interface #
Matrix add Matrix
≈ 90 msec transpose():Matrix; 45
8, 844 results add(Matrix):Matrix; 39
732 methods toString():String; 39
multiply(Matrix):Matrix; 35
add(Matrix):void; 27
swapRows():Matrix; 24
BinaryTree BinaryTree
≈ 50 msec isEmpty():boolean; 35
1, 273 results main(String[]):void; 27
387 methods toString():String; 24
size():int; 21
height():int; 14
makeEmpty():void; 12
Stack Stack
≈ 40 msec push(Object):void; 48
68, 718 results pop():Object; 47
113 methods isEmpty():boolean; 34
toString():String; 22
pop():int; 20
push(int):void; 20
Deck Deck
≈ 50 msec shuffle():void; 55
3, 238 results dealCard():Card; 23
323 methods toString():String; 19
getCard():Card; 17
cardsLeft():int; 16
main(String[]):void; 10
delivered results. Besides a number of further ideas
proving the intersection algorithm we discuss in 5, it
clear that hiding common signatures such as the ones
ming from main methods or methods inherited from
Object might further improve the user experience as
for example offering the possibility to retrieve the fol
most frequent signatures that are initially not show
more.
It should be obvious that common abstractions s
”stack” deliver far better results than a search for
mon programming term such as ”public”, but that is
in the nature of things. Hence, identifying situations
this technology can become helpful in practice in the
should also be on the research agenda as performin
meaningful evaluations that give a clear indication how
ful it is in terms of an increased development velocity
facilitating early completeness of software designs. In
tion, the following section discusses some technical re
directions we have identified so far in more detail.
5. ONGOING & FUTURE WORK
In the previous sections we have given an insight i
cent findings derived from preliminary experiments w
approach. Although we have presented a prototype
mentation which adds additional value to the Eclips
this is still closely tied to the coding phase of softw
velopment. Nevertheless, there is still potential for
enhancements of the approach and broadening the fu
ality from solely the implementation phase to the
phase as well has the potential to significantly boos
in the context of the early software life cycle. It sho
feasible to generate useful hints for class or objects va
(i.e. attributes) with similar techniques and it is eve
ceivable to recognize specific idioms in the source c
operations and to derive corresponding hints for d
Table 1: Exemplary interface recommendations.
Search Term(s) Averaged Interface #
Matrix add Matrix
≈ 90 msec transpose():Matrix; 45
8, 844 results add(Matrix):Matrix; 39
732 methods toString():String; 39
multiply(Matrix):Matrix; 35
add(Matrix):void; 27
swapRows():Matrix; 24
BinaryTree BinaryTree
≈ 50 msec isEmpty():boolean; 35
1, 273 results main(String[]):void; 27
387 methods toString():String; 24
size():int; 21
height():int; 14
makeEmpty():void; 12
Stack Stack
≈ 40 msec push(Object):void; 48
68, 718 results pop():Object; 47
113 methods isEmpty():boolean; 34
toString():String; 22
pop():int; 20
push(int):void; 20
Deck Deck
≈ 50 msec shuffle():void; 55
3, 238 results dealCard():Card; 23
323 methods toString():String; 19
getCard():Card; 17
cardsLeft():int; 16
main(String[]):void; 10
CreditCard CreditCard
≈ 40 msec getNumber():String; 30
1, 148 results getCardNumber():String; 22
229 methods toString():String; 20
setCardNumber(String):void; 13
getCardType():String; 13
setNumber(String):void; 12
In addition to that, the table shows in the right row how
often each signature appeared, while the left row includes
the information how much time the calculation of the inter-
face intersections required and how many unique signatures
respectively how many results were found for each query.
Our test system contained a dual core processor with 2.8
GHz and 6 GB RAM on which this algorithm works reason-
ably fast. In other words, its response time of far less than
a second is clearly sufficient to create recommendations for
a proactive design prompter on the fly.
4.2 Discussion
”stack” deliver far better results than a search for
mon programming term such as ”public”, but that is
in the nature of things. Hence, identifying situations
this technology can become helpful in practice in the
should also be on the research agenda as performin
meaningful evaluations that give a clear indication how
ful it is in terms of an increased development velocity
facilitating early completeness of software designs. In
tion, the following section discusses some technical re
directions we have identified so far in more detail.
5. ONGOING & FUTURE WORK
In the previous sections we have given an insight i
cent findings derived from preliminary experiments w
approach. Although we have presented a prototype
mentation which adds additional value to the Eclips
this is still closely tied to the coding phase of softw
velopment. Nevertheless, there is still potential for
enhancements of the approach and broadening the fu
ality from solely the implementation phase to the
phase as well has the potential to significantly boos
in the context of the early software life cycle. It sho
feasible to generate useful hints for class or objects va
(i.e. attributes) with similar techniques and it is eve
ceivable to recognize specific idioms in the source c
operations and to derive corresponding hints for d
ers such as ”other developers used two nested for lo
implement a bubblesort operation”. Since code-level
are only the smallest group in the common pattern c
cation by Buschmann et al. [5] it also seems feasible
the abstraction level and to recognize and recomme
sign or even architectural patterns that are common
together with a given concept in the future. As sh
another publication [14], Code Conjurer supports reu
ommendations based upon UML class diagrams draw
the help of appropriate Eclipse plug-ins. This featu
also be used in conjunction with our prototypical imp
tation of the design prompter. However, there is sp
further enhancements, such as the presentation of the
recommendations which is currently limited to ind
classes. Therefore, a future release of the plug-in will
UML representation of component design recommend
as well as automatically create diagrams showing m
classes and their relations. This will give developers a
of an architectural design, derived from components
Some occasional
methods:
variants?
Count same signatures for classes
with similar names
Variability
Feature
Feature Diagram
Mandatory vs. Optional features
Feature dependencies
Variants
Variation points
Binding
Domain instances
Optional vs. Alternative variants
Single vs. Multiple features
8/30
Variable features
Feature: unit/increment of functionality
9/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Required in all (Mandatory) or in some (Optional) products
Feature: unit/increment of functionality
9/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Required in all (Mandatory) or in some (Optional) products
Feature: unit/increment of functionality
9/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Required in all (Mandatory) or in some (Optional) products
Feature: unit/increment of functionality
9/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Required in all (Mandatory) or in some (Optional) products
Feature: unit/increment of functionality
9/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Required in all (Mandatory) or in some (Optional) products
Variable: if customization is required
Feature: unit/increment of functionality
10/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variable: if customization is required
Feature: unit/increment of functionality
10/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variable: if customization is required
Feature: unit/increment of functionality
10/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variable: if customization is required
Feature: unit/increment of functionality
10/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature: unit/increment of functionality
11/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Variable: if customization is required
Feature: unit/increment of functionality
11/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Variable: if customization is required
Feature: unit/increment of functionality
11/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Variable: if customization is required
Feature: unit/increment of functionality
11/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Variable: if customization is required
Feature: unit/increment of functionality
11/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Variable: if customization is required
Feature: unit/increment of functionality
11/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Variable: if customization is required
Feature: unit/increment of functionality
11/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Variable: if customization is required
Feature: unit/increment of functionality
11/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Variable: if customization is required
Variant: option available for a variable feature
YES: Mutually inclusive / NO:Mutually exclusive
Feature: unit/increment of functionality
Variable: if customization is required
12/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
YES: Mutually inclusive / NO:Mutually exclusive
Feature: unit/increment of functionality
Variable: if customization is required
12/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
YES: Mutually inclusive / NO:Mutually exclusive
Feature: unit/increment of functionality
Variable: if customization is required
12/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
YES: Mutually inclusive / NO:Mutually exclusive
Feature: unit/increment of functionality
Variable: if customization is required
12/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
YES: Mutually inclusive / NO:Mutually exclusive
Feature: unit/increment of functionality
Variable: if customization is required
12/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Can a variable feature have several variants?
YES: Multiple / NO: Single
YES: Mutually inclusive / NO:Mutually exclusive
Feature: unit/increment of functionality
Variable: if customization is required
12/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Variant: option available for a variable feature
Can a variable feature have several variants?
YES: Multiple / NO: Single
YES: Mutually inclusive / NO:Mutually exclusive
Feature: unit/increment of functionality
Variable: if customization is required
12/30
Required in all (Mandatory) or in some (Optional) products
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
13/30
[Faust SPE 03]
Their
source
code
repository
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
13/30
[Faust SPE 03]
Several
products of
the same
domain
Their
source
code
repository
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
13/30
local layer
regional layer
global layer
U
L
V
S
M
C
C
Utilization = Users of the SCE
Length = LOC
Complexity = McCabe
Volatility = 0.7 * changes last year
+ 0.3 * exp. changes this year
Specificity = LOCs per variation
Mitosis = % clone differences
[Faust SPE 03]
Several
products of
the same
domain
Their
source
code
repository
Metrics per SCE
- Placement of a
SCE: 	
mandatory/
optional features,
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
13/30
local layer
regional layer
global layer
U
L
V
S
M
C
C
Utilization = Users of the SCE
Length = LOC
Complexity = McCabe
Volatility = 0.7 * changes last year
+ 0.3 * exp. changes this year
Specificity = LOCs per variation
Mitosis = % clone differences
[Faust SPE 03]
Several
products of
the same
domain
Their
source
code
repository
Metrics per SCE
- Placement of a
SCE: 	
mandatory/
optional features,
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
13/30
local layer
regional layer
global layer
U
L
V
S
M
C
C
Utilization = Users of the SCE
Length = LOC
Complexity = McCabe
Volatility = 0.7 * changes last year
+ 0.3 * exp. changes this year
Specificity = LOCs per variation
Mitosis = % clone differences
X: Cannot identify dependencies 	
X: No support for refactoring
[Faust SPE 03]
Several
products of
the same
domain
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
14/30
[Mende CSMR 04]
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
14/30
One
product of
the domain
[Mende CSMR 04]
App. w. basic
functionality
of the
domain
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
14/30
One
product of
the domain
max(|f1|, |f2|)-LD(f1,f2)
|f1|
sim(f1,f2) =
FI: Identical Functions (sim=1)
FS: Similar Functions (0<sim<1)
|FI| = 1: Identical correspondence
|FI| > 1: Multiple correspondence
|FI| = 0 & |FS| = 1: Single variant
|FI| = 0 & |FS| > 1: Multiple variant
|FI| = 0 & |FS| =0: No correspondence
LD = Levenshtein Distance
[Mende CSMR 04]
App. w. basic
functionality
of the
domain
Metrics per SCE -
How to merge a
variant into the
basic product:
mandatory/
optional functions,
single/multiple
variable features
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
14/30
One
product of
the domain
max(|f1|, |f2|)-LD(f1,f2)
|f1|
sim(f1,f2) =
FI: Identical Functions (sim=1)
FS: Similar Functions (0<sim<1)
|FI| = 1: Identical correspondence
|FI| > 1: Multiple correspondence
|FI| = 0 & |FS| = 1: Single variant
|FI| = 0 & |FS| > 1: Multiple variant
|FI| = 0 & |FS| =0: No correspondence
LD = Levenshtein Distance
[Mende CSMR 04]
App. w. basic
functionality
of the
domain
Metrics per SCE -
How to merge a
variant into the
basic product:
mandatory/
optional functions,
single/multiple
variable features
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
14/30
X: No support for non-corresponding code	
X: Cannot identify dependencies	
X: No link to feature diagram
One
product of
the domain
max(|f1|, |f2|)-LD(f1,f2)
|f1|
sim(f1,f2) =
FI: Identical Functions (sim=1)
FS: Similar Functions (0<sim<1)
|FI| = 1: Identical correspondence
|FI| > 1: Multiple correspondence
|FI| = 0 & |FS| = 1: Single variant
|FI| = 0 & |FS| > 1: Multiple variant
|FI| = 0 & |FS| =0: No correspondence
LD = Levenshtein Distance
[Mende CSMR 04]
App. w. basic
functionality
of the
domain
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
15/30
[Frenzel WCRE 07]
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
15/30
Several
products of
the domain
[Frenzel WCRE 07]
App. w. basic
functionality
of the
domain
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
15/30
Several
products of
the domain
LD(f1,f2)
max(|f1|, |f2|)
sim(s1,s2) = 1-
Mn,i ∩ Mn,j
Mn,i ∪ Mn,j
Mn=
Dn,i ∩ Dn,j
Dn,i ∪ Dn,j
Dn=
Mni = Modules for variant i at
nesting n
Dni = Dependencies for
variant i at nesting n
IF entities are identical->‘kernel’
IF variant in all products -> ‘variant’
IF variant in some products -> ‘optional’
[Frenzel WCRE 07]
App. w. basic
functionality
of the
domain
Metrics per SCE -
How to merge
several variants
into a product line:
mandatory/
optional functions,
single/multiple
variable features
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
15/30
Several
products of
the domain
LD(f1,f2)
max(|f1|, |f2|)
sim(s1,s2) = 1-
Mn,i ∩ Mn,j
Mn,i ∪ Mn,j
Mn=
Dn,i ∩ Dn,j
Dn,i ∪ Dn,j
Dn=
Mni = Modules for variant i at
nesting n
Dni = Dependencies for
variant i at nesting n
IF entities are identical->‘kernel’
IF variant in all products -> ‘variant’
IF variant in some products -> ‘optional’
[Frenzel WCRE 07]
App. w. basic
functionality
of the
domain
Metrics per SCE -
How to merge
several variants
into a product line:
mandatory/
optional functions,
single/multiple
variable features
Mining for variable &
mandatory features
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
15/30
X: No support for non-corresponding code	
X: Cannot identify dependencies	
X: No link to feature diagram
Several
products of
the domain
LD(f1,f2)
max(|f1|, |f2|)
sim(s1,s2) = 1-
Mn,i ∩ Mn,j
Mn,i ∪ Mn,j
Mn=
Dn,i ∩ Dn,j
Dn,i ∪ Dn,j
Dn=
Mni = Modules for variant i at
nesting n
Dni = Dependencies for
variant i at nesting n
IF entities are identical->‘kernel’
IF variant in all products -> ‘variant’
IF variant in some products -> ‘optional’
[Frenzel WCRE 07]
App. w. basic
functionality
of the
domain
Variability
Feature
Feature Diagram
Mandatory vs. Optional features
Feature dependencies
Variants
Variation points
Binding
Domain instances
Optional vs. Alternative variants
Single vs. Multiple features
16/30
Variable features
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature
Diagram
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
YES: Optional / NO:Alternative variants
Is the corresponding
variable feature required?
17/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature
Diagram
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
YES: Optional / NO:Alternative variants
Is the corresponding
variable feature required?
17/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature
Diagram
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
YES: Optional / NO:Alternative variants
Is the corresponding
variable feature required?
17/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature
Diagram
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
YES: Optional / NO:Alternative variants
Is the corresponding
variable feature required?
17/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature
Diagram
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
YES: Optional / NO:Alternative variants
Is the corresponding
variable feature required?
17/30
18/30
[Antiweckz JASE 09]
!
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
18/30
Several
products of
the domain
Starting
SCEs
[Antiweckz JASE 09]
!
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
18/30
Several
products of
the domain
Starting
SCEs
![1] typedThread <fieldOfType: ’Thread’>
[1] initializesThread <assignedNew: ’Thread(IRunnable)’>
[1] nullifiesThread <assignedNull>
[0..*] parameter <callsReceived: ’getParameter(String)’>
[0..1] name (String) <valueOfArg: 1>
[1] providesParameterInfo <methods: ’getParameterInfo()’>
Table 4 Fragment of the metamodel of the Struts FSML
FSML Feature <Pattern Expression>
[0..*] Action <class>
![1] extendsAction <assignableTo: ’Action’>
[0..1] extendsDispatchAction <assignableTo: ’DispatchAction’>
[0..*] actionMethod <methods: ’*(ActionMapping, ActionForm, [. . . ], [. . . ])’>
[0..1] overridesExecute <methods: ’execute(ActionMapping, ActionForm, [. . . ])’>
[0..*] forwardImpl <callsTo: ’findForward(String)’>
[1] name (String) <valueOfArg: 1>
to. Values of the parameters can also be the patterns that other features corresp
to, in which case, the features need to be specified using path expressions. For ex
ple, the pattern expression attached to the feature deregistersSameObjec
Table 3 requires two method calls and uses paths “../../registers” and “
to retrieve calls that the features registers and deregisters correspond t
We present the metamodels for two reasons: (i) to give the reader example
[Antiweckz JASE 09]
!
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
Mapping of entities → operations
done over the data (SCqueries)
Feature diagram
of the domain:
mandatory/
optional features,
single/multiple
variable features
18/30
Several
products of
the domain
Starting
SCEs
![1] typedThread <fieldOfType: ’Thread’>
[1] initializesThread <assignedNew: ’Thread(IRunnable)’>
[1] nullifiesThread <assignedNull>
[0..*] parameter <callsReceived: ’getParameter(String)’>
[0..1] name (String) <valueOfArg: 1>
[1] providesParameterInfo <methods: ’getParameterInfo()’>
Table 4 Fragment of the metamodel of the Struts FSML
FSML Feature <Pattern Expression>
[0..*] Action <class>
![1] extendsAction <assignableTo: ’Action’>
[0..1] extendsDispatchAction <assignableTo: ’DispatchAction’>
[0..*] actionMethod <methods: ’*(ActionMapping, ActionForm, [. . . ], [. . . ])’>
[0..1] overridesExecute <methods: ’execute(ActionMapping, ActionForm, [. . . ])’>
[0..*] forwardImpl <callsTo: ’findForward(String)’>
[1] name (String) <valueOfArg: 1>
to. Values of the parameters can also be the patterns that other features corresp
to, in which case, the features need to be specified using path expressions. For ex
ple, the pattern expression attached to the feature deregistersSameObjec
Table 3 requires two method calls and uses paths “../../registers” and “
to retrieve calls that the features registers and deregisters correspond t
We present the metamodels for two reasons: (i) to give the reader example
[Antiweckz JASE 09]
!
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
Mapping of entities → operations
done over the data (SCqueries)
Feature diagram
of the domain:
mandatory/
optional features,
single/multiple
variable features
18/30
X: Low-level diagram	
X: Cannot identify dependencies	
X: Results depend on the variety of the products of the domain
Several
products of
the domain
Starting
SCEs
![1] typedThread <fieldOfType: ’Thread’>
[1] initializesThread <assignedNew: ’Thread(IRunnable)’>
[1] nullifiesThread <assignedNull>
[0..*] parameter <callsReceived: ’getParameter(String)’>
[0..1] name (String) <valueOfArg: 1>
[1] providesParameterInfo <methods: ’getParameterInfo()’>
Table 4 Fragment of the metamodel of the Struts FSML
FSML Feature <Pattern Expression>
[0..*] Action <class>
![1] extendsAction <assignableTo: ’Action’>
[0..1] extendsDispatchAction <assignableTo: ’DispatchAction’>
[0..*] actionMethod <methods: ’*(ActionMapping, ActionForm, [. . . ], [. . . ])’>
[0..1] overridesExecute <methods: ’execute(ActionMapping, ActionForm, [. . . ])’>
[0..*] forwardImpl <callsTo: ’findForward(String)’>
[1] name (String) <valueOfArg: 1>
to. Values of the parameters can also be the patterns that other features corresp
to, in which case, the features need to be specified using path expressions. For ex
ple, the pattern expression attached to the feature deregistersSameObjec
Table 3 requires two method calls and uses paths “../../registers” and “
to retrieve calls that the features registers and deregisters correspond t
We present the metamodels for two reasons: (i) to give the reader example
[Antiweckz JASE 09]
!
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
Mapping of entities → operations
done over the data (SCqueries)
19/30
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Yang WCRE 09] !
19/30
Several
products of
the domain
Mapping of
concepts
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Yang WCRE 09] !
Consolidate
features
19/30
Several
products of
the domain
Mapping of
concepts
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Yang WCRE 09] !
'98&15&80+&9+31=+9+;&5+'8.9+&>89.38.9+&S+519+&9+31$>89.38"1$
Consolidate
features
Mapping of entities → operations
done over the data (DB access) +
FCA
Feature diagram
of the domain:
mandatory/
optional features, 	
exclusive/
inclusive variants
19/30
Several
products of
the domain
Mapping of
concepts
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Yang WCRE 09] !
'98&15&80+&9+31=+9+;&5+'8.9+&>89.38.9+&S+519+&9+31$>89.38"1$
Consolidate
features
Mapping of entities → operations
done over the data (DB access) +
FCA
Feature diagram
of the domain:
mandatory/
optional features, 	
exclusive/
inclusive variants
19/30
X: Cannot identify dependencies	
X: Results depend on the variety of the products of the domain
Several
products of
the domain
Mapping of
concepts
Mining for
feature diagrams
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Yang WCRE 09] !
'98&15&80+&9+31=+9+;&5+'8.9+&>89.38.9+&S+519+&9+31$>89.38"1$
Consolidate
features
Mapping of entities → operations
done over the data (DB access) +
FCA
Variability
Feature
Feature Diagram
Mandatory vs. Optional features
Feature dependencies
Variants
Variation points
Binding
Domain instances
Optional vs. Alternative variants
Single vs. Multiple features
20/30
Variable features
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature
Diagram
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
Are there constraints
(dependencies) among them ?
Requires: 1st = 2nd one /
Excludes: 1st or 2nd
21/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature
Diagram
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
Are there constraints
(dependencies) among them ?
Requires: 1st = 2nd one /
Excludes: 1st or 2nd
21/30
Car
Transmission Engine
Manual
Suspension
Gasoline
Car
Horsepower
Transmission Engine Extras
Manual Gasoline
Air
Conditioning
Cruise
Suspension
Car
Horsepower
Transmission Engine Extras
Automatic GasolineElectric
Air
Conditioning
Cruise
Suspension
basic car
motor-head car
executive car
eco-aware car
Car
Transmission Engine Extras
Automatic Electric Cruise
Suspension
Feature
Diagram
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
Are there constraints
(dependencies) among them ?
Requires: 1st = 2nd one /
Excludes: 1st or 2nd
21/30
22/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Lai OOPSLA 99] !
Single app.
Mapping of
tokens to
features &
files to
features
22/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Lai OOPSLA 99] !
Single app.
Mapping of
tokens to
features &
files to
features
22/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Lai OOPSLA 99] !
Spread (f) = 5 / 20	
Tangle(f) =250/500	
Density(f) = 500/3
.* x 500
.... x 250
Overlap	
Order
✔ ✘
.. ....✔ ✘
Metrics per feature
Variability analysis:
(un)acceptable
feature tangling
Single app.
Mapping of
tokens to
features &
files to
features
22/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Lai OOPSLA 99] !
Spread (f) = 5 / 20	
Tangle(f) =250/500	
Density(f) = 500/3
.* x 500
.... x 250
Overlap	
Order
✔ ✘
.. ....✔ ✘
Metrics per feature
Variability analysis:
(un)acceptable
feature tangling
X: Cannot mine for require & exclude relations
Single app.
Mapping of
tokens to
features &
files to
features
22/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Lai OOPSLA 99] !
Spread (f) = 5 / 20	
Tangle(f) =250/500	
Density(f) = 500/3
.* x 500
.... x 250
Overlap	
Order
✔ ✘
.. ....✔ ✘
Metrics per feature
23/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Egyed ICSE 01]!
Traces of
several
scenarios
(execution
of feature)
23/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Egyed ICSE 01]!
Traces of
several
scenarios
(execution
of feature)
23/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
scenarios from Table 1 using the Rational PureCoverage
tool. By a footprint we mean the classes that were executed
while testing a scenario. The numbers in Table 2 indicate
how many methods of each class were used. For instance,
scenario “A” used ten methods of the class CAboutDlg and
three methods of the class CSettingsDlg. Table 2 does not
display the actual methods in order to reduce the complex-
ity of this example (the footprint graph shown later would
otherwise get too big). Nevertheless, by only using classes
the generated traces will still be useful, albeit, course-
grained. If more fine-grained traces are needed then trace
quires only a fairly limited amount of hypothe
information; otherwise, the cost of using it wo
high. Table 4 and Table 3 show a list of twelve
hypothesized. We assume that most traces are a
tially correct; however, our approach can pinp
traces plus create new ones by matching the de
information against the observed trace informat
traces, together with the trace observations that
matically generated (Table 2) can now be used
reasoning.
5 ATOMIZING
In order to reason about traces and how the
model elements, we need to intertwine scenar
elements, their footprints, and hypothesized trac
tion. In order to do this, we have devised a footp
Figure 3 depicts the complete footprint graph fo
scenarios in Table 1. This graph also forms the
for the remaining activities of our approach: G
and Refining.
One property that graph has is that footprints o
trace information are split up into as many nodes
to explicitly represent all possible overlaps betw
ios (overlaps are footprints that any two scenar
Table 2. Observeable Scenario Footprints
A B C D E F G H
CAboutDlg 0 10 10
CILLDB 1 3 2 2 2 4
CILLDBSet 2 4 4
mailreader 3 3 4 7 1 1 5 1
parsing 4 6 6
POP3 5 8 10 2 2 2 11 1
CPOP3Dlg 6 4 4 1 4 4 4
CAPP 7 1 1
CMainWin 8 3 5 5 3 6 7 5
CSettingsDlg 9 15
Class Scenario
[Egyed ICSE 01]!
Traces of
several
scenarios
(execution
of feature)
23/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
scenarios from Table 1 using the Rational PureCoverage
tool. By a footprint we mean the classes that were executed
while testing a scenario. The numbers in Table 2 indicate
how many methods of each class were used. For instance,
scenario “A” used ten methods of the class CAboutDlg and
three methods of the class CSettingsDlg. Table 2 does not
display the actual methods in order to reduce the complex-
ity of this example (the footprint graph shown later would
otherwise get too big). Nevertheless, by only using classes
the generated traces will still be useful, albeit, course-
grained. If more fine-grained traces are needed then trace
quires only a fairly limited amount of hypothe
information; otherwise, the cost of using it wo
high. Table 4 and Table 3 show a list of twelve
hypothesized. We assume that most traces are a
tially correct; however, our approach can pinp
traces plus create new ones by matching the de
information against the observed trace informat
traces, together with the trace observations that
matically generated (Table 2) can now be used
reasoning.
5 ATOMIZING
In order to reason about traces and how the
model elements, we need to intertwine scenar
elements, their footprints, and hypothesized trac
tion. In order to do this, we have devised a footp
Figure 3 depicts the complete footprint graph fo
scenarios in Table 1. This graph also forms the
for the remaining activities of our approach: G
and Refining.
One property that graph has is that footprints o
trace information are split up into as many nodes
to explicitly represent all possible overlaps betw
ios (overlaps are footprints that any two scenar
Table 2. Observeable Scenario Footprints
A B C D E F G H
CAboutDlg 0 10 10
CILLDB 1 3 2 2 2 4
CILLDBSet 2 4 4
mailreader 3 3 4 7 1 1 5 1
parsing 4 6 6
POP3 5 8 10 2 2 2 11 1
CPOP3Dlg 6 4 4 1 4 4 4
CAPP 7 1 1
CMainWin 8 3 5 5 3 6 7 5
CSettingsDlg 9 15
Class Scenario
Overlap
[Egyed ICSE 01]!
Traces of
several
scenarios
(execution
of feature)
23/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
scenarios from Table 1 using the Rational PureCoverage
tool. By a footprint we mean the classes that were executed
while testing a scenario. The numbers in Table 2 indicate
how many methods of each class were used. For instance,
scenario “A” used ten methods of the class CAboutDlg and
three methods of the class CSettingsDlg. Table 2 does not
display the actual methods in order to reduce the complex-
ity of this example (the footprint graph shown later would
otherwise get too big). Nevertheless, by only using classes
the generated traces will still be useful, albeit, course-
grained. If more fine-grained traces are needed then trace
quires only a fairly limited amount of hypothe
information; otherwise, the cost of using it wo
high. Table 4 and Table 3 show a list of twelve
hypothesized. We assume that most traces are a
tially correct; however, our approach can pinp
traces plus create new ones by matching the de
information against the observed trace informat
traces, together with the trace observations that
matically generated (Table 2) can now be used
reasoning.
5 ATOMIZING
In order to reason about traces and how the
model elements, we need to intertwine scenar
elements, their footprints, and hypothesized trac
tion. In order to do this, we have devised a footp
Figure 3 depicts the complete footprint graph fo
scenarios in Table 1. This graph also forms the
for the remaining activities of our approach: G
and Refining.
One property that graph has is that footprints o
trace information are split up into as many nodes
to explicitly represent all possible overlaps betw
ios (overlaps are footprints that any two scenar
Table 2. Observeable Scenario Footprints
A B C D E F G H
CAboutDlg 0 10 10
CILLDB 1 3 2 2 2 4
CILLDBSet 2 4 4
mailreader 3 3 4 7 1 1 5 1
parsing 4 6 6
POP3 5 8 10 2 2 2 11 1
CPOP3Dlg 6 4 4 1 4 4 4
CAPP 7 1 1
CMainWin 8 3 5 5 3 6 7 5
CSettingsDlg 9 15
Class Scenario
Overlap Sub-feature
[Egyed ICSE 01]!
Traces of
several
scenarios
(execution
of feature)
23/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
scenarios from Table 1 using the Rational PureCoverage
tool. By a footprint we mean the classes that were executed
while testing a scenario. The numbers in Table 2 indicate
how many methods of each class were used. For instance,
scenario “A” used ten methods of the class CAboutDlg and
three methods of the class CSettingsDlg. Table 2 does not
display the actual methods in order to reduce the complex-
ity of this example (the footprint graph shown later would
otherwise get too big). Nevertheless, by only using classes
the generated traces will still be useful, albeit, course-
grained. If more fine-grained traces are needed then trace
quires only a fairly limited amount of hypothe
information; otherwise, the cost of using it wo
high. Table 4 and Table 3 show a list of twelve
hypothesized. We assume that most traces are a
tially correct; however, our approach can pinp
traces plus create new ones by matching the de
information against the observed trace informat
traces, together with the trace observations that
matically generated (Table 2) can now be used
reasoning.
5 ATOMIZING
In order to reason about traces and how the
model elements, we need to intertwine scenar
elements, their footprints, and hypothesized trac
tion. In order to do this, we have devised a footp
Figure 3 depicts the complete footprint graph fo
scenarios in Table 1. This graph also forms the
for the remaining activities of our approach: G
and Refining.
One property that graph has is that footprints o
trace information are split up into as many nodes
to explicitly represent all possible overlaps betw
ios (overlaps are footprints that any two scenar
Table 2. Observeable Scenario Footprints
A B C D E F G H
CAboutDlg 0 10 10
CILLDB 1 3 2 2 2 4
CILLDBSet 2 4 4
mailreader 3 3 4 7 1 1 5 1
parsing 4 6 6
POP3 5 8 10 2 2 2 11 1
CPOP3Dlg 6 4 4 1 4 4 4
CAPP 7 1 1
CMainWin 8 3 5 5 3 6 7 5
CSettingsDlg 9 15
Class Scenario
Overlap Sub-feature Equivalence
[Egyed ICSE 01]!
Variability analysis:
Overlap, sub-
features,
equivalence
Traces of
several
scenarios
(execution
of feature)
23/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
scenarios from Table 1 using the Rational PureCoverage
tool. By a footprint we mean the classes that were executed
while testing a scenario. The numbers in Table 2 indicate
how many methods of each class were used. For instance,
scenario “A” used ten methods of the class CAboutDlg and
three methods of the class CSettingsDlg. Table 2 does not
display the actual methods in order to reduce the complex-
ity of this example (the footprint graph shown later would
otherwise get too big). Nevertheless, by only using classes
the generated traces will still be useful, albeit, course-
grained. If more fine-grained traces are needed then trace
quires only a fairly limited amount of hypothe
information; otherwise, the cost of using it wo
high. Table 4 and Table 3 show a list of twelve
hypothesized. We assume that most traces are a
tially correct; however, our approach can pinp
traces plus create new ones by matching the de
information against the observed trace informat
traces, together with the trace observations that
matically generated (Table 2) can now be used
reasoning.
5 ATOMIZING
In order to reason about traces and how the
model elements, we need to intertwine scenar
elements, their footprints, and hypothesized trac
tion. In order to do this, we have devised a footp
Figure 3 depicts the complete footprint graph fo
scenarios in Table 1. This graph also forms the
for the remaining activities of our approach: G
and Refining.
One property that graph has is that footprints o
trace information are split up into as many nodes
to explicitly represent all possible overlaps betw
ios (overlaps are footprints that any two scenar
Table 2. Observeable Scenario Footprints
A B C D E F G H
CAboutDlg 0 10 10
CILLDB 1 3 2 2 2 4
CILLDBSet 2 4 4
mailreader 3 3 4 7 1 1 5 1
parsing 4 6 6
POP3 5 8 10 2 2 2 11 1
CPOP3Dlg 6 4 4 1 4 4 4
CAPP 7 1 1
CMainWin 8 3 5 5 3 6 7 5
CSettingsDlg 9 15
Class Scenario
Overlap Sub-feature Equivalence
[Egyed ICSE 01]!
Variability analysis:
Overlap, sub-
features,
equivalence
X: Cannot mine for require & exclude relations
Traces of
several
scenarios
(execution
of feature)
23/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
scenarios from Table 1 using the Rational PureCoverage
tool. By a footprint we mean the classes that were executed
while testing a scenario. The numbers in Table 2 indicate
how many methods of each class were used. For instance,
scenario “A” used ten methods of the class CAboutDlg and
three methods of the class CSettingsDlg. Table 2 does not
display the actual methods in order to reduce the complex-
ity of this example (the footprint graph shown later would
otherwise get too big). Nevertheless, by only using classes
the generated traces will still be useful, albeit, course-
grained. If more fine-grained traces are needed then trace
quires only a fairly limited amount of hypothe
information; otherwise, the cost of using it wo
high. Table 4 and Table 3 show a list of twelve
hypothesized. We assume that most traces are a
tially correct; however, our approach can pinp
traces plus create new ones by matching the de
information against the observed trace informat
traces, together with the trace observations that
matically generated (Table 2) can now be used
reasoning.
5 ATOMIZING
In order to reason about traces and how the
model elements, we need to intertwine scenar
elements, their footprints, and hypothesized trac
tion. In order to do this, we have devised a footp
Figure 3 depicts the complete footprint graph fo
scenarios in Table 1. This graph also forms the
for the remaining activities of our approach: G
and Refining.
One property that graph has is that footprints o
trace information are split up into as many nodes
to explicitly represent all possible overlaps betw
ios (overlaps are footprints that any two scenar
Table 2. Observeable Scenario Footprints
A B C D E F G H
CAboutDlg 0 10 10
CILLDB 1 3 2 2 2 4
CILLDBSet 2 4 4
mailreader 3 3 4 7 1 1 5 1
parsing 4 6 6
POP3 5 8 10 2 2 2 11 1
CPOP3Dlg 6 4 4 1 4 4 4
CAPP 7 1 1
CMainWin 8 3 5 5 3 6 7 5
CSettingsDlg 9 15
Class Scenario
Overlap Sub-feature Equivalence
[Egyed ICSE 01]!
24/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Jaring PhD 05] ⚖!
24/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Jaring PhD 05] ⚖!
Code that
varies
Variables
representing
variants (vxm vyn)
Variables
representing
variation points
(vpx vpy)
24/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
IF !vpx ➜ vpy
IF vpx ➜ (vpy,vyn)
IF (vpx,vxm) ➜ !vpy
IF (vpx,vxm) ➜ (vpy,vyn)
Dependencies
variation points -
variants:
[Jaring PhD 05] ⚖!
Code that
varies
Variables
representing
variants (vxm vyn)
Variables
representing
variation points
(vpx vpy)
Variability analysis:
configuration
dependencies
24/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
IF !vpx ➜ vpy
IF vpx ➜ (vpy,vyn)
IF (vpx,vxm) ➜ !vpy
IF (vpx,vxm) ➜ (vpy,vyn)
Dependencies
variation points -
variants:
[Jaring PhD 05] ⚖!
Code that
varies
Variables
representing
variants (vxm vyn)
Variables
representing
variation points
(vpx vpy)
Variability analysis:
configuration
dependencies
X: Need a specific syntax for the configuration of the products	
X: Just define when the relations occur. No mining proposed.
24/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
IF !vpx ➜ vpy
IF vpx ➜ (vpy,vyn)
IF (vpx,vxm) ➜ !vpy
IF (vpx,vxm) ➜ (vpy,vyn)
Dependencies
variation points -
variants:
[Jaring PhD 05] ⚖!
Code that
varies
Variables
representing
variants (vxm vyn)
Variables
representing
variation points
(vpx vpy)
25/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Czarnecki PLC 08]
on
start off
init on
must override destroy off
stop off
Applet
paint [75%] start [59%]
destroy [42%] stop [53%]
init [97%]
Applet
destroy encourages init
start encourages stop
stop encourages start
init encourages destroy
stop given start [84%]
start given stop [97%]
paint given destroy [88%]
paint given stop [88%]
init given start [97%]
init given paint [98%]
(a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration
Figure 2. A PFM of Java applets: specification, mining, and configuration
rt from being interpreted as belief measures, prob-
s can also be given a frequentist interpretation, in
a probability is viewed as the relative frequency of
a particular outcome of an experiment in a large
of trials. This perspective on probability naturally
now included with complete certainty. The other bars show
the probabilities of the remaining features. This could of
course be visualized differently; for example by updating
the most probable defaults in a form, or by prioritizing sev-
eral most likely choices at the top of a drop-down list.
⚖!
Several
products of
the domain
25/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Czarnecki PLC 08]
on
start off
init on
must override destroy off
stop off
Applet
paint [75%] start [59%]
destroy [42%] stop [53%]
init [97%]
Applet
destroy encourages init
start encourages stop
stop encourages start
init encourages destroy
stop given start [84%]
start given stop [97%]
paint given destroy [88%]
paint given stop [88%]
init given start [97%]
init given paint [98%]
(a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration
Figure 2. A PFM of Java applets: specification, mining, and configuration
rt from being interpreted as belief measures, prob-
s can also be given a frequentist interpretation, in
a probability is viewed as the relative frequency of
a particular outcome of an experiment in a large
of trials. This perspective on probability naturally
now included with complete certainty. The other bars show
the probabilities of the remaining features. This could of
course be visualized differently; for example by updating
the most probable defaults in a form, or by prioritizing sev-
eral most likely choices at the top of a drop-down list.
⚖!
Mapping of
SCEs to
feature
diagram
Several
products of
the domain
25/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Czarnecki PLC 08]
on
start off
init on
must override destroy off
stop off
Applet
paint [75%] start [59%]
destroy [42%] stop [53%]
init [97%]
Applet
destroy encourages init
start encourages stop
stop encourages start
init encourages destroy
stop given start [84%]
start given stop [97%]
paint given destroy [88%]
paint given stop [88%]
init given start [97%]
init given paint [98%]
(a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration
Figure 2. A PFM of Java applets: specification, mining, and configuration
rt from being interpreted as belief measures, prob-
s can also be given a frequentist interpretation, in
a probability is viewed as the relative frequency of
a particular outcome of an experiment in a large
of trials. This perspective on probability naturally
now included with complete certainty. The other bars show
the probabilities of the remaining features. This could of
course be visualized differently; for example by updating
the most probable defaults in a form, or by prioritizing sev-
eral most likely choices at the top of a drop-down list.
Association rules = belief 	
(frequent interpretation)
⚖!
Mapping of
SCEs to
feature
diagram
Several
products of
the domain
25/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Czarnecki PLC 08]
on
start off
init on
must override destroy off
stop off
Applet
paint [75%] start [59%]
destroy [42%] stop [53%]
init [97%]
Applet
destroy encourages init
start encourages stop
stop encourages start
init encourages destroy
stop given start [84%]
start given stop [97%]
paint given destroy [88%]
paint given stop [88%]
init given start [97%]
init given paint [98%]
(a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration
Figure 2. A PFM of Java applets: specification, mining, and configuration
rt from being interpreted as belief measures, prob-
s can also be given a frequentist interpretation, in
a probability is viewed as the relative frequency of
a particular outcome of an experiment in a large
of trials. This perspective on probability naturally
now included with complete certainty. The other bars show
the probabilities of the remaining features. This could of
course be visualized differently; for example by updating
the most probable defaults in a form, or by prioritizing sev-
eral most likely choices at the top of a drop-down list.
p (A|B) = p (AB) / p(A)
= (A ∩ B /A∪B) / (A)
req = p(A|B)
exc = p(!A|B)
⚖!
Mapping of
SCEs to
feature
diagram
Feature diagram of
the domain:
mandatory/optional
features, 	
exclusive/inclusive
variants
Several
products of
the domain
25/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Czarnecki PLC 08]
on
start off
init on
must override destroy off
stop off
Applet
paint [75%] start [59%]
destroy [42%] stop [53%]
init [97%]
Applet
destroy encourages init
start encourages stop
stop encourages start
init encourages destroy
stop given start [84%]
start given stop [97%]
paint given destroy [88%]
paint given stop [88%]
init given start [97%]
init given paint [98%]
(a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration
Figure 2. A PFM of Java applets: specification, mining, and configuration
rt from being interpreted as belief measures, prob-
s can also be given a frequentist interpretation, in
a probability is viewed as the relative frequency of
a particular outcome of an experiment in a large
of trials. This perspective on probability naturally
now included with complete certainty. The other bars show
the probabilities of the remaining features. This could of
course be visualized differently; for example by updating
the most probable defaults in a form, or by prioritizing sev-
eral most likely choices at the top of a drop-down list.
p (A|B) = p (AB) / p(A)
= (A ∩ B /A∪B) / (A)
req = p(A|B)
exc = p(!A|B)
⚖!
Mapping of
SCEs to
feature
diagram
Feature diagram of
the domain:
mandatory/optional
features, 	
exclusive/inclusive
variants
X: Results depend on the variety of the products of the domain
Several
products of
the domain
25/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Czarnecki PLC 08]
on
start off
init on
must override destroy off
stop off
Applet
paint [75%] start [59%]
destroy [42%] stop [53%]
init [97%]
Applet
destroy encourages init
start encourages stop
stop encourages start
init encourages destroy
stop given start [84%]
start given stop [97%]
paint given destroy [88%]
paint given stop [88%]
init given start [97%]
init given paint [98%]
(a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration
Figure 2. A PFM of Java applets: specification, mining, and configuration
rt from being interpreted as belief measures, prob-
s can also be given a frequentist interpretation, in
a probability is viewed as the relative frequency of
a particular outcome of an experiment in a large
of trials. This perspective on probability naturally
now included with complete certainty. The other bars show
the probabilities of the remaining features. This could of
course be visualized differently; for example by updating
the most probable defaults in a form, or by prioritizing sev-
eral most likely choices at the top of a drop-down list.
p (A|B) = p (AB) / p(A)
= (A ∩ B /A∪B) / (A)
req = p(A|B)
exc = p(!A|B)
⚖!
Mapping of
SCEs to
feature
diagram
26/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Parra ECSA 10] ⚖!
Several
products of
the domain
26/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Parra ECSA 10] ⚖!
Several
products of
the domain
26/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Parra ECSA 10]
Model
A
Aspect or Var. feature
B
C
⚖!
Several
products of
the domain
26/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Parra ECSA 10]
Model
A
Var. points
Aspect or Var. feature
B
C
-Pointcuts
⚖!
Several
products of
the domain
26/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Parra ECSA 10]
Model
A
Var. points
Aspect or Var. feature
B
C
-Pointcuts-Advices
-Variants
⚖!
Several
products of
the domain
26/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Parra ECSA 10]
Model
A
Var. points
Aspect or Var. feature
B
C
-Pointcuts-Advices
-Variants
A reqs B
pc (A) ∩ m(B)
B exc C
pc (B) ∩ pc(C)
⚖!
Feature diagram
of the domain:
mandatory/
optional features,
single/multiple
variable features
Several
products of
the domain
26/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Parra ECSA 10]
Model
A
Var. points
Aspect or Var. feature
B
C
-Pointcuts-Advices
-Variants
A reqs B
pc (A) ∩ m(B)
B exc C
pc (B) ∩ pc(C)
⚖!
Feature diagram
of the domain:
mandatory/
optional features,
single/multiple
variable features
X:Assumes implementation with aspects. 	
X: Used to detect order or invalid configs.
Several
products of
the domain
26/30
Mining for variability
dependencies
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
[Parra ECSA 10]
Model
A
Var. points
Aspect or Var. feature
B
C
-Pointcuts-Advices
-Variants
A reqs B
pc (A) ∩ m(B)
B exc C
pc (B) ∩ pc(C)
⚖!
Variability
Feature
Feature Diagram
Mandatory vs. Optional features
Feature dependencies
Variants
Variation points
Binding
Domain instances
Optional vs. Alternative variants
Single vs. Multiple features
27/30
Variable features
Variant: option available for a variable feature
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
Feature: unit/increment of functionality
Mandatory: required in all products
Variable: customization required
Variation point: placeholder that stores the variant of a variable
feature
Binding: assigning a variant to a variation point
?
28/30
Mining for variation
points and variants
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
29/30
[Thummalapenta MSR 08]!
Several
products using
the same
framework	
(i.e. of the same
domain)
Mining for variation
points and variants
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
29/30
[Thummalapenta MSR 08]!
Several
products using
the same
framework	
(i.e. of the same
domain)
Mining for variation
points and variants
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
29/30
otherwise
Set type of Ci to TEMPLATE;
}
5:Group Ci of the same type into hierarchies based on inheritance;
6:Associate hook hierarchies to template hierarchies;
7:Define dependencies between template hierarchies;
8:Output hook and template hierarchies as hotspot hierarchies;
Fig. 5. Algorithm used for detecting hotspots through computed
UsageMetrics
pr
m
an
cl
ho
te
sh
cl
cl
ba
a
cl
hi
cl
st
Y
w
de
A
tw
fie
if
cl
de
fo
us
SB
IN=instantiations
EX=extensions
OV=overrides
IM=implementations
UM=usages (+ above)
rank & classify SCEs in the
framework based on metrics:
[Thummalapenta MSR 08]!
How to extend a
framework: 	
hotspots/hooks ➜ 	
variation points	
cold-spots/templates ➜ 	
mandatory part of the
variable feature	
users of hooks ➜ 	
variants
Several
products using
the same
framework	
(i.e. of the same
domain)
Mining for variation
points and variants
Car
Horsepower
Transmission Engine Extras
Automatic Manual GasolineElectric
Requires
Excludes
Air
Conditioning
Cruise
Mandatory
Optional
Exclusive
Inclusive
Suspension
29/30
otherwise
Set type of Ci to TEMPLATE;
}
5:Group Ci of the same type into hierarchies based on inheritance;
6:Associate hook hierarchies to template hierarchies;
7:Define dependencies between template hierarchies;
8:Output hook and template hierarchies as hotspot hierarchies;
Fig. 5. Algorithm used for detecting hotspots through computed
UsageMetrics
pr
m
an
cl
ho
te
sh
cl
cl
ba
a
cl
hi
cl
st
Y
w
de
A
tw
fie
if
cl
de
fo
us
SB
IN=instantiations
EX=extensions
OV=overrides
IM=implementations
UM=usages (+ above)
rank & classify SCEs in the
framework based on metrics:
[Thummalapenta MSR 08]!
An overview of techniques for detecting software variability concepts in source code
An overview of techniques for detecting software variability concepts in source code

More Related Content

Viewers also liked

Canvi climàtic: Efectes i percepció social
Canvi climàtic: Efectes i percepció socialCanvi climàtic: Efectes i percepció social
Canvi climàtic: Efectes i percepció social
Josep Lluís Ruiz
 
Tema 3 Dissolucions 1er batxillerat
Tema 3 Dissolucions 1er batxilleratTema 3 Dissolucions 1er batxillerat
Tema 3 Dissolucions 1er batxillerat
mmarti61
 
La Variació Lingüística
La Variació LingüísticaLa Variació Lingüística
La Variació Lingüística
Epsa Llengues
 
Unitat 2 la revolució industrial 2017-18
Unitat 2   la revolució industrial 2017-18Unitat 2   la revolució industrial 2017-18
Unitat 2 la revolució industrial 2017-18
jordimanero
 
Cycles de vie d'un logiciel
Cycles de vie d'un logicielCycles de vie d'un logiciel
Cycles de vie d'un logiciel
Rabia AZIZA
 
software engineering
software engineeringsoftware engineering
software engineering
ramyavarkala
 
Spécifications exécutables : Une pratique au cœur du développement Agile - Al...
Spécifications exécutables : Une pratique au cœur du développement Agile - Al...Spécifications exécutables : Une pratique au cœur du développement Agile - Al...
Spécifications exécutables : Une pratique au cœur du développement Agile - Al...
Agile Montréal
 
Scrum Guide 2011 - non officielle
Scrum Guide 2011 - non officielleScrum Guide 2011 - non officielle
Scrum Guide 2011 - non officielle
Pierre E. NEIS
 

Viewers also liked (20)

Comment être agile dans un contexte non lié aux TI ?
Comment être agile dans un contexte non lié aux TI ?Comment être agile dans un contexte non lié aux TI ?
Comment être agile dans un contexte non lié aux TI ?
 
Scrum Guide
Scrum GuideScrum Guide
Scrum Guide
 
area econòmica i patrimonial
area econòmica i patrimonialarea econòmica i patrimonial
area econòmica i patrimonial
 
Lliço5 Cinèticaquímica
Lliço5 CinèticaquímicaLliço5 Cinèticaquímica
Lliço5 Cinèticaquímica
 
Canvi climàtic: Efectes i percepció social
Canvi climàtic: Efectes i percepció socialCanvi climàtic: Efectes i percepció social
Canvi climàtic: Efectes i percepció social
 
Arquitectura de Computadores (II Bimestre)
Arquitectura de Computadores (II Bimestre)Arquitectura de Computadores (II Bimestre)
Arquitectura de Computadores (II Bimestre)
 
Tema 3 Dissolucions 1er batxillerat
Tema 3 Dissolucions 1er batxilleratTema 3 Dissolucions 1er batxillerat
Tema 3 Dissolucions 1er batxillerat
 
Les propietats dels materials i els assaigs d'estudi
Les propietats dels materials i els assaigs d'estudiLes propietats dels materials i els assaigs d'estudi
Les propietats dels materials i els assaigs d'estudi
 
Tema15
Tema15Tema15
Tema15
 
Le Lean Product Management présenté au LeanKanban Day 2015
Le Lean Product Management présenté au LeanKanban Day 2015Le Lean Product Management présenté au LeanKanban Day 2015
Le Lean Product Management présenté au LeanKanban Day 2015
 
1c-EL SEXENNI DEMOCRÀTIC
1c-EL SEXENNI DEMOCRÀTIC1c-EL SEXENNI DEMOCRÀTIC
1c-EL SEXENNI DEMOCRÀTIC
 
La Variació Lingüística
La Variació LingüísticaLa Variació Lingüística
La Variació Lingüística
 
La població espanyola. (2) Els contrasts territorials
La població espanyola. (2) Els contrasts territorialsLa població espanyola. (2) Els contrasts territorials
La població espanyola. (2) Els contrasts territorials
 
Unitat 2 la revolució industrial 2017-18
Unitat 2   la revolució industrial 2017-18Unitat 2   la revolució industrial 2017-18
Unitat 2 la revolució industrial 2017-18
 
Cycles de vie d'un logiciel
Cycles de vie d'un logicielCycles de vie d'un logiciel
Cycles de vie d'un logiciel
 
software engineering
software engineeringsoftware engineering
software engineering
 
procedure for amalgam restoration
procedure for amalgam restorationprocedure for amalgam restoration
procedure for amalgam restoration
 
Spécifications exécutables : Une pratique au cœur du développement Agile - Al...
Spécifications exécutables : Une pratique au cœur du développement Agile - Al...Spécifications exécutables : Une pratique au cœur du développement Agile - Al...
Spécifications exécutables : Une pratique au cœur du développement Agile - Al...
 
Scrum Guide 2011 - non officielle
Scrum Guide 2011 - non officielleScrum Guide 2011 - non officielle
Scrum Guide 2011 - non officielle
 
Partie 4: Fonctions - Programmation orientée objet en C++
Partie 4: Fonctions - Programmation orientée objet en C++Partie 4: Fonctions - Programmation orientée objet en C++
Partie 4: Fonctions - Programmation orientée objet en C++
 

Similar to An overview of techniques for detecting software variability concepts in source code

HTML5 in automotive - web2day 2014
HTML5 in automotive  - web2day 2014HTML5 in automotive  - web2day 2014
HTML5 in automotive - web2day 2014
Alexandre Morgaut
 
Liga ac labs opening v02
Liga ac labs opening v02Liga ac labs opening v02
Liga ac labs opening v02
Tudor Dan
 
Volumetric efficiency  calculating your cars volumetric efficiency
Volumetric efficiency  calculating your cars volumetric efficiencyVolumetric efficiency  calculating your cars volumetric efficiency
Volumetric efficiency  calculating your cars volumetric efficiency
Zulkarnian Nasrulllah
 

Similar to An overview of techniques for detecting software variability concepts in source code (20)

Patterns and practices for real-world event-driven microservices by Rachel Re...
Patterns and practices for real-world event-driven microservices by Rachel Re...Patterns and practices for real-world event-driven microservices by Rachel Re...
Patterns and practices for real-world event-driven microservices by Rachel Re...
 
Patterns and practices for real-world event-driven microservices
Patterns and practices for real-world event-driven microservicesPatterns and practices for real-world event-driven microservices
Patterns and practices for real-world event-driven microservices
 
Microservices Chaos Testing at Jet
Microservices Chaos Testing at JetMicroservices Chaos Testing at Jet
Microservices Chaos Testing at Jet
 
HTML5 in automotive - web2day 2014
HTML5 in automotive  - web2day 2014HTML5 in automotive  - web2day 2014
HTML5 in automotive - web2day 2014
 
Patterns & Practices for Cloud-based Microservices
Patterns & Practices for Cloud-based MicroservicesPatterns & Practices for Cloud-based Microservices
Patterns & Practices for Cloud-based Microservices
 
Best Practices & Lessons Learned from the field on EMC Documentum xCP 2.0
Best Practices & Lessons Learned from the field on EMC Documentum xCP 2.0Best Practices & Lessons Learned from the field on EMC Documentum xCP 2.0
Best Practices & Lessons Learned from the field on EMC Documentum xCP 2.0
 
Loops in C# for loops while and do while loop.
Loops in C# for loops while and do while loop.Loops in C# for loops while and do while loop.
Loops in C# for loops while and do while loop.
 
Big Audience at Scale — Spark and Big Data
Big Audience at Scale — Spark and Big DataBig Audience at Scale — Spark and Big Data
Big Audience at Scale — Spark and Big Data
 
Audience counting at Scale
Audience counting at ScaleAudience counting at Scale
Audience counting at Scale
 
Liga ac labs opening v02
Liga ac labs opening v02Liga ac labs opening v02
Liga ac labs opening v02
 
(9) cpp abstractions separated_compilation_and_binding_part_ii
(9) cpp abstractions separated_compilation_and_binding_part_ii(9) cpp abstractions separated_compilation_and_binding_part_ii
(9) cpp abstractions separated_compilation_and_binding_part_ii
 
VDM Ucandas WiFi Land Rover vehicle list
VDM Ucandas WiFi Land Rover vehicle listVDM Ucandas WiFi Land Rover vehicle list
VDM Ucandas WiFi Land Rover vehicle list
 
Spark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovSpark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris Trofimov
 
Catalogue thang máy Nexiez MRL
Catalogue thang máy Nexiez MRLCatalogue thang máy Nexiez MRL
Catalogue thang máy Nexiez MRL
 
Building Beautiful Systems with Phoenix contexts and Domain-Driven Design
Building Beautiful Systems with Phoenix contexts and Domain-Driven DesignBuilding Beautiful Systems with Phoenix contexts and Domain-Driven Design
Building Beautiful Systems with Phoenix contexts and Domain-Driven Design
 
COM 211 PRESENTATION.pptx
COM 211 PRESENTATION.pptxCOM 211 PRESENTATION.pptx
COM 211 PRESENTATION.pptx
 
Intake 37 linq2
Intake 37 linq2Intake 37 linq2
Intake 37 linq2
 
Volumetric efficiency  calculating your cars volumetric efficiency
Volumetric efficiency  calculating your cars volumetric efficiencyVolumetric efficiency  calculating your cars volumetric efficiency
Volumetric efficiency  calculating your cars volumetric efficiency
 
Autoboss v30
Autoboss v30Autoboss v30
Autoboss v30
 
Lingo
LingoLingo
Lingo
 

More from Angela Lozano

More from Angela Lozano (7)

UContracts a DSL to document and validate structural requirements of frameworks
UContracts a DSL to document and validate structural requirements of frameworksUContracts a DSL to document and validate structural requirements of frameworks
UContracts a DSL to document and validate structural requirements of frameworks
 
Analyzing Code Evolution to Uncover Relations between Bad Smells
Analyzing Code Evolution to Uncover Relations between Bad SmellsAnalyzing Code Evolution to Uncover Relations between Bad Smells
Analyzing Code Evolution to Uncover Relations between Bad Smells
 
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
 
Clones & Macro-Co-Changes
Clones & Macro-Co-ChangesClones & Macro-Co-Changes
Clones & Macro-Co-Changes
 
Explaining why methods change together
Explaining why methods change togetherExplaining why methods change together
Explaining why methods change together
 
Words Associated with Questions about Macros in Tex
Words Associated with Questions about Macros in TexWords Associated with Questions about Macros in Tex
Words Associated with Questions about Macros in Tex
 
Co occurring code critics
Co occurring code criticsCo occurring code critics
Co occurring code critics
 

Recently uploaded

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 

Recently uploaded (20)

MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

An overview of techniques for detecting software variability concepts in source code

  • 1. An Overview of Techniques for Detecting SoftwareVariability Concepts in Source Code Angela Lozano 1/30
  • 2. Variability • Customized and Affordable • Maximize reuse of common features • e.g. reuse hw. customize with sw. • e.g. sw families = { similar apps with shared provenance } • e.g. context-aware, fault tolerant and intelligent apps 2/30
  • 4. Why mining for variability? • To recuperate from architectural degradation • To expand a successful single product to new markets ! • Cost-benefit assessment of variation ⚖ • Effect of a variation in the development of the product! 3/30
  • 5. Variability Feature Feature Diagram Mandatory vs. Optional features Feature dependencies Variants Variation points Binding Domain instances Optional vs. Alternative variants Single vs. Multiple features 4/30 Variable features
  • 6. Variability Feature Feature Diagram Mandatory vs. Optional features Feature dependencies Variants Variation points Binding Domain instances Optional vs. Alternative variants Single vs. Multiple features 4/30 Variable features
  • 7. 5/30 some products of the same domain Feature: unit/increment of functionality Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 8. 5/30 some products of the same domain Feature: unit/increment of functionality Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 9. 5/30 some products of the same domain Feature: unit/increment of functionality Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 10. 5/30 some products of the same domain Feature: unit/increment of functionality Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 11. 5/30 some products of the same domain Feature: unit/increment of functionality Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 12. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain [Snelting TOSEM 96] ⚖! 6/30
  • 13. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain [Snelting TOSEM 96] ⚖! 6/30 Code that varies Variables that trigger changes
  • 14. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain [Snelting TOSEM 96] UNIX DOS X_win BSD !BSD I X II X X III X X IV X X V X #ifdef UNIX ...I ... #endif #if defined(X_win) && !defined(BSD) ...II... #endif #ifdef DOS #ifdef X_win ...III... #endif #ifdef BSD ...IV... #endif ...V... #endif ⚖! 6/30 Code that varies Variables that trigger changes
  • 15. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain [Snelting TOSEM 96] UNIX DOS X_win BSD !BSD I X II X X III X X IV X X V X #ifdef UNIX ...I ... #endif #if defined(X_win) && !defined(BSD) ...II... #endif #ifdef DOS #ifdef X_win ...III... #endif #ifdef BSD ...IV... #endif ...V... #endif ⚖! 6/30 Code that varies Variables that trigger changes Which parts of code are chosen by which triggers: selection of variants Which trigers are subsumed by other triggers: dependencies
  • 16. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain [Snelting TOSEM 96] UNIX DOS X_win BSD !BSD I X II X X III X X IV X X V X X: No relation with features X: Need a specific syntax for the configuration of the products X:A trigger does not necessarily store the selection of a variant #ifdef UNIX ...I ... #endif #if defined(X_win) && !defined(BSD) ...II... #endif #ifdef DOS #ifdef X_win ...III... #endif #ifdef BSD ...IV... #endif ...V... #endif ⚖! 6/30 Code that varies Variables that trigger changes Which parts of code are chosen by which triggers: selection of variants Which trigers are subsumed by other triggers: dependencies
  • 17. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain 7/30 [Hummel RSSE 10] !
  • 18. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain 7/30 Name of a Class Database of classes & their methods (OSS) [Hummel RSSE 10] !
  • 19. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain 7/30 Name of a Class Database of classes & their methods (OSS) [Hummel RSSE 10] ! signatures amongst the first 100 results, as delivered by the search engine for various example queries. A reasonable threshold for accepting a signature as common enough for the design prompter seemed to require it to appear at least 20 times amongst the 100 considered results. In cases where there were fewer than six signatures above this value we added the following results in gray color to the table. Table 1: Exemplary interface recommendations. Search Term(s) Averaged Interface # Matrix add Matrix ≈ 90 msec transpose():Matrix; 45 8, 844 results add(Matrix):Matrix; 39 732 methods toString():String; 39 multiply(Matrix):Matrix; 35 add(Matrix):void; 27 swapRows():Matrix; 24 BinaryTree BinaryTree ≈ 50 msec isEmpty():boolean; 35 1, 273 results main(String[]):void; 27 387 methods toString():String; 24 size():int; 21 height():int; 14 makeEmpty():void; 12 Stack Stack ≈ 40 msec push(Object):void; 48 68, 718 results pop():Object; 47 113 methods isEmpty():boolean; 34 toString():String; 22 pop():int; 20 push(int):void; 20 Deck Deck ≈ 50 msec shuffle():void; 55 3, 238 results dealCard():Card; 23 323 methods toString():String; 19 getCard():Card; 17 cardsLeft():int; 16 main(String[]):void; 10 delivered results. Besides a number of further ideas proving the intersection algorithm we discuss in 5, it clear that hiding common signatures such as the ones ming from main methods or methods inherited from Object might further improve the user experience as for example offering the possibility to retrieve the fol most frequent signatures that are initially not show more. It should be obvious that common abstractions s ”stack” deliver far better results than a search for mon programming term such as ”public”, but that is in the nature of things. Hence, identifying situations this technology can become helpful in practice in the should also be on the research agenda as performin meaningful evaluations that give a clear indication how ful it is in terms of an increased development velocity facilitating early completeness of software designs. In tion, the following section discusses some technical re directions we have identified so far in more detail. 5. ONGOING & FUTURE WORK In the previous sections we have given an insight i cent findings derived from preliminary experiments w approach. Although we have presented a prototype mentation which adds additional value to the Eclips this is still closely tied to the coding phase of softw velopment. Nevertheless, there is still potential for enhancements of the approach and broadening the fu ality from solely the implementation phase to the phase as well has the potential to significantly boos in the context of the early software life cycle. It sho feasible to generate useful hints for class or objects va (i.e. attributes) with similar techniques and it is eve ceivable to recognize specific idioms in the source c operations and to derive corresponding hints for d Table 1: Exemplary interface recommendations. Search Term(s) Averaged Interface # Matrix add Matrix ≈ 90 msec transpose():Matrix; 45 8, 844 results add(Matrix):Matrix; 39 732 methods toString():String; 39 multiply(Matrix):Matrix; 35 add(Matrix):void; 27 swapRows():Matrix; 24 BinaryTree BinaryTree ≈ 50 msec isEmpty():boolean; 35 1, 273 results main(String[]):void; 27 387 methods toString():String; 24 size():int; 21 height():int; 14 makeEmpty():void; 12 Stack Stack ≈ 40 msec push(Object):void; 48 68, 718 results pop():Object; 47 113 methods isEmpty():boolean; 34 toString():String; 22 pop():int; 20 push(int):void; 20 Deck Deck ≈ 50 msec shuffle():void; 55 3, 238 results dealCard():Card; 23 323 methods toString():String; 19 getCard():Card; 17 cardsLeft():int; 16 main(String[]):void; 10 CreditCard CreditCard ≈ 40 msec getNumber():String; 30 1, 148 results getCardNumber():String; 22 229 methods toString():String; 20 setCardNumber(String):void; 13 getCardType():String; 13 setNumber(String):void; 12 In addition to that, the table shows in the right row how often each signature appeared, while the left row includes the information how much time the calculation of the inter- face intersections required and how many unique signatures respectively how many results were found for each query. Our test system contained a dual core processor with 2.8 GHz and 6 GB RAM on which this algorithm works reason- ably fast. In other words, its response time of far less than a second is clearly sufficient to create recommendations for a proactive design prompter on the fly. 4.2 Discussion ”stack” deliver far better results than a search for mon programming term such as ”public”, but that is in the nature of things. Hence, identifying situations this technology can become helpful in practice in the should also be on the research agenda as performin meaningful evaluations that give a clear indication how ful it is in terms of an increased development velocity facilitating early completeness of software designs. In tion, the following section discusses some technical re directions we have identified so far in more detail. 5. ONGOING & FUTURE WORK In the previous sections we have given an insight i cent findings derived from preliminary experiments w approach. Although we have presented a prototype mentation which adds additional value to the Eclips this is still closely tied to the coding phase of softw velopment. Nevertheless, there is still potential for enhancements of the approach and broadening the fu ality from solely the implementation phase to the phase as well has the potential to significantly boos in the context of the early software life cycle. It sho feasible to generate useful hints for class or objects va (i.e. attributes) with similar techniques and it is eve ceivable to recognize specific idioms in the source c operations and to derive corresponding hints for d ers such as ”other developers used two nested for lo implement a bubblesort operation”. Since code-level are only the smallest group in the common pattern c cation by Buschmann et al. [5] it also seems feasible the abstraction level and to recognize and recomme sign or even architectural patterns that are common together with a given concept in the future. As sh another publication [14], Code Conjurer supports reu ommendations based upon UML class diagrams draw the help of appropriate Eclipse plug-ins. This featu also be used in conjunction with our prototypical imp tation of the design prompter. However, there is sp further enhancements, such as the presentation of the recommendations which is currently limited to ind classes. Therefore, a future release of the plug-in will UML representation of component design recommend as well as automatically create diagrams showing m classes and their relations. This will give developers a of an architectural design, derived from components Count same signatures for classes with similar names
  • 20. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain 7/30 Name of a Class Database of classes & their methods (OSS) Missing methods in the class: common functionality [Hummel RSSE 10] ! signatures amongst the first 100 results, as delivered by the search engine for various example queries. A reasonable threshold for accepting a signature as common enough for the design prompter seemed to require it to appear at least 20 times amongst the 100 considered results. In cases where there were fewer than six signatures above this value we added the following results in gray color to the table. Table 1: Exemplary interface recommendations. Search Term(s) Averaged Interface # Matrix add Matrix ≈ 90 msec transpose():Matrix; 45 8, 844 results add(Matrix):Matrix; 39 732 methods toString():String; 39 multiply(Matrix):Matrix; 35 add(Matrix):void; 27 swapRows():Matrix; 24 BinaryTree BinaryTree ≈ 50 msec isEmpty():boolean; 35 1, 273 results main(String[]):void; 27 387 methods toString():String; 24 size():int; 21 height():int; 14 makeEmpty():void; 12 Stack Stack ≈ 40 msec push(Object):void; 48 68, 718 results pop():Object; 47 113 methods isEmpty():boolean; 34 toString():String; 22 pop():int; 20 push(int):void; 20 Deck Deck ≈ 50 msec shuffle():void; 55 3, 238 results dealCard():Card; 23 323 methods toString():String; 19 getCard():Card; 17 cardsLeft():int; 16 main(String[]):void; 10 delivered results. Besides a number of further ideas proving the intersection algorithm we discuss in 5, it clear that hiding common signatures such as the ones ming from main methods or methods inherited from Object might further improve the user experience as for example offering the possibility to retrieve the fol most frequent signatures that are initially not show more. It should be obvious that common abstractions s ”stack” deliver far better results than a search for mon programming term such as ”public”, but that is in the nature of things. Hence, identifying situations this technology can become helpful in practice in the should also be on the research agenda as performin meaningful evaluations that give a clear indication how ful it is in terms of an increased development velocity facilitating early completeness of software designs. In tion, the following section discusses some technical re directions we have identified so far in more detail. 5. ONGOING & FUTURE WORK In the previous sections we have given an insight i cent findings derived from preliminary experiments w approach. Although we have presented a prototype mentation which adds additional value to the Eclips this is still closely tied to the coding phase of softw velopment. Nevertheless, there is still potential for enhancements of the approach and broadening the fu ality from solely the implementation phase to the phase as well has the potential to significantly boos in the context of the early software life cycle. It sho feasible to generate useful hints for class or objects va (i.e. attributes) with similar techniques and it is eve ceivable to recognize specific idioms in the source c operations and to derive corresponding hints for d Table 1: Exemplary interface recommendations. Search Term(s) Averaged Interface # Matrix add Matrix ≈ 90 msec transpose():Matrix; 45 8, 844 results add(Matrix):Matrix; 39 732 methods toString():String; 39 multiply(Matrix):Matrix; 35 add(Matrix):void; 27 swapRows():Matrix; 24 BinaryTree BinaryTree ≈ 50 msec isEmpty():boolean; 35 1, 273 results main(String[]):void; 27 387 methods toString():String; 24 size():int; 21 height():int; 14 makeEmpty():void; 12 Stack Stack ≈ 40 msec push(Object):void; 48 68, 718 results pop():Object; 47 113 methods isEmpty():boolean; 34 toString():String; 22 pop():int; 20 push(int):void; 20 Deck Deck ≈ 50 msec shuffle():void; 55 3, 238 results dealCard():Card; 23 323 methods toString():String; 19 getCard():Card; 17 cardsLeft():int; 16 main(String[]):void; 10 CreditCard CreditCard ≈ 40 msec getNumber():String; 30 1, 148 results getCardNumber():String; 22 229 methods toString():String; 20 setCardNumber(String):void; 13 getCardType():String; 13 setNumber(String):void; 12 In addition to that, the table shows in the right row how often each signature appeared, while the left row includes the information how much time the calculation of the inter- face intersections required and how many unique signatures respectively how many results were found for each query. Our test system contained a dual core processor with 2.8 GHz and 6 GB RAM on which this algorithm works reason- ably fast. In other words, its response time of far less than a second is clearly sufficient to create recommendations for a proactive design prompter on the fly. 4.2 Discussion ”stack” deliver far better results than a search for mon programming term such as ”public”, but that is in the nature of things. Hence, identifying situations this technology can become helpful in practice in the should also be on the research agenda as performin meaningful evaluations that give a clear indication how ful it is in terms of an increased development velocity facilitating early completeness of software designs. In tion, the following section discusses some technical re directions we have identified so far in more detail. 5. ONGOING & FUTURE WORK In the previous sections we have given an insight i cent findings derived from preliminary experiments w approach. Although we have presented a prototype mentation which adds additional value to the Eclips this is still closely tied to the coding phase of softw velopment. Nevertheless, there is still potential for enhancements of the approach and broadening the fu ality from solely the implementation phase to the phase as well has the potential to significantly boos in the context of the early software life cycle. It sho feasible to generate useful hints for class or objects va (i.e. attributes) with similar techniques and it is eve ceivable to recognize specific idioms in the source c operations and to derive corresponding hints for d ers such as ”other developers used two nested for lo implement a bubblesort operation”. Since code-level are only the smallest group in the common pattern c cation by Buschmann et al. [5] it also seems feasible the abstraction level and to recognize and recomme sign or even architectural patterns that are common together with a given concept in the future. As sh another publication [14], Code Conjurer supports reu ommendations based upon UML class diagrams draw the help of appropriate Eclipse plug-ins. This featu also be used in conjunction with our prototypical imp tation of the design prompter. However, there is sp further enhancements, such as the presentation of the recommendations which is currently limited to ind classes. Therefore, a future release of the plug-in will UML representation of component design recommend as well as automatically create diagrams showing m classes and their relations. This will give developers a of an architectural design, derived from components Some occasional methods: variants? Count same signatures for classes with similar names
  • 21. Car Transmission Engine Manual Suspension Gasoline Car Transmission Engine Extras Automatic Electric Cruise Suspension Car Horsepow Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension Mining products of the same domain X: Business-specific concepts are likely to be missing in the database. 7/30 Name of a Class Database of classes & their methods (OSS) Missing methods in the class: common functionality [Hummel RSSE 10] ! signatures amongst the first 100 results, as delivered by the search engine for various example queries. A reasonable threshold for accepting a signature as common enough for the design prompter seemed to require it to appear at least 20 times amongst the 100 considered results. In cases where there were fewer than six signatures above this value we added the following results in gray color to the table. Table 1: Exemplary interface recommendations. Search Term(s) Averaged Interface # Matrix add Matrix ≈ 90 msec transpose():Matrix; 45 8, 844 results add(Matrix):Matrix; 39 732 methods toString():String; 39 multiply(Matrix):Matrix; 35 add(Matrix):void; 27 swapRows():Matrix; 24 BinaryTree BinaryTree ≈ 50 msec isEmpty():boolean; 35 1, 273 results main(String[]):void; 27 387 methods toString():String; 24 size():int; 21 height():int; 14 makeEmpty():void; 12 Stack Stack ≈ 40 msec push(Object):void; 48 68, 718 results pop():Object; 47 113 methods isEmpty():boolean; 34 toString():String; 22 pop():int; 20 push(int):void; 20 Deck Deck ≈ 50 msec shuffle():void; 55 3, 238 results dealCard():Card; 23 323 methods toString():String; 19 getCard():Card; 17 cardsLeft():int; 16 main(String[]):void; 10 delivered results. Besides a number of further ideas proving the intersection algorithm we discuss in 5, it clear that hiding common signatures such as the ones ming from main methods or methods inherited from Object might further improve the user experience as for example offering the possibility to retrieve the fol most frequent signatures that are initially not show more. It should be obvious that common abstractions s ”stack” deliver far better results than a search for mon programming term such as ”public”, but that is in the nature of things. Hence, identifying situations this technology can become helpful in practice in the should also be on the research agenda as performin meaningful evaluations that give a clear indication how ful it is in terms of an increased development velocity facilitating early completeness of software designs. In tion, the following section discusses some technical re directions we have identified so far in more detail. 5. ONGOING & FUTURE WORK In the previous sections we have given an insight i cent findings derived from preliminary experiments w approach. Although we have presented a prototype mentation which adds additional value to the Eclips this is still closely tied to the coding phase of softw velopment. Nevertheless, there is still potential for enhancements of the approach and broadening the fu ality from solely the implementation phase to the phase as well has the potential to significantly boos in the context of the early software life cycle. It sho feasible to generate useful hints for class or objects va (i.e. attributes) with similar techniques and it is eve ceivable to recognize specific idioms in the source c operations and to derive corresponding hints for d Table 1: Exemplary interface recommendations. Search Term(s) Averaged Interface # Matrix add Matrix ≈ 90 msec transpose():Matrix; 45 8, 844 results add(Matrix):Matrix; 39 732 methods toString():String; 39 multiply(Matrix):Matrix; 35 add(Matrix):void; 27 swapRows():Matrix; 24 BinaryTree BinaryTree ≈ 50 msec isEmpty():boolean; 35 1, 273 results main(String[]):void; 27 387 methods toString():String; 24 size():int; 21 height():int; 14 makeEmpty():void; 12 Stack Stack ≈ 40 msec push(Object):void; 48 68, 718 results pop():Object; 47 113 methods isEmpty():boolean; 34 toString():String; 22 pop():int; 20 push(int):void; 20 Deck Deck ≈ 50 msec shuffle():void; 55 3, 238 results dealCard():Card; 23 323 methods toString():String; 19 getCard():Card; 17 cardsLeft():int; 16 main(String[]):void; 10 CreditCard CreditCard ≈ 40 msec getNumber():String; 30 1, 148 results getCardNumber():String; 22 229 methods toString():String; 20 setCardNumber(String):void; 13 getCardType():String; 13 setNumber(String):void; 12 In addition to that, the table shows in the right row how often each signature appeared, while the left row includes the information how much time the calculation of the inter- face intersections required and how many unique signatures respectively how many results were found for each query. Our test system contained a dual core processor with 2.8 GHz and 6 GB RAM on which this algorithm works reason- ably fast. In other words, its response time of far less than a second is clearly sufficient to create recommendations for a proactive design prompter on the fly. 4.2 Discussion ”stack” deliver far better results than a search for mon programming term such as ”public”, but that is in the nature of things. Hence, identifying situations this technology can become helpful in practice in the should also be on the research agenda as performin meaningful evaluations that give a clear indication how ful it is in terms of an increased development velocity facilitating early completeness of software designs. In tion, the following section discusses some technical re directions we have identified so far in more detail. 5. ONGOING & FUTURE WORK In the previous sections we have given an insight i cent findings derived from preliminary experiments w approach. Although we have presented a prototype mentation which adds additional value to the Eclips this is still closely tied to the coding phase of softw velopment. Nevertheless, there is still potential for enhancements of the approach and broadening the fu ality from solely the implementation phase to the phase as well has the potential to significantly boos in the context of the early software life cycle. It sho feasible to generate useful hints for class or objects va (i.e. attributes) with similar techniques and it is eve ceivable to recognize specific idioms in the source c operations and to derive corresponding hints for d ers such as ”other developers used two nested for lo implement a bubblesort operation”. Since code-level are only the smallest group in the common pattern c cation by Buschmann et al. [5] it also seems feasible the abstraction level and to recognize and recomme sign or even architectural patterns that are common together with a given concept in the future. As sh another publication [14], Code Conjurer supports reu ommendations based upon UML class diagrams draw the help of appropriate Eclipse plug-ins. This featu also be used in conjunction with our prototypical imp tation of the design prompter. However, there is sp further enhancements, such as the presentation of the recommendations which is currently limited to ind classes. Therefore, a future release of the plug-in will UML representation of component design recommend as well as automatically create diagrams showing m classes and their relations. This will give developers a of an architectural design, derived from components Some occasional methods: variants? Count same signatures for classes with similar names
  • 22. Variability Feature Feature Diagram Mandatory vs. Optional features Feature dependencies Variants Variation points Binding Domain instances Optional vs. Alternative variants Single vs. Multiple features 8/30 Variable features
  • 23. Feature: unit/increment of functionality 9/30 Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Required in all (Mandatory) or in some (Optional) products
  • 24. Feature: unit/increment of functionality 9/30 Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Required in all (Mandatory) or in some (Optional) products
  • 25. Feature: unit/increment of functionality 9/30 Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Required in all (Mandatory) or in some (Optional) products
  • 26. Feature: unit/increment of functionality 9/30 Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Required in all (Mandatory) or in some (Optional) products
  • 27. Feature: unit/increment of functionality 9/30 Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Required in all (Mandatory) or in some (Optional) products
  • 28. Variable: if customization is required Feature: unit/increment of functionality 10/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 29. Variable: if customization is required Feature: unit/increment of functionality 10/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 30. Variable: if customization is required Feature: unit/increment of functionality 10/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 31. Variable: if customization is required Feature: unit/increment of functionality 10/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 32. Feature: unit/increment of functionality 11/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Variant: option available for a variable feature Variable: if customization is required
  • 33. Feature: unit/increment of functionality 11/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Variant: option available for a variable feature Variable: if customization is required
  • 34. Feature: unit/increment of functionality 11/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Variant: option available for a variable feature Variable: if customization is required
  • 35. Feature: unit/increment of functionality 11/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Variant: option available for a variable feature Variable: if customization is required
  • 36. Feature: unit/increment of functionality 11/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Variant: option available for a variable feature Variable: if customization is required
  • 37. Feature: unit/increment of functionality 11/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Variant: option available for a variable feature Variable: if customization is required
  • 38. Feature: unit/increment of functionality 11/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Variant: option available for a variable feature Variable: if customization is required
  • 39. Feature: unit/increment of functionality 11/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Variant: option available for a variable feature Variable: if customization is required
  • 40. Variant: option available for a variable feature YES: Mutually inclusive / NO:Mutually exclusive Feature: unit/increment of functionality Variable: if customization is required 12/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 41. Variant: option available for a variable feature YES: Mutually inclusive / NO:Mutually exclusive Feature: unit/increment of functionality Variable: if customization is required 12/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 42. Variant: option available for a variable feature YES: Mutually inclusive / NO:Mutually exclusive Feature: unit/increment of functionality Variable: if customization is required 12/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 43. Variant: option available for a variable feature YES: Mutually inclusive / NO:Mutually exclusive Feature: unit/increment of functionality Variable: if customization is required 12/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 44. Variant: option available for a variable feature YES: Mutually inclusive / NO:Mutually exclusive Feature: unit/increment of functionality Variable: if customization is required 12/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 45. Variant: option available for a variable feature Can a variable feature have several variants? YES: Multiple / NO: Single YES: Mutually inclusive / NO:Mutually exclusive Feature: unit/increment of functionality Variable: if customization is required 12/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 46. Variant: option available for a variable feature Can a variable feature have several variants? YES: Multiple / NO: Single YES: Mutually inclusive / NO:Mutually exclusive Feature: unit/increment of functionality Variable: if customization is required 12/30 Required in all (Mandatory) or in some (Optional) products Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension
  • 47. Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 13/30 [Faust SPE 03]
  • 48. Their source code repository Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 13/30 [Faust SPE 03] Several products of the same domain
  • 49. Their source code repository Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 13/30 local layer regional layer global layer U L V S M C C Utilization = Users of the SCE Length = LOC Complexity = McCabe Volatility = 0.7 * changes last year + 0.3 * exp. changes this year Specificity = LOCs per variation Mitosis = % clone differences [Faust SPE 03] Several products of the same domain
  • 50. Their source code repository Metrics per SCE - Placement of a SCE: mandatory/ optional features, Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 13/30 local layer regional layer global layer U L V S M C C Utilization = Users of the SCE Length = LOC Complexity = McCabe Volatility = 0.7 * changes last year + 0.3 * exp. changes this year Specificity = LOCs per variation Mitosis = % clone differences [Faust SPE 03] Several products of the same domain
  • 51. Their source code repository Metrics per SCE - Placement of a SCE: mandatory/ optional features, Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 13/30 local layer regional layer global layer U L V S M C C Utilization = Users of the SCE Length = LOC Complexity = McCabe Volatility = 0.7 * changes last year + 0.3 * exp. changes this year Specificity = LOCs per variation Mitosis = % clone differences X: Cannot identify dependencies X: No support for refactoring [Faust SPE 03] Several products of the same domain
  • 52. Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 14/30 [Mende CSMR 04]
  • 53. Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 14/30 One product of the domain [Mende CSMR 04] App. w. basic functionality of the domain
  • 54. Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 14/30 One product of the domain max(|f1|, |f2|)-LD(f1,f2) |f1| sim(f1,f2) = FI: Identical Functions (sim=1) FS: Similar Functions (0<sim<1) |FI| = 1: Identical correspondence |FI| > 1: Multiple correspondence |FI| = 0 & |FS| = 1: Single variant |FI| = 0 & |FS| > 1: Multiple variant |FI| = 0 & |FS| =0: No correspondence LD = Levenshtein Distance [Mende CSMR 04] App. w. basic functionality of the domain
  • 55. Metrics per SCE - How to merge a variant into the basic product: mandatory/ optional functions, single/multiple variable features Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 14/30 One product of the domain max(|f1|, |f2|)-LD(f1,f2) |f1| sim(f1,f2) = FI: Identical Functions (sim=1) FS: Similar Functions (0<sim<1) |FI| = 1: Identical correspondence |FI| > 1: Multiple correspondence |FI| = 0 & |FS| = 1: Single variant |FI| = 0 & |FS| > 1: Multiple variant |FI| = 0 & |FS| =0: No correspondence LD = Levenshtein Distance [Mende CSMR 04] App. w. basic functionality of the domain
  • 56. Metrics per SCE - How to merge a variant into the basic product: mandatory/ optional functions, single/multiple variable features Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 14/30 X: No support for non-corresponding code X: Cannot identify dependencies X: No link to feature diagram One product of the domain max(|f1|, |f2|)-LD(f1,f2) |f1| sim(f1,f2) = FI: Identical Functions (sim=1) FS: Similar Functions (0<sim<1) |FI| = 1: Identical correspondence |FI| > 1: Multiple correspondence |FI| = 0 & |FS| = 1: Single variant |FI| = 0 & |FS| > 1: Multiple variant |FI| = 0 & |FS| =0: No correspondence LD = Levenshtein Distance [Mende CSMR 04] App. w. basic functionality of the domain
  • 57. Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 15/30 [Frenzel WCRE 07]
  • 58. Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 15/30 Several products of the domain [Frenzel WCRE 07] App. w. basic functionality of the domain
  • 59. Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 15/30 Several products of the domain LD(f1,f2) max(|f1|, |f2|) sim(s1,s2) = 1- Mn,i ∩ Mn,j Mn,i ∪ Mn,j Mn= Dn,i ∩ Dn,j Dn,i ∪ Dn,j Dn= Mni = Modules for variant i at nesting n Dni = Dependencies for variant i at nesting n IF entities are identical->‘kernel’ IF variant in all products -> ‘variant’ IF variant in some products -> ‘optional’ [Frenzel WCRE 07] App. w. basic functionality of the domain
  • 60. Metrics per SCE - How to merge several variants into a product line: mandatory/ optional functions, single/multiple variable features Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 15/30 Several products of the domain LD(f1,f2) max(|f1|, |f2|) sim(s1,s2) = 1- Mn,i ∩ Mn,j Mn,i ∪ Mn,j Mn= Dn,i ∩ Dn,j Dn,i ∪ Dn,j Dn= Mni = Modules for variant i at nesting n Dni = Dependencies for variant i at nesting n IF entities are identical->‘kernel’ IF variant in all products -> ‘variant’ IF variant in some products -> ‘optional’ [Frenzel WCRE 07] App. w. basic functionality of the domain
  • 61. Metrics per SCE - How to merge several variants into a product line: mandatory/ optional functions, single/multiple variable features Mining for variable & mandatory features Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 15/30 X: No support for non-corresponding code X: Cannot identify dependencies X: No link to feature diagram Several products of the domain LD(f1,f2) max(|f1|, |f2|) sim(s1,s2) = 1- Mn,i ∩ Mn,j Mn,i ∪ Mn,j Mn= Dn,i ∩ Dn,j Dn,i ∪ Dn,j Dn= Mni = Modules for variant i at nesting n Dni = Dependencies for variant i at nesting n IF entities are identical->‘kernel’ IF variant in all products -> ‘variant’ IF variant in some products -> ‘optional’ [Frenzel WCRE 07] App. w. basic functionality of the domain
  • 62. Variability Feature Feature Diagram Mandatory vs. Optional features Feature dependencies Variants Variation points Binding Domain instances Optional vs. Alternative variants Single vs. Multiple features 16/30 Variable features
  • 63. Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Feature Diagram Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension YES: Optional / NO:Alternative variants Is the corresponding variable feature required? 17/30
  • 64. Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Feature Diagram Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension YES: Optional / NO:Alternative variants Is the corresponding variable feature required? 17/30
  • 65. Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Feature Diagram Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension YES: Optional / NO:Alternative variants Is the corresponding variable feature required? 17/30
  • 66. Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Feature Diagram Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension YES: Optional / NO:Alternative variants Is the corresponding variable feature required? 17/30
  • 67. Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Feature Diagram Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension YES: Optional / NO:Alternative variants Is the corresponding variable feature required? 17/30
  • 68. 18/30 [Antiweckz JASE 09] ! Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension
  • 69. 18/30 Several products of the domain Starting SCEs [Antiweckz JASE 09] ! Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension
  • 70. 18/30 Several products of the domain Starting SCEs ![1] typedThread <fieldOfType: ’Thread’> [1] initializesThread <assignedNew: ’Thread(IRunnable)’> [1] nullifiesThread <assignedNull> [0..*] parameter <callsReceived: ’getParameter(String)’> [0..1] name (String) <valueOfArg: 1> [1] providesParameterInfo <methods: ’getParameterInfo()’> Table 4 Fragment of the metamodel of the Struts FSML FSML Feature <Pattern Expression> [0..*] Action <class> ![1] extendsAction <assignableTo: ’Action’> [0..1] extendsDispatchAction <assignableTo: ’DispatchAction’> [0..*] actionMethod <methods: ’*(ActionMapping, ActionForm, [. . . ], [. . . ])’> [0..1] overridesExecute <methods: ’execute(ActionMapping, ActionForm, [. . . ])’> [0..*] forwardImpl <callsTo: ’findForward(String)’> [1] name (String) <valueOfArg: 1> to. Values of the parameters can also be the patterns that other features corresp to, in which case, the features need to be specified using path expressions. For ex ple, the pattern expression attached to the feature deregistersSameObjec Table 3 requires two method calls and uses paths “../../registers” and “ to retrieve calls that the features registers and deregisters correspond t We present the metamodels for two reasons: (i) to give the reader example [Antiweckz JASE 09] ! Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension Mapping of entities → operations done over the data (SCqueries)
  • 71. Feature diagram of the domain: mandatory/ optional features, single/multiple variable features 18/30 Several products of the domain Starting SCEs ![1] typedThread <fieldOfType: ’Thread’> [1] initializesThread <assignedNew: ’Thread(IRunnable)’> [1] nullifiesThread <assignedNull> [0..*] parameter <callsReceived: ’getParameter(String)’> [0..1] name (String) <valueOfArg: 1> [1] providesParameterInfo <methods: ’getParameterInfo()’> Table 4 Fragment of the metamodel of the Struts FSML FSML Feature <Pattern Expression> [0..*] Action <class> ![1] extendsAction <assignableTo: ’Action’> [0..1] extendsDispatchAction <assignableTo: ’DispatchAction’> [0..*] actionMethod <methods: ’*(ActionMapping, ActionForm, [. . . ], [. . . ])’> [0..1] overridesExecute <methods: ’execute(ActionMapping, ActionForm, [. . . ])’> [0..*] forwardImpl <callsTo: ’findForward(String)’> [1] name (String) <valueOfArg: 1> to. Values of the parameters can also be the patterns that other features corresp to, in which case, the features need to be specified using path expressions. For ex ple, the pattern expression attached to the feature deregistersSameObjec Table 3 requires two method calls and uses paths “../../registers” and “ to retrieve calls that the features registers and deregisters correspond t We present the metamodels for two reasons: (i) to give the reader example [Antiweckz JASE 09] ! Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension Mapping of entities → operations done over the data (SCqueries)
  • 72. Feature diagram of the domain: mandatory/ optional features, single/multiple variable features 18/30 X: Low-level diagram X: Cannot identify dependencies X: Results depend on the variety of the products of the domain Several products of the domain Starting SCEs ![1] typedThread <fieldOfType: ’Thread’> [1] initializesThread <assignedNew: ’Thread(IRunnable)’> [1] nullifiesThread <assignedNull> [0..*] parameter <callsReceived: ’getParameter(String)’> [0..1] name (String) <valueOfArg: 1> [1] providesParameterInfo <methods: ’getParameterInfo()’> Table 4 Fragment of the metamodel of the Struts FSML FSML Feature <Pattern Expression> [0..*] Action <class> ![1] extendsAction <assignableTo: ’Action’> [0..1] extendsDispatchAction <assignableTo: ’DispatchAction’> [0..*] actionMethod <methods: ’*(ActionMapping, ActionForm, [. . . ], [. . . ])’> [0..1] overridesExecute <methods: ’execute(ActionMapping, ActionForm, [. . . ])’> [0..*] forwardImpl <callsTo: ’findForward(String)’> [1] name (String) <valueOfArg: 1> to. Values of the parameters can also be the patterns that other features corresp to, in which case, the features need to be specified using path expressions. For ex ple, the pattern expression attached to the feature deregistersSameObjec Table 3 requires two method calls and uses paths “../../registers” and “ to retrieve calls that the features registers and deregisters correspond t We present the metamodels for two reasons: (i) to give the reader example [Antiweckz JASE 09] ! Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension Mapping of entities → operations done over the data (SCqueries)
  • 73. 19/30 Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Yang WCRE 09] !
  • 74. 19/30 Several products of the domain Mapping of concepts Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Yang WCRE 09] ! Consolidate features
  • 75. 19/30 Several products of the domain Mapping of concepts Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Yang WCRE 09] ! '98&15&80+&9+31=+9+;&5+'8.9+&>89.38.9+&S+519+&9+31$>89.38"1$ Consolidate features Mapping of entities → operations done over the data (DB access) + FCA
  • 76. Feature diagram of the domain: mandatory/ optional features, exclusive/ inclusive variants 19/30 Several products of the domain Mapping of concepts Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Yang WCRE 09] ! '98&15&80+&9+31=+9+;&5+'8.9+&>89.38.9+&S+519+&9+31$>89.38"1$ Consolidate features Mapping of entities → operations done over the data (DB access) + FCA
  • 77. Feature diagram of the domain: mandatory/ optional features, exclusive/ inclusive variants 19/30 X: Cannot identify dependencies X: Results depend on the variety of the products of the domain Several products of the domain Mapping of concepts Mining for feature diagrams Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Yang WCRE 09] ! '98&15&80+&9+31=+9+;&5+'8.9+&>89.38.9+&S+519+&9+31$>89.38"1$ Consolidate features Mapping of entities → operations done over the data (DB access) + FCA
  • 78. Variability Feature Feature Diagram Mandatory vs. Optional features Feature dependencies Variants Variation points Binding Domain instances Optional vs. Alternative variants Single vs. Multiple features 20/30 Variable features
  • 79. Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Feature Diagram Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension Are there constraints (dependencies) among them ? Requires: 1st = 2nd one / Excludes: 1st or 2nd 21/30
  • 80. Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Feature Diagram Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension Are there constraints (dependencies) among them ? Requires: 1st = 2nd one / Excludes: 1st or 2nd 21/30
  • 81. Car Transmission Engine Manual Suspension Gasoline Car Horsepower Transmission Engine Extras Manual Gasoline Air Conditioning Cruise Suspension Car Horsepower Transmission Engine Extras Automatic GasolineElectric Air Conditioning Cruise Suspension basic car motor-head car executive car eco-aware car Car Transmission Engine Extras Automatic Electric Cruise Suspension Feature Diagram Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension Are there constraints (dependencies) among them ? Requires: 1st = 2nd one / Excludes: 1st or 2nd 21/30
  • 82. 22/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Lai OOPSLA 99] !
  • 83. Single app. Mapping of tokens to features & files to features 22/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Lai OOPSLA 99] !
  • 84. Single app. Mapping of tokens to features & files to features 22/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Lai OOPSLA 99] ! Spread (f) = 5 / 20 Tangle(f) =250/500 Density(f) = 500/3 .* x 500 .... x 250 Overlap Order ✔ ✘ .. ....✔ ✘ Metrics per feature
  • 85. Variability analysis: (un)acceptable feature tangling Single app. Mapping of tokens to features & files to features 22/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Lai OOPSLA 99] ! Spread (f) = 5 / 20 Tangle(f) =250/500 Density(f) = 500/3 .* x 500 .... x 250 Overlap Order ✔ ✘ .. ....✔ ✘ Metrics per feature
  • 86. Variability analysis: (un)acceptable feature tangling X: Cannot mine for require & exclude relations Single app. Mapping of tokens to features & files to features 22/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Lai OOPSLA 99] ! Spread (f) = 5 / 20 Tangle(f) =250/500 Density(f) = 500/3 .* x 500 .... x 250 Overlap Order ✔ ✘ .. ....✔ ✘ Metrics per feature
  • 87. 23/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Egyed ICSE 01]!
  • 88. Traces of several scenarios (execution of feature) 23/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Egyed ICSE 01]!
  • 89. Traces of several scenarios (execution of feature) 23/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension scenarios from Table 1 using the Rational PureCoverage tool. By a footprint we mean the classes that were executed while testing a scenario. The numbers in Table 2 indicate how many methods of each class were used. For instance, scenario “A” used ten methods of the class CAboutDlg and three methods of the class CSettingsDlg. Table 2 does not display the actual methods in order to reduce the complex- ity of this example (the footprint graph shown later would otherwise get too big). Nevertheless, by only using classes the generated traces will still be useful, albeit, course- grained. If more fine-grained traces are needed then trace quires only a fairly limited amount of hypothe information; otherwise, the cost of using it wo high. Table 4 and Table 3 show a list of twelve hypothesized. We assume that most traces are a tially correct; however, our approach can pinp traces plus create new ones by matching the de information against the observed trace informat traces, together with the trace observations that matically generated (Table 2) can now be used reasoning. 5 ATOMIZING In order to reason about traces and how the model elements, we need to intertwine scenar elements, their footprints, and hypothesized trac tion. In order to do this, we have devised a footp Figure 3 depicts the complete footprint graph fo scenarios in Table 1. This graph also forms the for the remaining activities of our approach: G and Refining. One property that graph has is that footprints o trace information are split up into as many nodes to explicitly represent all possible overlaps betw ios (overlaps are footprints that any two scenar Table 2. Observeable Scenario Footprints A B C D E F G H CAboutDlg 0 10 10 CILLDB 1 3 2 2 2 4 CILLDBSet 2 4 4 mailreader 3 3 4 7 1 1 5 1 parsing 4 6 6 POP3 5 8 10 2 2 2 11 1 CPOP3Dlg 6 4 4 1 4 4 4 CAPP 7 1 1 CMainWin 8 3 5 5 3 6 7 5 CSettingsDlg 9 15 Class Scenario [Egyed ICSE 01]!
  • 90. Traces of several scenarios (execution of feature) 23/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension scenarios from Table 1 using the Rational PureCoverage tool. By a footprint we mean the classes that were executed while testing a scenario. The numbers in Table 2 indicate how many methods of each class were used. For instance, scenario “A” used ten methods of the class CAboutDlg and three methods of the class CSettingsDlg. Table 2 does not display the actual methods in order to reduce the complex- ity of this example (the footprint graph shown later would otherwise get too big). Nevertheless, by only using classes the generated traces will still be useful, albeit, course- grained. If more fine-grained traces are needed then trace quires only a fairly limited amount of hypothe information; otherwise, the cost of using it wo high. Table 4 and Table 3 show a list of twelve hypothesized. We assume that most traces are a tially correct; however, our approach can pinp traces plus create new ones by matching the de information against the observed trace informat traces, together with the trace observations that matically generated (Table 2) can now be used reasoning. 5 ATOMIZING In order to reason about traces and how the model elements, we need to intertwine scenar elements, their footprints, and hypothesized trac tion. In order to do this, we have devised a footp Figure 3 depicts the complete footprint graph fo scenarios in Table 1. This graph also forms the for the remaining activities of our approach: G and Refining. One property that graph has is that footprints o trace information are split up into as many nodes to explicitly represent all possible overlaps betw ios (overlaps are footprints that any two scenar Table 2. Observeable Scenario Footprints A B C D E F G H CAboutDlg 0 10 10 CILLDB 1 3 2 2 2 4 CILLDBSet 2 4 4 mailreader 3 3 4 7 1 1 5 1 parsing 4 6 6 POP3 5 8 10 2 2 2 11 1 CPOP3Dlg 6 4 4 1 4 4 4 CAPP 7 1 1 CMainWin 8 3 5 5 3 6 7 5 CSettingsDlg 9 15 Class Scenario Overlap [Egyed ICSE 01]!
  • 91. Traces of several scenarios (execution of feature) 23/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension scenarios from Table 1 using the Rational PureCoverage tool. By a footprint we mean the classes that were executed while testing a scenario. The numbers in Table 2 indicate how many methods of each class were used. For instance, scenario “A” used ten methods of the class CAboutDlg and three methods of the class CSettingsDlg. Table 2 does not display the actual methods in order to reduce the complex- ity of this example (the footprint graph shown later would otherwise get too big). Nevertheless, by only using classes the generated traces will still be useful, albeit, course- grained. If more fine-grained traces are needed then trace quires only a fairly limited amount of hypothe information; otherwise, the cost of using it wo high. Table 4 and Table 3 show a list of twelve hypothesized. We assume that most traces are a tially correct; however, our approach can pinp traces plus create new ones by matching the de information against the observed trace informat traces, together with the trace observations that matically generated (Table 2) can now be used reasoning. 5 ATOMIZING In order to reason about traces and how the model elements, we need to intertwine scenar elements, their footprints, and hypothesized trac tion. In order to do this, we have devised a footp Figure 3 depicts the complete footprint graph fo scenarios in Table 1. This graph also forms the for the remaining activities of our approach: G and Refining. One property that graph has is that footprints o trace information are split up into as many nodes to explicitly represent all possible overlaps betw ios (overlaps are footprints that any two scenar Table 2. Observeable Scenario Footprints A B C D E F G H CAboutDlg 0 10 10 CILLDB 1 3 2 2 2 4 CILLDBSet 2 4 4 mailreader 3 3 4 7 1 1 5 1 parsing 4 6 6 POP3 5 8 10 2 2 2 11 1 CPOP3Dlg 6 4 4 1 4 4 4 CAPP 7 1 1 CMainWin 8 3 5 5 3 6 7 5 CSettingsDlg 9 15 Class Scenario Overlap Sub-feature [Egyed ICSE 01]!
  • 92. Traces of several scenarios (execution of feature) 23/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension scenarios from Table 1 using the Rational PureCoverage tool. By a footprint we mean the classes that were executed while testing a scenario. The numbers in Table 2 indicate how many methods of each class were used. For instance, scenario “A” used ten methods of the class CAboutDlg and three methods of the class CSettingsDlg. Table 2 does not display the actual methods in order to reduce the complex- ity of this example (the footprint graph shown later would otherwise get too big). Nevertheless, by only using classes the generated traces will still be useful, albeit, course- grained. If more fine-grained traces are needed then trace quires only a fairly limited amount of hypothe information; otherwise, the cost of using it wo high. Table 4 and Table 3 show a list of twelve hypothesized. We assume that most traces are a tially correct; however, our approach can pinp traces plus create new ones by matching the de information against the observed trace informat traces, together with the trace observations that matically generated (Table 2) can now be used reasoning. 5 ATOMIZING In order to reason about traces and how the model elements, we need to intertwine scenar elements, their footprints, and hypothesized trac tion. In order to do this, we have devised a footp Figure 3 depicts the complete footprint graph fo scenarios in Table 1. This graph also forms the for the remaining activities of our approach: G and Refining. One property that graph has is that footprints o trace information are split up into as many nodes to explicitly represent all possible overlaps betw ios (overlaps are footprints that any two scenar Table 2. Observeable Scenario Footprints A B C D E F G H CAboutDlg 0 10 10 CILLDB 1 3 2 2 2 4 CILLDBSet 2 4 4 mailreader 3 3 4 7 1 1 5 1 parsing 4 6 6 POP3 5 8 10 2 2 2 11 1 CPOP3Dlg 6 4 4 1 4 4 4 CAPP 7 1 1 CMainWin 8 3 5 5 3 6 7 5 CSettingsDlg 9 15 Class Scenario Overlap Sub-feature Equivalence [Egyed ICSE 01]!
  • 93. Variability analysis: Overlap, sub- features, equivalence Traces of several scenarios (execution of feature) 23/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension scenarios from Table 1 using the Rational PureCoverage tool. By a footprint we mean the classes that were executed while testing a scenario. The numbers in Table 2 indicate how many methods of each class were used. For instance, scenario “A” used ten methods of the class CAboutDlg and three methods of the class CSettingsDlg. Table 2 does not display the actual methods in order to reduce the complex- ity of this example (the footprint graph shown later would otherwise get too big). Nevertheless, by only using classes the generated traces will still be useful, albeit, course- grained. If more fine-grained traces are needed then trace quires only a fairly limited amount of hypothe information; otherwise, the cost of using it wo high. Table 4 and Table 3 show a list of twelve hypothesized. We assume that most traces are a tially correct; however, our approach can pinp traces plus create new ones by matching the de information against the observed trace informat traces, together with the trace observations that matically generated (Table 2) can now be used reasoning. 5 ATOMIZING In order to reason about traces and how the model elements, we need to intertwine scenar elements, their footprints, and hypothesized trac tion. In order to do this, we have devised a footp Figure 3 depicts the complete footprint graph fo scenarios in Table 1. This graph also forms the for the remaining activities of our approach: G and Refining. One property that graph has is that footprints o trace information are split up into as many nodes to explicitly represent all possible overlaps betw ios (overlaps are footprints that any two scenar Table 2. Observeable Scenario Footprints A B C D E F G H CAboutDlg 0 10 10 CILLDB 1 3 2 2 2 4 CILLDBSet 2 4 4 mailreader 3 3 4 7 1 1 5 1 parsing 4 6 6 POP3 5 8 10 2 2 2 11 1 CPOP3Dlg 6 4 4 1 4 4 4 CAPP 7 1 1 CMainWin 8 3 5 5 3 6 7 5 CSettingsDlg 9 15 Class Scenario Overlap Sub-feature Equivalence [Egyed ICSE 01]!
  • 94. Variability analysis: Overlap, sub- features, equivalence X: Cannot mine for require & exclude relations Traces of several scenarios (execution of feature) 23/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension scenarios from Table 1 using the Rational PureCoverage tool. By a footprint we mean the classes that were executed while testing a scenario. The numbers in Table 2 indicate how many methods of each class were used. For instance, scenario “A” used ten methods of the class CAboutDlg and three methods of the class CSettingsDlg. Table 2 does not display the actual methods in order to reduce the complex- ity of this example (the footprint graph shown later would otherwise get too big). Nevertheless, by only using classes the generated traces will still be useful, albeit, course- grained. If more fine-grained traces are needed then trace quires only a fairly limited amount of hypothe information; otherwise, the cost of using it wo high. Table 4 and Table 3 show a list of twelve hypothesized. We assume that most traces are a tially correct; however, our approach can pinp traces plus create new ones by matching the de information against the observed trace informat traces, together with the trace observations that matically generated (Table 2) can now be used reasoning. 5 ATOMIZING In order to reason about traces and how the model elements, we need to intertwine scenar elements, their footprints, and hypothesized trac tion. In order to do this, we have devised a footp Figure 3 depicts the complete footprint graph fo scenarios in Table 1. This graph also forms the for the remaining activities of our approach: G and Refining. One property that graph has is that footprints o trace information are split up into as many nodes to explicitly represent all possible overlaps betw ios (overlaps are footprints that any two scenar Table 2. Observeable Scenario Footprints A B C D E F G H CAboutDlg 0 10 10 CILLDB 1 3 2 2 2 4 CILLDBSet 2 4 4 mailreader 3 3 4 7 1 1 5 1 parsing 4 6 6 POP3 5 8 10 2 2 2 11 1 CPOP3Dlg 6 4 4 1 4 4 4 CAPP 7 1 1 CMainWin 8 3 5 5 3 6 7 5 CSettingsDlg 9 15 Class Scenario Overlap Sub-feature Equivalence [Egyed ICSE 01]!
  • 95. 24/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Jaring PhD 05] ⚖!
  • 96. 24/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Jaring PhD 05] ⚖! Code that varies Variables representing variants (vxm vyn) Variables representing variation points (vpx vpy)
  • 97. 24/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension IF !vpx ➜ vpy IF vpx ➜ (vpy,vyn) IF (vpx,vxm) ➜ !vpy IF (vpx,vxm) ➜ (vpy,vyn) Dependencies variation points - variants: [Jaring PhD 05] ⚖! Code that varies Variables representing variants (vxm vyn) Variables representing variation points (vpx vpy)
  • 98. Variability analysis: configuration dependencies 24/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension IF !vpx ➜ vpy IF vpx ➜ (vpy,vyn) IF (vpx,vxm) ➜ !vpy IF (vpx,vxm) ➜ (vpy,vyn) Dependencies variation points - variants: [Jaring PhD 05] ⚖! Code that varies Variables representing variants (vxm vyn) Variables representing variation points (vpx vpy)
  • 99. Variability analysis: configuration dependencies X: Need a specific syntax for the configuration of the products X: Just define when the relations occur. No mining proposed. 24/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension IF !vpx ➜ vpy IF vpx ➜ (vpy,vyn) IF (vpx,vxm) ➜ !vpy IF (vpx,vxm) ➜ (vpy,vyn) Dependencies variation points - variants: [Jaring PhD 05] ⚖! Code that varies Variables representing variants (vxm vyn) Variables representing variation points (vpx vpy)
  • 100. 25/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Czarnecki PLC 08] on start off init on must override destroy off stop off Applet paint [75%] start [59%] destroy [42%] stop [53%] init [97%] Applet destroy encourages init start encourages stop stop encourages start init encourages destroy stop given start [84%] start given stop [97%] paint given destroy [88%] paint given stop [88%] init given start [97%] init given paint [98%] (a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration Figure 2. A PFM of Java applets: specification, mining, and configuration rt from being interpreted as belief measures, prob- s can also be given a frequentist interpretation, in a probability is viewed as the relative frequency of a particular outcome of an experiment in a large of trials. This perspective on probability naturally now included with complete certainty. The other bars show the probabilities of the remaining features. This could of course be visualized differently; for example by updating the most probable defaults in a form, or by prioritizing sev- eral most likely choices at the top of a drop-down list. ⚖!
  • 101. Several products of the domain 25/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Czarnecki PLC 08] on start off init on must override destroy off stop off Applet paint [75%] start [59%] destroy [42%] stop [53%] init [97%] Applet destroy encourages init start encourages stop stop encourages start init encourages destroy stop given start [84%] start given stop [97%] paint given destroy [88%] paint given stop [88%] init given start [97%] init given paint [98%] (a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration Figure 2. A PFM of Java applets: specification, mining, and configuration rt from being interpreted as belief measures, prob- s can also be given a frequentist interpretation, in a probability is viewed as the relative frequency of a particular outcome of an experiment in a large of trials. This perspective on probability naturally now included with complete certainty. The other bars show the probabilities of the remaining features. This could of course be visualized differently; for example by updating the most probable defaults in a form, or by prioritizing sev- eral most likely choices at the top of a drop-down list. ⚖! Mapping of SCEs to feature diagram
  • 102. Several products of the domain 25/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Czarnecki PLC 08] on start off init on must override destroy off stop off Applet paint [75%] start [59%] destroy [42%] stop [53%] init [97%] Applet destroy encourages init start encourages stop stop encourages start init encourages destroy stop given start [84%] start given stop [97%] paint given destroy [88%] paint given stop [88%] init given start [97%] init given paint [98%] (a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration Figure 2. A PFM of Java applets: specification, mining, and configuration rt from being interpreted as belief measures, prob- s can also be given a frequentist interpretation, in a probability is viewed as the relative frequency of a particular outcome of an experiment in a large of trials. This perspective on probability naturally now included with complete certainty. The other bars show the probabilities of the remaining features. This could of course be visualized differently; for example by updating the most probable defaults in a form, or by prioritizing sev- eral most likely choices at the top of a drop-down list. Association rules = belief (frequent interpretation) ⚖! Mapping of SCEs to feature diagram
  • 103. Several products of the domain 25/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Czarnecki PLC 08] on start off init on must override destroy off stop off Applet paint [75%] start [59%] destroy [42%] stop [53%] init [97%] Applet destroy encourages init start encourages stop stop encourages start init encourages destroy stop given start [84%] start given stop [97%] paint given destroy [88%] paint given stop [88%] init given start [97%] init given paint [98%] (a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration Figure 2. A PFM of Java applets: specification, mining, and configuration rt from being interpreted as belief measures, prob- s can also be given a frequentist interpretation, in a probability is viewed as the relative frequency of a particular outcome of an experiment in a large of trials. This perspective on probability naturally now included with complete certainty. The other bars show the probabilities of the remaining features. This could of course be visualized differently; for example by updating the most probable defaults in a form, or by prioritizing sev- eral most likely choices at the top of a drop-down list. p (A|B) = p (AB) / p(A) = (A ∩ B /A∪B) / (A) req = p(A|B) exc = p(!A|B) ⚖! Mapping of SCEs to feature diagram
  • 104. Feature diagram of the domain: mandatory/optional features, exclusive/inclusive variants Several products of the domain 25/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Czarnecki PLC 08] on start off init on must override destroy off stop off Applet paint [75%] start [59%] destroy [42%] stop [53%] init [97%] Applet destroy encourages init start encourages stop stop encourages start init encourages destroy stop given start [84%] start given stop [97%] paint given destroy [88%] paint given stop [88%] init given start [97%] init given paint [98%] (a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration Figure 2. A PFM of Java applets: specification, mining, and configuration rt from being interpreted as belief measures, prob- s can also be given a frequentist interpretation, in a probability is viewed as the relative frequency of a particular outcome of an experiment in a large of trials. This perspective on probability naturally now included with complete certainty. The other bars show the probabilities of the remaining features. This could of course be visualized differently; for example by updating the most probable defaults in a form, or by prioritizing sev- eral most likely choices at the top of a drop-down list. p (A|B) = p (AB) / p(A) = (A ∩ B /A∪B) / (A) req = p(A|B) exc = p(!A|B) ⚖! Mapping of SCEs to feature diagram
  • 105. Feature diagram of the domain: mandatory/optional features, exclusive/inclusive variants X: Results depend on the variety of the products of the domain Several products of the domain 25/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Czarnecki PLC 08] on start off init on must override destroy off stop off Applet paint [75%] start [59%] destroy [42%] stop [53%] init [97%] Applet destroy encourages init start encourages stop stop encourages start init encourages destroy stop given start [84%] start given stop [97%] paint given destroy [88%] paint given stop [88%] init given start [97%] init given paint [98%] (a) A PFM specified by an expert (b) An automatically mined PFM (c) Interactive Configuration Figure 2. A PFM of Java applets: specification, mining, and configuration rt from being interpreted as belief measures, prob- s can also be given a frequentist interpretation, in a probability is viewed as the relative frequency of a particular outcome of an experiment in a large of trials. This perspective on probability naturally now included with complete certainty. The other bars show the probabilities of the remaining features. This could of course be visualized differently; for example by updating the most probable defaults in a form, or by prioritizing sev- eral most likely choices at the top of a drop-down list. p (A|B) = p (AB) / p(A) = (A ∩ B /A∪B) / (A) req = p(A|B) exc = p(!A|B) ⚖! Mapping of SCEs to feature diagram
  • 106. 26/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Parra ECSA 10] ⚖!
  • 107. Several products of the domain 26/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Parra ECSA 10] ⚖!
  • 108. Several products of the domain 26/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Parra ECSA 10] Model A Aspect or Var. feature B C ⚖!
  • 109. Several products of the domain 26/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Parra ECSA 10] Model A Var. points Aspect or Var. feature B C -Pointcuts ⚖!
  • 110. Several products of the domain 26/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Parra ECSA 10] Model A Var. points Aspect or Var. feature B C -Pointcuts-Advices -Variants ⚖!
  • 111. Several products of the domain 26/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Parra ECSA 10] Model A Var. points Aspect or Var. feature B C -Pointcuts-Advices -Variants A reqs B pc (A) ∩ m(B) B exc C pc (B) ∩ pc(C) ⚖!
  • 112. Feature diagram of the domain: mandatory/ optional features, single/multiple variable features Several products of the domain 26/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Parra ECSA 10] Model A Var. points Aspect or Var. feature B C -Pointcuts-Advices -Variants A reqs B pc (A) ∩ m(B) B exc C pc (B) ∩ pc(C) ⚖!
  • 113. Feature diagram of the domain: mandatory/ optional features, single/multiple variable features X:Assumes implementation with aspects. X: Used to detect order or invalid configs. Several products of the domain 26/30 Mining for variability dependencies Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension [Parra ECSA 10] Model A Var. points Aspect or Var. feature B C -Pointcuts-Advices -Variants A reqs B pc (A) ∩ m(B) B exc C pc (B) ∩ pc(C) ⚖!
  • 114. Variability Feature Feature Diagram Mandatory vs. Optional features Feature dependencies Variants Variation points Binding Domain instances Optional vs. Alternative variants Single vs. Multiple features 27/30 Variable features
  • 115. Variant: option available for a variable feature Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension Feature: unit/increment of functionality Mandatory: required in all products Variable: customization required Variation point: placeholder that stores the variant of a variable feature Binding: assigning a variant to a variation point ? 28/30
  • 116. Mining for variation points and variants Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 29/30 [Thummalapenta MSR 08]!
  • 117. Several products using the same framework (i.e. of the same domain) Mining for variation points and variants Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 29/30 [Thummalapenta MSR 08]!
  • 118. Several products using the same framework (i.e. of the same domain) Mining for variation points and variants Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 29/30 otherwise Set type of Ci to TEMPLATE; } 5:Group Ci of the same type into hierarchies based on inheritance; 6:Associate hook hierarchies to template hierarchies; 7:Define dependencies between template hierarchies; 8:Output hook and template hierarchies as hotspot hierarchies; Fig. 5. Algorithm used for detecting hotspots through computed UsageMetrics pr m an cl ho te sh cl cl ba a cl hi cl st Y w de A tw fie if cl de fo us SB IN=instantiations EX=extensions OV=overrides IM=implementations UM=usages (+ above) rank & classify SCEs in the framework based on metrics: [Thummalapenta MSR 08]!
  • 119. How to extend a framework: hotspots/hooks ➜ variation points cold-spots/templates ➜ mandatory part of the variable feature users of hooks ➜ variants Several products using the same framework (i.e. of the same domain) Mining for variation points and variants Car Horsepower Transmission Engine Extras Automatic Manual GasolineElectric Requires Excludes Air Conditioning Cruise Mandatory Optional Exclusive Inclusive Suspension 29/30 otherwise Set type of Ci to TEMPLATE; } 5:Group Ci of the same type into hierarchies based on inheritance; 6:Associate hook hierarchies to template hierarchies; 7:Define dependencies between template hierarchies; 8:Output hook and template hierarchies as hotspot hierarchies; Fig. 5. Algorithm used for detecting hotspots through computed UsageMetrics pr m an cl ho te sh cl cl ba a cl hi cl st Y w de A tw fie if cl de fo us SB IN=instantiations EX=extensions OV=overrides IM=implementations UM=usages (+ above) rank & classify SCEs in the framework based on metrics: [Thummalapenta MSR 08]!