Loading in 2 Seconds...
Loading in 2 Seconds...
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
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?