Identification of Variation Points Using Dynamic Analysis
Bas Cornelissen
Introduction
• Product lines
• Several versions for various customers– Each having its own set of features
• Variation points– Configurable features
Introduction
• Identifying variation points in source code– Isolation of code responsible for specific features– Useful in merging product line members
• Research proposal– Dynamic analysis– Comparison of traces generated by two versions– Detection and visualization of variation points
Method
• Code instrumentation– At method level– Aspect-oriented programming
• Execution using similar scenarios– Aimed at invoking one particular feature
Method
• Detection algorithm– Sliding windows– Parameters
• Checksum size• Minimum branch length• Maximum branch length
• Visualization– Dot
Method
• Running example– Pacman– 20 classes, 1000 LOC– Various versions
• Original (reference)• Map extension• Additional game
entities, e.g. holes
Preliminary results
• Original vs. map version
Preliminary results
• Original vs. map version– Slightly different
initialization– One fork…
Preliminary results
• Original vs. map version– Slightly different
initialization– One fork…– …and a quick merge
Preliminary results
• Original vs. hole version
Preliminary results
• Original vs. hole version– Slightly different
initialization: a fork …
Preliminary results
• Original vs. hole version– Slightly different
initialization: a fork … …and a quick merge
Preliminary results
• Original vs. hole version– Slightly different
initialization: a fork … …and a quick merge
– Divergent behavior
→
Conclusions
• Efficient algorithm– Parameterized– Branch lengths have upper bounds
• Meaningful results– Architect gains quick insight into relevant source code
• Creating similar scenarios may be hard in some cases– e.g., deterministic behavior is a must
Future work
• Parameter optimization
• Improved accuracy– Incorporation of stack depths– Incorporation of method arguments
• Better visualization
• Large software systems– Support for other abstraction levels
Discussion points
• How can the parameters be optimized?– Maximum/minimum branch length
• How can we make the results more meaningful?