identification of variation points using dynamic analysis

Post on 02-Jan-2016

26 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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?

top related