Transcript
Page 1: Identification of Variation Points Using Dynamic Analysis

Identification of Variation Points Using Dynamic Analysis

Bas Cornelissen

Page 2: Identification of Variation Points Using Dynamic Analysis

Introduction

• Product lines

• Several versions for various customers– Each having its own set of features

• Variation points– Configurable features

Page 3: Identification of Variation Points Using Dynamic Analysis

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

Page 4: Identification of Variation Points Using Dynamic Analysis

Method

• Code instrumentation– At method level– Aspect-oriented programming

• Execution using similar scenarios– Aimed at invoking one particular feature

Page 5: Identification of Variation Points Using Dynamic Analysis

Method

• Detection algorithm– Sliding windows– Parameters

• Checksum size• Minimum branch length• Maximum branch length

• Visualization– Dot

Page 6: Identification of Variation Points Using Dynamic Analysis

Method

• Running example– Pacman– 20 classes, 1000 LOC– Various versions

• Original (reference)• Map extension• Additional game

entities, e.g. holes

Page 7: Identification of Variation Points Using Dynamic Analysis

Preliminary results

• Original vs. map version

Page 8: Identification of Variation Points Using Dynamic Analysis

Preliminary results

• Original vs. map version– Slightly different

initialization– One fork…

Page 9: Identification of Variation Points Using Dynamic Analysis

Preliminary results

• Original vs. map version– Slightly different

initialization– One fork…– …and a quick merge

Page 10: Identification of Variation Points Using Dynamic Analysis

Preliminary results

• Original vs. hole version

Page 11: Identification of Variation Points Using Dynamic Analysis

Preliminary results

• Original vs. hole version– Slightly different

initialization: a fork …

Page 12: Identification of Variation Points Using Dynamic Analysis

Preliminary results

• Original vs. hole version– Slightly different

initialization: a fork … …and a quick merge

Page 13: Identification of Variation Points Using Dynamic Analysis

Preliminary results

• Original vs. hole version– Slightly different

initialization: a fork … …and a quick merge

– Divergent behavior

Page 14: Identification of Variation Points Using Dynamic Analysis

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

Page 15: Identification of Variation Points Using Dynamic Analysis

Future work

• Parameter optimization

• Improved accuracy– Incorporation of stack depths– Incorporation of method arguments

• Better visualization

• Large software systems– Support for other abstraction levels

Page 16: Identification of Variation Points Using Dynamic Analysis

Discussion points

• How can the parameters be optimized?– Maximum/minimum branch length

• How can we make the results more meaningful?


Top Related